Commit 1df7399c authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.开发间开优化结果统计功能,创建间开优化效果统计表,生成对应代码;
2.修改15天,10天,3天,1天间开优化功能,修改代码结构;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent a262448d
package pps.core.auth;
/**
* 基础认证Auth
*
* @author ZWT
* @date 2023/01/09
*/
public interface Auth {
/**
* 基础认证Auth
*
* @return {@link String}
*/
String getAuth();
}
\ No newline at end of file
package pps.core.auth;
import org.apache.commons.codec.binary.Base64;
import java.nio.charset.StandardCharsets;
/**
* 用户名密码认证
*
* @author ZWT
* @date 2023/01/09
*/
public class BasicAuth implements Auth {
private String username;
private String password;
public BasicAuth(String username, String password) {
this.username = username;
this.password = password;
}
@Override
public String getAuth() {
String auth = String.format("%s:%s", this.username, this.password);
byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(StandardCharsets.ISO_8859_1));
return "Basic " + new String(encodedAuth);
}
}
\ No newline at end of file
package pps.core.auth;
/**
* Bearer Token 认证
*
* @author ZWT
* @date 2023/01/09
*/
public class BearerAuth implements Auth {
private String token;
public BearerAuth(String token) {
this.token = token;
}
@Override
public String getAuth() {
return "Bearer " + this.token;
}
}
\ No newline at end of file
...@@ -250,8 +250,9 @@ public class EasyExcelUtil { ...@@ -250,8 +250,9 @@ public class EasyExcelUtil {
} }
} }
private static <T> ExcelListener<T> readExcelListener(MultipartFile file, Class<T> clazz, ExcelListener<T> excelListener) throws IOException { private static <T> ExcelListener<T> readExcelListener(MultipartFile file, Class<T> clazz, ExcelListener<T> excelListener) {
ExcelReader excelReader = getReader(file.getInputStream(), file.getOriginalFilename(), clazz, excelListener); try (InputStream inputStream = file.getInputStream()) {
ExcelReader excelReader = getReader(inputStream, file.getOriginalFilename(), clazz, excelListener);
if (ObjectUtil.isNull(excelReader)) { if (ObjectUtil.isNull(excelReader)) {
return excelListener; return excelListener;
} }
...@@ -260,6 +261,9 @@ public class EasyExcelUtil { ...@@ -260,6 +261,9 @@ public class EasyExcelUtil {
excelReader.read(readSheet); excelReader.read(readSheet);
} }
excelReader.finish(); excelReader.finish();
} catch (IOException e) {
throw new RuntimeException(e);
}
return excelListener; return excelListener;
} }
......
package pps.core.common.utils;
/**
* @author lixueyan
* @date 2022/12/22 0022 18:52
*/
import javax.crypto.Cipher;
import java.io.ByteArrayOutputStream;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Arrays;
import java.util.Base64;
public class RSAUtil {
//将Base64编码后的公钥转换成PublicKey对象
public static PublicKey string2PublicKey(String pubStr) throws Exception {
byte[] keyBytes = base642Byte(pubStr);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
return keyFactory.generatePublic(keySpec);
}
//将Base64编码后的私钥转换成PrivateKey对象
public static PrivateKey string2PrivateKey(String priStr) throws Exception {
byte[] keyBytes = base642Byte(priStr);
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
return keyFactory.generatePrivate(keySpec);
}
//Base64编码转字节数组
public static byte[] base642Byte(String base64Key) {
Base64.Decoder decoder = Base64.getDecoder();
return decoder.decode(base64Key);
}
/**
* 解密方法
*
* @param byte2Base64
* @return
*/
public static String RsaDecrypt(String byte2Base64, String privateKeyStr) {
byte[] decryptedData = null;
try {
//将Base64编码后的私钥转换成PrivateKey对象
PrivateKey privateKey = RSAUtil.string2PrivateKey(privateKeyStr);
Cipher cipher = Cipher.getInstance(privateKey.getAlgorithm());
cipher.init(2, privateKey);
byte[] encryptedData = RSAUtil.base642Byte(byte2Base64);
int inputLen = encryptedData.length;
ByteArrayOutputStream out = new ByteArrayOutputStream();
int offSet = 0;
for (int i = 0; inputLen - offSet > 0; offSet = i * 256) {
byte[] cache;
if (inputLen - offSet > 256) {
cache = cipher.doFinal(encryptedData, offSet, 256);
} else {
cache = cipher.doFinal(encryptedData, offSet, inputLen - offSet);
}
out.write(cache, 0, cache.length);
++i;
}
decryptedData = out.toByteArray();
out.close();
} catch (Exception ignored) {
}
return new String(decryptedData);
}
/**
* 分断加密
*
* @param byte2Base642
* @return
*/
public static String rsaEncrypt(String byte2Base642, String publicKeyStr) {
String result = "";
try {
// 将Base64编码后的公钥转换成PublicKey对象
PublicKey publicKey = RSAUtil.string2PublicKey(publicKeyStr);
// 加密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] inputArray = byte2Base642.getBytes();
int inputLength = inputArray.length;
// 最大加密字节数,超出最大字节数需要分组加密
int MAX_ENCRYPT_BLOCK = 117;
// 标识
int offSet = 0;
byte[] resultBytes = {};
byte[] cache;
while (inputLength - offSet > 0) {
if (inputLength - offSet > MAX_ENCRYPT_BLOCK) {
cache = cipher.doFinal(inputArray, offSet, MAX_ENCRYPT_BLOCK);
offSet += MAX_ENCRYPT_BLOCK;
} else {
cache = cipher.doFinal(inputArray, offSet, inputLength - offSet);
offSet = inputLength;
}
resultBytes = Arrays.copyOf(resultBytes, resultBytes.length + cache.length);
System.arraycopy(cache, 0, resultBytes, resultBytes.length - cache.length, cache.length);
}
Base64.Encoder encoder = Base64.getEncoder();
result = encoder.encodeToString(resultBytes);
} catch (Exception ignored) {
}
return result;
}
}
\ No newline at end of file
...@@ -3,6 +3,7 @@ package pps.core.system.service; ...@@ -3,6 +3,7 @@ package pps.core.system.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.DesensitizedUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...@@ -15,7 +16,6 @@ import pps.core.system.entity.*; ...@@ -15,7 +16,6 @@ import pps.core.system.entity.*;
import pps.core.system.error.LoginError; import pps.core.system.error.LoginError;
import pps.core.system.mapper.*; import pps.core.system.mapper.*;
import pps.core.system.service.data.sys_user.*; import pps.core.system.service.data.sys_user.*;
import pps.core.system.utils.UserInfoUtil;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
...@@ -59,9 +59,9 @@ public class SysUserService { ...@@ -59,9 +59,9 @@ public class SysUserService {
PageInfo<SysUserView> pageInfo = new PageInfo<>(list); PageInfo<SysUserView> pageInfo = new PageInfo<>(list);
List<QuerySysUserViewOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QuerySysUserViewOutput.class); List<QuerySysUserViewOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QuerySysUserViewOutput.class);
for (QuerySysUserViewOutput output : outputs) { for (QuerySysUserViewOutput output : outputs) {
output.setPhone(UserInfoUtil.desensitization(output.getPhone())); output.setPhone(DesensitizedUtil.mobilePhone(output.getPhone()));
output.setIdentifyNo(UserInfoUtil.desensitization(output.getIdentifyNo())); output.setIdentifyNo(DesensitizedUtil.idCardNum(output.getIdentifyNo(), 1, 2));
output.setEmail(UserInfoUtil.desensitization(output.getEmail())); output.setEmail(DesensitizedUtil.email(output.getEmail()));
if (ObjectUtil.isNull(output.getStatus())) { if (ObjectUtil.isNull(output.getStatus())) {
output.setStatus(0); output.setStatus(0);
} }
...@@ -94,9 +94,9 @@ public class SysUserService { ...@@ -94,9 +94,9 @@ public class SysUserService {
} }
entity.setCreateTime(new Date()); entity.setCreateTime(new Date());
//加密敏感信息 //加密敏感信息
entity.setPhone(UserInfoUtil.encrypt(entity.getPhone())); entity.setPhone(DesensitizedUtil.mobilePhone(entity.getPhone()));
entity.setIdentifyNo(UserInfoUtil.encrypt(entity.getIdentifyNo())); entity.setIdentifyNo(DesensitizedUtil.idCardNum(entity.getIdentifyNo(), 1, 2));
entity.setEmail(UserInfoUtil.encrypt(entity.getEmail())); entity.setEmail(DesensitizedUtil.email(entity.getEmail()));
mapper.insert(entity); mapper.insert(entity);
//新增用户和组织机构关系表 //新增用户和组织机构关系表
insertSysUserOrganizationRel(context, uuid, input.getOuId(), session); insertSysUserOrganizationRel(context, uuid, input.getOuId(), session);
...@@ -154,17 +154,17 @@ public class SysUserService { ...@@ -154,17 +154,17 @@ public class SysUserService {
} }
//加密敏感信息 //加密敏感信息
if (CharSequenceUtil.isNotBlank(input.getPhone()) && !CharSequenceUtil.contains(input.getPhone(), '*')) { if (CharSequenceUtil.isNotBlank(input.getPhone()) && !CharSequenceUtil.contains(input.getPhone(), '*')) {
entity.setPhone(UserInfoUtil.encrypt(input.getPhone())); entity.setPhone(DesensitizedUtil.mobilePhone(input.getPhone()));
} else { } else {
entity.setPhone(null); entity.setPhone(null);
} }
if (CharSequenceUtil.isNotBlank(input.getIdentifyNo()) && !CharSequenceUtil.contains(input.getIdentifyNo(), '*')) { if (CharSequenceUtil.isNotBlank(input.getIdentifyNo()) && !CharSequenceUtil.contains(input.getIdentifyNo(), '*')) {
entity.setIdentifyNo(UserInfoUtil.encrypt(input.getIdentifyNo())); entity.setIdentifyNo(DesensitizedUtil.idCardNum(input.getIdentifyNo(), 1, 2));
} else { } else {
entity.setIdentifyNo(null); entity.setIdentifyNo(null);
} }
if (CharSequenceUtil.isNotBlank(input.getEmail()) && !CharSequenceUtil.contains(input.getEmail(), '*')) { if (CharSequenceUtil.isNotBlank(input.getEmail()) && !CharSequenceUtil.contains(input.getEmail(), '*')) {
entity.setEmail(UserInfoUtil.encrypt(input.getEmail())); entity.setEmail(DesensitizedUtil.email(input.getEmail()));
} else { } else {
entity.setEmail(null); entity.setEmail(null);
} }
......
package pps.core.system.utils;
import cn.hutool.core.text.CharSequenceUtil;
import pps.core.common.utils.PatternUtil;
import pps.core.common.utils.RSAUtil;
import pps.core.system.config.LoginConfig;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.XServiceContext;
import xstartup.base.util.XEncryptUtils;
/**
* @author lixueyan
* @date 2023/3/8 0008 10:45
*/
@XText("用户信息处理工具类")
public class UserInfoUtil {
//敏感信息rsa加密
public static String encrypt(String str) {
if (CharSequenceUtil.isBlank(str)) {
return str;
}
XContext context = XServiceContext.build(UserInfoUtil.class);
String publicKeyValue = LoginConfig.userRsaPublicKey.findValue(context);
publicKeyValue = XEncryptUtils.decrypt(publicKeyValue);
return RSAUtil.rsaEncrypt(str, publicKeyValue);
}
//敏感信息rsa解密
public static String decrypt(String str) {
if (CharSequenceUtil.isBlank(str)) {
return str;
}
XContext context = XServiceContext.build(UserInfoUtil.class);
try {
String privateKeyValue = LoginConfig.userRsaPrivateKey.findValue(context);
privateKeyValue = XEncryptUtils.decrypt(privateKeyValue);
return RSAUtil.RsaDecrypt(str, privateKeyValue);
} catch (Exception e) {
context.getLogger().error("敏感信息解密失败, 使用原信息");
return str;
}
}
//敏感信息解密并脱敏
public static String desensitization(String str) {
return PatternUtil.desensitization(decrypt(str));
}
}
...@@ -24,13 +24,4 @@ public interface IBaseWeatherCloudService { ...@@ -24,13 +24,4 @@ public interface IBaseWeatherCloudService {
*/ */
@XText("天气数据接收Cloud模块--天气数据处理") @XText("天气数据接收Cloud模块--天气数据处理")
XServiceResult weatherDataProcess(XContext context, String oilFieldName); XServiceResult weatherDataProcess(XContext context, String oilFieldName);
/**
* 天气数据接收Cloud模块--天气Api数据处理
*
* @param context 上下文
* @return {@link XServiceResult}
*/
@XText("天气数据接收Cloud模块--天气Api数据处理")
XServiceResult weatherApiDataProcess(XContext context);
} }
package pps.cloud.base.service;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
/**
* 第三方风力发电数据
*
* @author ZWT
* @date 2024/09/03 16:30
*/
@XService
@XText("第三方风力发电数据Cloud模块")
public interface IThirdWindPowerGenerationCloudService {
/**
* 第三方风力发电数据Cloud模块--第三方风力发电数据定时任务
*
* @param context 上下文
* @return {@link XServiceResult }
*/
@XText("第三方风力发电数据Cloud模块--第三方风力发电数据定时任务")
XServiceResult thirdWindPowerGenerationJob(XContext context);
}
package pps.cloud.base.service;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
/**
* 风资源训练集数据Cloud模块
*
* @author ZWT
* @date 2024/08/30 14:03
*/
@XService
@XText("风资源训练集数据Cloud模块")
public interface IWindPredictionHistoryCloudService {
/**
* 风资源训练集数据Cloud模块--风资源训练集定时任务
*
* @param context 上下文
* @return {@link XServiceResult }
*/
@XText("风资源训练集数据Cloud模块--风资源训练集定时任务")
XServiceResult windPredictionHistoryJob(XContext context);
}
...@@ -51,6 +51,7 @@ import xstartup.helper.XTransactionHelper; ...@@ -51,6 +51,7 @@ import xstartup.helper.XTransactionHelper;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -265,7 +266,7 @@ public class BasePhotovoltaicPlantService { ...@@ -265,7 +266,7 @@ public class BasePhotovoltaicPlantService {
SysOrganizationView record = new SysOrganizationView(); SysOrganizationView record = new SysOrganizationView();
XCopyUtils.copyObject(input, record); XCopyUtils.copyObject(input, record);
record.setIsDeleted(BusinessConstant.ONE); record.setIsDeleted(BusinessConstant.ONE);
List<SysOrganizationView> viewList = null; List<SysOrganizationView> viewList = new ArrayList<>(16);
String ouId = "00000000-0000-0000-0000-000000000000"; String ouId = "00000000-0000-0000-0000-000000000000";
String ouName = input.getOuName(); String ouName = input.getOuName();
if (CharSequenceUtil.isBlank(ouName)) { if (CharSequenceUtil.isBlank(ouName)) {
...@@ -288,6 +289,7 @@ public class BasePhotovoltaicPlantService { ...@@ -288,6 +289,7 @@ public class BasePhotovoltaicPlantService {
} }
} }
if (CollUtil.isEmpty(viewList)) { if (CollUtil.isEmpty(viewList)) {
viewList = new ArrayList<>(2);
BasePhotovoltaicPlantMapper plantMapper = context.getBean(BasePhotovoltaicPlantMapper.class); BasePhotovoltaicPlantMapper plantMapper = context.getBean(BasePhotovoltaicPlantMapper.class);
List<BasePhotovoltaicPlantEnt> plantList = plantMapper.selectList(new LambdaQueryWrapper<BasePhotovoltaicPlantEnt>() List<BasePhotovoltaicPlantEnt> plantList = plantMapper.selectList(new LambdaQueryWrapper<BasePhotovoltaicPlantEnt>()
.eq(CharSequenceUtil.isBlank(ouName), BasePhotovoltaicPlantEnt::getOuId, ouId) .eq(CharSequenceUtil.isBlank(ouName), BasePhotovoltaicPlantEnt::getOuId, ouId)
......
package pps.core.base.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import pps.cloud.base.service.IThirdWindPowerGenerationCloudService;
import pps.core.base.entity.ThirdWindPowerGenerationUpdateView;
import pps.core.base.entity.ThirdWindPowerGenerationView;
import pps.core.base.mapper.ThirdWindPowerGenerationUpdateViewMapper;
import pps.core.base.mapper.ThirdWindPowerGenerationViewMapper;
import pps.core.base.utils.ServiceUtil;
import pps.core.common.utils.BaseUtils;
import xstartup.annotation.XService;
import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils;
import xstartup.data.XServiceResult;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 第三方风力发电数据
*
* @author ZWT
* @date 2024/09/03 16:34
*/
@XService
public class ThirdWindPowerGenerationCloudServiceImpl implements IThirdWindPowerGenerationCloudService {
/**
* 第三方风力发电数据定时任务
* todo 模拟数据生成
*
* @param context 上下文
* @return {@link XServiceResult }
*/
@Override
public XServiceResult thirdWindPowerGenerationJob(XContext context) {
DateTime endTime = DateUtil.date();
DateTime startTime = DateUtil.offsetMinute(endTime, -30);
ThirdWindPowerGenerationViewMapper viewMapper = context.getBean(ThirdWindPowerGenerationViewMapper.class);
List<ThirdWindPowerGenerationView> list = viewMapper.generateSimulatedData(ThirdWindPowerGenerationView.builder()
.startTime(startTime)
.endTime(endTime)
.build());
if (CollUtil.isNotEmpty(list)) {
List<ThirdWindPowerGenerationView> batchList = new ArrayList<>(list.size() * 2);
List<ThirdWindPowerGenerationUpdateView> batchUpdateList = new ArrayList<>(list.size());
//查当前环境
String systemSource = ServiceUtil.getOilFieldCode(context);
ThirdWindPowerGenerationView copy;
for (ThirdWindPowerGenerationView view : list) {
view.setSystemSource(systemSource);
view.setInputTime(endTime);
copy = this.newThirdWindPowerGenerationView(view);
batchList.add(copy);
batchList.add(view);
//每日最新数据
batchUpdateList.add(XCopyUtils.copyNewObject(view, ThirdWindPowerGenerationUpdateView.class));
}
//批量新增
if (batchList.size() > BaseUtils.BATCH_SIZE) {
List<List<ThirdWindPowerGenerationView>> subList = BaseUtils.getSubList(batchList);
subList.forEach(viewMapper::batchInsert);
} else {
viewMapper.batchInsert(batchList);
}
//生成每日最新数据
ThirdWindPowerGenerationUpdateViewMapper mapper = context.getBean(ThirdWindPowerGenerationUpdateViewMapper.class);
mapper.deleteBatch(list.stream()
.map(ThirdWindPowerGenerationView::getStationId)
.collect(Collectors.toList()),
DateUtil.beginOfDay(endTime), DateUtil.endOfDay(endTime));
//批量新增
if (batchUpdateList.size() > BaseUtils.BATCH_SIZE) {
List<List<ThirdWindPowerGenerationUpdateView>> subList = BaseUtils.getSubList(batchUpdateList);
subList.forEach(mapper::batchInsert);
} else {
mapper.batchInsert(batchUpdateList);
}
}
return XServiceResult.OK;
}
/*--------------------------------- private ---------------------------------*/
/**
* 第三代风力发电新观点
*
* @param view 看法
* @return {@link ThirdWindPowerGenerationView }
*/
private ThirdWindPowerGenerationView newThirdWindPowerGenerationView(ThirdWindPowerGenerationView view) {
return ThirdWindPowerGenerationView.builder()
.stationName(view.getStationName())
.stationId(view.getStationId())
.collectTime(DateUtil.offsetMinute(view.getCollectTime(), -15))
.actualWindSpeed(view.getActualWindSpeed())
.actualPower(view.getActualPower())
.actualGeneration(view.getActualGeneration())
.actualWindDirection(view.getActualWindDirection())
.inputTime(view.getInputTime())
.systemSource(view.getSystemSource())
.build();
}
}
\ 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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.cloud.base.service.IWindPredictionHistoryCloudService;
import pps.core.base.entity.ThirdWindPowerGenerationEnt;
import pps.core.base.entity.WindPredictionFutureEnt;
import pps.core.base.entity.WindPredictionHistoryView;
import pps.core.base.mapper.ThirdWindPowerGenerationMapper;
import pps.core.base.mapper.WindPredictionFutureMapper;
import pps.core.base.mapper.WindPredictionHistoryViewMapper;
import pps.core.base.utils.ServiceUtil;
import pps.core.common.utils.BaseUtils;
import xstartup.annotation.XService;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
import java.math.BigDecimal;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 风资源训练集数据Cloud模块
*
* @author ZWT
* @date 2024/08/30 14:07
*/
@XService
public class WindPredictionHistoryCloudServiceImpl implements IWindPredictionHistoryCloudService {
/**
* 风资源训练集定时任务
* wind_prediction_history的 actual_power存实际功率
* wind_prediction_future的 actual_power为预测功率
*
* @param context 上下文
* @return {@link XServiceResult }
*/
@Override
public XServiceResult windPredictionHistoryJob(XContext context) {
DateTime startTime = DateUtil.beginOfDay(DateUtil.yesterday());
DateTime endTime = DateUtil.endOfDay(startTime);
//取日期范围内已预测数据
WindPredictionFutureMapper mapper = context.getBean(WindPredictionFutureMapper.class);
List<WindPredictionFutureEnt> list = mapper.selectList(new QueryWrapper<WindPredictionFutureEnt>()
.select("station_id",
"data_time",
"wind_direction",
"wind_speed",
"air_temperature",
"humidity",
"pressure",
"actual_wind_speed",
"actual_power AS predicted_power")
.lambda()
.between(WindPredictionFutureEnt::getDataTime, startTime, endTime)
);
if (CollUtil.isNotEmpty(list)) {
//查实际发电数据
ThirdWindPowerGenerationMapper generationMapper = context.getBean(ThirdWindPowerGenerationMapper.class);
List<ThirdWindPowerGenerationEnt> generationList = generationMapper.selectList(new QueryWrapper<ThirdWindPowerGenerationEnt>()
.select("station_id", "collect_time", "MAX( actual_power ) AS actual_power",
"MAX( actual_generation ) AS actual_generation", "MAX( actual_wind_speed ) AS actual_wind_speed",
"MAX( actual_wind_direction ) AS actual_wind_direction")
.lambda()
.between(ThirdWindPowerGenerationEnt::getCollectTime, startTime, endTime)
.eq(ThirdWindPowerGenerationEnt::getSystemSource, ServiceUtil.getOilFieldCode(context))
.groupBy(ThirdWindPowerGenerationEnt::getStationId, ThirdWindPowerGenerationEnt::getCollectTime)
);
Map<String, Map<Date, ThirdWindPowerGenerationEnt>> collect;
if (CollUtil.isEmpty(generationList)) {
collect = Collections.emptyMap();
} else {
collect = generationList.stream()
.collect(Collectors.groupingBy(ThirdWindPowerGenerationEnt::getStationId, Collectors.toMap(ThirdWindPowerGenerationEnt::getCollectTime, Function.identity())));
}
//数据处理
List<WindPredictionHistoryView> historyList = this.dataProcess(list, collect);
//按时间范围删除数据
WindPredictionHistoryViewMapper viewMapper = context.getBean(WindPredictionHistoryViewMapper.class);
viewMapper.deleteByTimeRange(startTime, endTime);
if (historyList.size() > BaseUtils.BATCH_SIZE) {
List<List<WindPredictionHistoryView>> subList = BaseUtils.getSubList(historyList);
subList.forEach(viewMapper::batchInsert);
} else {
viewMapper.batchInsert(historyList);
}
}
return XServiceResult.OK;
}
/*------------------------- private -------------------------*/
/**
* 数据处理
* todo 模拟数据
*
* @param list 列表
* @param collect 收集
* @return {@link List }<{@link WindPredictionHistoryView }>
*/
private List<WindPredictionHistoryView> dataProcess(List<WindPredictionFutureEnt> list, Map<String, Map<Date, ThirdWindPowerGenerationEnt>> collect) {
List<WindPredictionHistoryView> historyList = new ArrayList<>(list.size());
Map<Date, ThirdWindPowerGenerationEnt> map;
ThirdWindPowerGenerationEnt ent;
for (WindPredictionFutureEnt future : list) {
WindPredictionHistoryView view = new WindPredictionHistoryView();
view.setStationId(future.getStationId());
view.setDataTime(future.getDataTime());
view.setWindDirection(future.getWindDirection());
view.setWindSpeed(future.getWindSpeed());
view.setAirTemperature(future.getAirTemperature());
view.setHumidity(future.getHumidity());
view.setPressure(future.getPressure());
view.setPredictedPower(future.getPredictedPower());
//匹配真实数据
boolean flag = true;
if (collect.containsKey(future.getStationId())) {
map = collect.get(future.getStationId());
if (map.containsKey(future.getDataTime())) {
flag = false;
ent = map.get(future.getDataTime());
view.setActualPower(ent.getActualPower());
view.setActualWindSpeed(ent.getActualWindSpeed());
view.setActualWindDirection(ent.getAccurateWindDirection());
}
}
if (flag) {
view.setActualPower(BigDecimal.ZERO);
view.setActualWindSpeed(BigDecimal.ZERO);
view.setActualWindDirection(BigDecimal.ZERO);
}
historyList.add(view);
}
return historyList;
}
}
\ No newline at end of file
...@@ -126,5 +126,5 @@ public class TaskConstant { ...@@ -126,5 +126,5 @@ public class TaskConstant {
/** /**
* 任务锁定键 * 任务锁定键
*/ */
public static final String TASK_LOCK_KEY = "pps.task_lock_key."; public static final String TASK_LOCK_FLAG = "pps.task_lock_key.";
} }
\ No newline at end of file
...@@ -29,10 +29,10 @@ public class DailyElectricityTrendJob { ...@@ -29,10 +29,10 @@ public class DailyElectricityTrendJob {
*/ */
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ DailyElectricityTrendJob start:{}", DateUtil.date()); xContext.getLogger().info("------ DailyElectricityTrendJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "DailyElectricityTrendJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "DailyElectricityTrendJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
IDailyElectricityTrendCloudService service = xContext.getBean(IDailyElectricityTrendCloudService.class); IDailyElectricityTrendCloudService service = xContext.getBean(IDailyElectricityTrendCloudService.class);
XServiceResult result = service.dailyElectricityTrendJob(xContext); XServiceResult result = service.dailyElectricityTrendJob(xContext);
...@@ -41,7 +41,7 @@ public class DailyElectricityTrendJob { ...@@ -41,7 +41,7 @@ public class DailyElectricityTrendJob {
xContext.getLogger().error("------ DailyElectricityTrendJob Exception: ", e); xContext.getLogger().error("------ DailyElectricityTrendJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ DailyElectricityTrendJob end:{}", DateUtil.date()); xContext.getLogger().info("------ DailyElectricityTrendJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
...@@ -29,10 +29,10 @@ public class EnergyConsumptionAnalysisJob { ...@@ -29,10 +29,10 @@ public class EnergyConsumptionAnalysisJob {
*/ */
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ EnergyConsumptionAnalysisJob start:{}", DateUtil.date()); xContext.getLogger().info("------ EnergyConsumptionAnalysisJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "EnergyConsumptionAnalysisJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "EnergyConsumptionAnalysisJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
IThirdDataAccessCloudService service = xContext.getBean(IThirdDataAccessCloudService.class); IThirdDataAccessCloudService service = xContext.getBean(IThirdDataAccessCloudService.class);
XServiceResult result = service.energyConsumptionAnalysisJob(xContext); XServiceResult result = service.energyConsumptionAnalysisJob(xContext);
...@@ -41,7 +41,7 @@ public class EnergyConsumptionAnalysisJob { ...@@ -41,7 +41,7 @@ public class EnergyConsumptionAnalysisJob {
xContext.getLogger().error("------ EnergyConsumptionAnalysisJob Exception: ", e); xContext.getLogger().error("------ EnergyConsumptionAnalysisJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ EnergyConsumptionAnalysisJob end:{}", DateUtil.date()); xContext.getLogger().info("------ EnergyConsumptionAnalysisJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
...@@ -30,10 +30,10 @@ public class PhotovoltaicTrainJob { ...@@ -30,10 +30,10 @@ public class PhotovoltaicTrainJob {
*/ */
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ PhotovoltaicTrainJob start:{}", DateUtil.date()); xContext.getLogger().info("------ PhotovoltaicTrainJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "PhotovoltaicTrainJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "PhotovoltaicTrainJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
XThreadHelper.async(() -> { XThreadHelper.async(() -> {
try { try {
...@@ -46,7 +46,7 @@ public class PhotovoltaicTrainJob { ...@@ -46,7 +46,7 @@ public class PhotovoltaicTrainJob {
xContext.getLogger().error("------ PhotovoltaicTrainJob Exception: ", e); xContext.getLogger().error("------ PhotovoltaicTrainJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ PhotovoltaicTrainJob end:{}", DateUtil.date()); xContext.getLogger().info("------ PhotovoltaicTrainJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
//package pps.core.task.job;
//
//import cn.hutool.core.date.DateUtil;
//import cn.hutool.core.util.ObjectUtil;
//import pps.cloud.prediction.service.PlantPredictedPowerLongTermDataCloudService;
//import pps.core.common.cache.TaskLockCache;
//import pps.core.task.constant.TaskConstant;
//import pps.core.task.utils.ServiceUtil;
//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;
//
//@XText("长期预测数据,每天更新一次")
//@XService
//public class PlantPredictedPowerLongTermDataJob implements XJob {
// @XCronTrigger(value = "0 45 1 * * ?")
// @Override
// public XServiceResult execute(XContext xContext) {
// xContext.getLogger().info("------ PlantPredictedPowerLongTermDataJob start:{}", DateUtil.date());
// String key = TaskConstant.TASK_LOCK_KEY + "PlantPredictedPowerLongTermDataJob";
// TaskLockCache exist = TaskLockCache.exist(xContext, key);
// if (ObjectUtil.isNull(exist)) {
// ServiceUtil.setCache(xContext, key);
// try {
// PlantPredictedPowerLongTermDataCloudService cloudService = xContext.getBean(PlantPredictedPowerLongTermDataCloudService.class);
// XServiceResult result = cloudService.runPlantPredictedPowerLongTermData(xContext);
// result.throwIfFail();
// } catch (Exception e) {
// xContext.getLogger().error("------ PlantPredictedPowerLongTermDataJob Exception: ", e);
// } finally {
// xContext.getLogger().info("------ PlantPredictedPowerLongTermDataJob end:{}", DateUtil.date());
// TaskLockCache.delete(xContext, key);
// }
// }
// return XServiceResult.OK;
// }
//}
...@@ -33,10 +33,10 @@ public class SpaceCalibrationJob implements XJob { ...@@ -33,10 +33,10 @@ public class SpaceCalibrationJob implements XJob {
@Override @Override
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ SpaceCalibrationJob start:{}", DateUtil.date()); xContext.getLogger().info("------ SpaceCalibrationJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "SpaceCalibrationJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "SpaceCalibrationJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
ISpaceCalibrationCloudService service = xContext.getBean(ISpaceCalibrationCloudService.class); ISpaceCalibrationCloudService service = xContext.getBean(ISpaceCalibrationCloudService.class);
XServiceResult result = service.calibrateJob(xContext); XServiceResult result = service.calibrateJob(xContext);
...@@ -45,7 +45,7 @@ public class SpaceCalibrationJob implements XJob { ...@@ -45,7 +45,7 @@ public class SpaceCalibrationJob implements XJob {
xContext.getLogger().error("------ SpaceCalibrationJob Exception: ", e); xContext.getLogger().error("------ SpaceCalibrationJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ SpaceCalibrationJob end:{}", DateUtil.date()); xContext.getLogger().info("------ SpaceCalibrationJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
...@@ -33,10 +33,10 @@ public class SpaceOptimizeLongJob implements XJob { ...@@ -33,10 +33,10 @@ public class SpaceOptimizeLongJob implements XJob {
@Override @Override
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ SpaceOptimizeLongJob start:{}", DateUtil.date()); xContext.getLogger().info("------ SpaceOptimizeLongJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "SpaceOptimizeLongJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "SpaceOptimizeLongJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
ISpaceOptimizeLongCloudService service = xContext.getBean(ISpaceOptimizeLongCloudService.class); ISpaceOptimizeLongCloudService service = xContext.getBean(ISpaceOptimizeLongCloudService.class);
XServiceResult result = service.optimizeLongJob(xContext); XServiceResult result = service.optimizeLongJob(xContext);
...@@ -45,7 +45,7 @@ public class SpaceOptimizeLongJob implements XJob { ...@@ -45,7 +45,7 @@ public class SpaceOptimizeLongJob implements XJob {
xContext.getLogger().error("------ SpaceOptimizeLongJob Exception: ", e); xContext.getLogger().error("------ SpaceOptimizeLongJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ SpaceOptimizeLongJob end:{}", DateUtil.date()); xContext.getLogger().info("------ SpaceOptimizeLongJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
...@@ -33,10 +33,10 @@ public class SpaceOptimizeMidJob implements XJob { ...@@ -33,10 +33,10 @@ public class SpaceOptimizeMidJob implements XJob {
@Override @Override
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ SpaceOptimizeMidJob start:{}", DateUtil.date()); xContext.getLogger().info("------ SpaceOptimizeMidJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "SpaceOptimizeMidJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "SpaceOptimizeMidJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
ISpaceOptimizeMidCloudService service = xContext.getBean(ISpaceOptimizeMidCloudService.class); ISpaceOptimizeMidCloudService service = xContext.getBean(ISpaceOptimizeMidCloudService.class);
XServiceResult result = service.optimizeMidJob(xContext); XServiceResult result = service.optimizeMidJob(xContext);
...@@ -45,7 +45,7 @@ public class SpaceOptimizeMidJob implements XJob { ...@@ -45,7 +45,7 @@ public class SpaceOptimizeMidJob implements XJob {
xContext.getLogger().error("------ SpaceOptimizeMidJob Exception: ", e); xContext.getLogger().error("------ SpaceOptimizeMidJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ SpaceOptimizeMidJob end:{}", DateUtil.date()); xContext.getLogger().info("------ SpaceOptimizeMidJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
...@@ -33,10 +33,10 @@ public class SpaceOptimizeShortJob implements XJob { ...@@ -33,10 +33,10 @@ public class SpaceOptimizeShortJob implements XJob {
@Override @Override
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ SpaceOptimizeShortJob start:{}", DateUtil.date()); xContext.getLogger().info("------ SpaceOptimizeShortJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "SpaceOptimizeShortJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "SpaceOptimizeShortJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
ISpaceOptimizeShortCloudService service = xContext.getBean(ISpaceOptimizeShortCloudService.class); ISpaceOptimizeShortCloudService service = xContext.getBean(ISpaceOptimizeShortCloudService.class);
XServiceResult result = service.optimizeShortJob(xContext); XServiceResult result = service.optimizeShortJob(xContext);
...@@ -45,7 +45,7 @@ public class SpaceOptimizeShortJob implements XJob { ...@@ -45,7 +45,7 @@ public class SpaceOptimizeShortJob implements XJob {
xContext.getLogger().error("------ SpaceOptimizeShortJob Exception: ", e); xContext.getLogger().error("------ SpaceOptimizeShortJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ SpaceOptimizeShortJob end:{}", DateUtil.date()); xContext.getLogger().info("------ SpaceOptimizeShortJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
...@@ -33,10 +33,10 @@ public class SpaceOptimizeUltraJob implements XJob { ...@@ -33,10 +33,10 @@ public class SpaceOptimizeUltraJob implements XJob {
@Override @Override
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ SpaceOptimizeUltraJob start:{}", DateUtil.date()); xContext.getLogger().info("------ SpaceOptimizeUltraJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "SpaceOptimizeUltraJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "SpaceOptimizeUltraJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
ISpaceOptimizeUltraCloudService service = xContext.getBean(ISpaceOptimizeUltraCloudService.class); ISpaceOptimizeUltraCloudService service = xContext.getBean(ISpaceOptimizeUltraCloudService.class);
XServiceResult result = service.optimizeUltraJob(xContext); XServiceResult result = service.optimizeUltraJob(xContext);
...@@ -45,7 +45,7 @@ public class SpaceOptimizeUltraJob implements XJob { ...@@ -45,7 +45,7 @@ public class SpaceOptimizeUltraJob implements XJob {
xContext.getLogger().error("------ SpaceOptimizeUltraJob Exception: ", e); xContext.getLogger().error("------ SpaceOptimizeUltraJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ SpaceOptimizeUltraJob end:{}", DateUtil.date()); xContext.getLogger().info("------ SpaceOptimizeUltraJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
...@@ -27,10 +27,10 @@ public class StationDailyProductionSituationJob { ...@@ -27,10 +27,10 @@ public class StationDailyProductionSituationJob {
*/ */
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ StationDailyProductionSituationJob start:{}", DateUtil.date()); xContext.getLogger().info("------ StationDailyProductionSituationJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "StationDailyProductionSituationJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "StationDailyProductionSituationJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
IStationDailyCloudService service = xContext.getBean(IStationDailyCloudService.class); IStationDailyCloudService service = xContext.getBean(IStationDailyCloudService.class);
XServiceResult result = service.stationDailyJob(xContext); XServiceResult result = service.stationDailyJob(xContext);
...@@ -39,7 +39,7 @@ public class StationDailyProductionSituationJob { ...@@ -39,7 +39,7 @@ public class StationDailyProductionSituationJob {
xContext.getLogger().error("------ StationDailyProductionSituationJob Exception: ", e); xContext.getLogger().error("------ StationDailyProductionSituationJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ StationDailyProductionSituationJob end:{}", DateUtil.date()); xContext.getLogger().info("------ StationDailyProductionSituationJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
...@@ -28,10 +28,10 @@ public class ThirdActivePowerJob { ...@@ -28,10 +28,10 @@ public class ThirdActivePowerJob {
*/ */
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ ThirdActivePowerJob start:{}", DateUtil.date()); xContext.getLogger().info("------ ThirdActivePowerJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "ThirdActivePowerJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "ThirdActivePowerJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
IThirdDataAccessCloudService service = xContext.getBean(IThirdDataAccessCloudService.class); IThirdDataAccessCloudService service = xContext.getBean(IThirdDataAccessCloudService.class);
XServiceResult result = service.thirdActivePowerJob(xContext); XServiceResult result = service.thirdActivePowerJob(xContext);
...@@ -40,7 +40,7 @@ public class ThirdActivePowerJob { ...@@ -40,7 +40,7 @@ public class ThirdActivePowerJob {
xContext.getLogger().error("------ ThirdActivePowerJob Exception: ", e); xContext.getLogger().error("------ ThirdActivePowerJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ ThirdActivePowerJob end:{}", DateUtil.date()); xContext.getLogger().info("------ ThirdActivePowerJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
...@@ -28,10 +28,10 @@ public class ThirdCurrentWellConditionJob { ...@@ -28,10 +28,10 @@ public class ThirdCurrentWellConditionJob {
*/ */
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ ThirdCurrentWellConditionJob start:{}", DateUtil.date()); xContext.getLogger().info("------ ThirdCurrentWellConditionJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "ThirdCurrentWellConditionJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "ThirdCurrentWellConditionJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
IThirdDataAccessCloudService service = xContext.getBean(IThirdDataAccessCloudService.class); IThirdDataAccessCloudService service = xContext.getBean(IThirdDataAccessCloudService.class);
XServiceResult result = service.thirdCurrentWellConditionJob(xContext); XServiceResult result = service.thirdCurrentWellConditionJob(xContext);
...@@ -40,7 +40,7 @@ public class ThirdCurrentWellConditionJob { ...@@ -40,7 +40,7 @@ public class ThirdCurrentWellConditionJob {
xContext.getLogger().error("------ ThirdCurrentWellConditionJob Exception: ", e); xContext.getLogger().error("------ ThirdCurrentWellConditionJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ ThirdCurrentWellConditionJob end:{}", DateUtil.date()); xContext.getLogger().info("------ ThirdCurrentWellConditionJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
...@@ -28,10 +28,10 @@ public class ThirdDailyAccumulationJob { ...@@ -28,10 +28,10 @@ public class ThirdDailyAccumulationJob {
*/ */
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ ThirdDailyAccumulationJob start:{}", DateUtil.date()); xContext.getLogger().info("------ ThirdDailyAccumulationJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "ThirdDailyAccumulationJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "ThirdDailyAccumulationJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
IThirdDataAccessCloudService service = xContext.getBean(IThirdDataAccessCloudService.class); IThirdDataAccessCloudService service = xContext.getBean(IThirdDataAccessCloudService.class);
XServiceResult result = service.thirdDailyAccumulationJob(xContext); XServiceResult result = service.thirdDailyAccumulationJob(xContext);
...@@ -40,7 +40,7 @@ public class ThirdDailyAccumulationJob { ...@@ -40,7 +40,7 @@ public class ThirdDailyAccumulationJob {
xContext.getLogger().error("------ ThirdDailyAccumulationJob Exception: ", e); xContext.getLogger().error("------ ThirdDailyAccumulationJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ ThirdDailyAccumulationJob end:{}", DateUtil.date()); xContext.getLogger().info("------ ThirdDailyAccumulationJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
...@@ -28,10 +28,10 @@ public class ThirdPhotovoltaicPowerJob { ...@@ -28,10 +28,10 @@ public class ThirdPhotovoltaicPowerJob {
*/ */
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ ThirdPhotovoltaicPowerJob start:{}", DateUtil.date()); xContext.getLogger().info("------ ThirdPhotovoltaicPowerJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "ThirdPhotovoltaicPowerJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "ThirdPhotovoltaicPowerJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
IThirdDataAccessCloudService service = xContext.getBean(IThirdDataAccessCloudService.class); IThirdDataAccessCloudService service = xContext.getBean(IThirdDataAccessCloudService.class);
XServiceResult result = service.thirdPhotovoltaicPowerJob(xContext); XServiceResult result = service.thirdPhotovoltaicPowerJob(xContext);
...@@ -40,7 +40,7 @@ public class ThirdPhotovoltaicPowerJob { ...@@ -40,7 +40,7 @@ public class ThirdPhotovoltaicPowerJob {
xContext.getLogger().error("------ ThirdPhotovoltaicPowerJob Exception: ", e); xContext.getLogger().error("------ ThirdPhotovoltaicPowerJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ ThirdPhotovoltaicPowerJob end:{}", DateUtil.date()); xContext.getLogger().info("------ ThirdPhotovoltaicPowerJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
...@@ -28,10 +28,10 @@ public class ThirdWellAvgActivePowerJob { ...@@ -28,10 +28,10 @@ public class ThirdWellAvgActivePowerJob {
*/ */
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ ThirdWellAvgActivePowerJob start:{}", DateUtil.date()); xContext.getLogger().info("------ ThirdWellAvgActivePowerJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "ThirdWellAvgActivePowerJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "ThirdWellAvgActivePowerJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
IThirdDataAccessCloudService service = xContext.getBean(IThirdDataAccessCloudService.class); IThirdDataAccessCloudService service = xContext.getBean(IThirdDataAccessCloudService.class);
XServiceResult result = service.thirdWellAvgActivePowerJob(xContext); XServiceResult result = service.thirdWellAvgActivePowerJob(xContext);
...@@ -40,7 +40,7 @@ public class ThirdWellAvgActivePowerJob { ...@@ -40,7 +40,7 @@ public class ThirdWellAvgActivePowerJob {
xContext.getLogger().error("------ ThirdWellAvgActivePowerJob Exception: ", e); xContext.getLogger().error("------ ThirdWellAvgActivePowerJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ ThirdWellAvgActivePowerJob end:{}", DateUtil.date()); xContext.getLogger().info("------ ThirdWellAvgActivePowerJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
...@@ -2,7 +2,6 @@ package pps.core.task.job; ...@@ -2,7 +2,6 @@ package pps.core.task.job;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import pps.cloud.base.service.IThirdWindPowerGenerationCloudService;
import pps.core.common.cache.TaskLockCache; import pps.core.common.cache.TaskLockCache;
import pps.core.task.constant.TaskConstant; import pps.core.task.constant.TaskConstant;
import pps.core.task.utils.ServiceUtil; import pps.core.task.utils.ServiceUtil;
...@@ -30,10 +29,10 @@ public class ThirdWindPowerGenerationJob { ...@@ -30,10 +29,10 @@ public class ThirdWindPowerGenerationJob {
*/ */
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ ThirdWindPowerGenerationJob start:{}", DateUtil.date()); xContext.getLogger().info("------ ThirdWindPowerGenerationJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "ThirdWindPowerGenerationJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "ThirdWindPowerGenerationJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
IThirdWindPowerGenerationCloudService service = xContext.getBean(IThirdWindPowerGenerationCloudService.class); IThirdWindPowerGenerationCloudService service = xContext.getBean(IThirdWindPowerGenerationCloudService.class);
XServiceResult result = service.thirdWindPowerGenerationJob(xContext); XServiceResult result = service.thirdWindPowerGenerationJob(xContext);
...@@ -42,7 +41,7 @@ public class ThirdWindPowerGenerationJob { ...@@ -42,7 +41,7 @@ public class ThirdWindPowerGenerationJob {
xContext.getLogger().error("------ ThirdWindPowerGenerationJob Exception: ", e); xContext.getLogger().error("------ ThirdWindPowerGenerationJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ ThirdWindPowerGenerationJob end:{}", DateUtil.date()); xContext.getLogger().info("------ ThirdWindPowerGenerationJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
package pps.core.task.job;
import cn.hutool.core.util.ObjectUtil;
import pps.cloud.base.service.IBaseWeatherCloudService;
import pps.core.common.cache.TaskLockCache;
import pps.core.task.constant.TaskConstant;
import pps.core.task.utils.ServiceUtil;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
/**
* 天气API数据邮件接收定时任务
*
* @author ZWT
* @date 2024/04/22 17:24
*/
@XText("天气API数据邮件接收定时任务")
public class WeatherApiReceiveJob {
/**
* 早/晚九点十五分执行 0 15 9/12 * * ?
*
* @param xContext x上下文
* @return {@link XServiceResult}
*/
public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ WeatherApiReceiveJob start:{}", System.currentTimeMillis());
String key = TaskConstant.TASK_LOCK_KEY + "WeatherApiReceiveJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key);
if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key);
try {
IBaseWeatherCloudService service = xContext.getBean(IBaseWeatherCloudService.class);
XServiceResult result = service.weatherApiDataProcess(xContext);
result.throwIfFail();
} catch (Exception e) {
xContext.getLogger().error("------ WeatherApiReceiveJob Exception: ", e);
} finally {
xContext.getLogger().info("------ WeatherApiReceiveJob end:{}", System.currentTimeMillis());
TaskLockCache.delete(xContext, key);
}
}
return XServiceResult.OK;
}
}
\ No newline at end of file
...@@ -28,10 +28,10 @@ public class WeatherReceiveJob { ...@@ -28,10 +28,10 @@ public class WeatherReceiveJob {
*/ */
public XServiceResult execute(XContext xContext, String oilFieldCode) { public XServiceResult execute(XContext xContext, String oilFieldCode) {
xContext.getLogger().info("------ WeatherReceiveJob start:{}", DateUtil.date()); xContext.getLogger().info("------ WeatherReceiveJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "WeatherReceiveJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "WeatherReceiveJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
IBaseWeatherCloudService service = xContext.getBean(IBaseWeatherCloudService.class); IBaseWeatherCloudService service = xContext.getBean(IBaseWeatherCloudService.class);
XServiceResult result = service.weatherDataProcess(xContext, oilFieldCode); XServiceResult result = service.weatherDataProcess(xContext, oilFieldCode);
...@@ -40,7 +40,7 @@ public class WeatherReceiveJob { ...@@ -40,7 +40,7 @@ public class WeatherReceiveJob {
xContext.getLogger().error("------ WeatherReceiveJob Exception: ", e); xContext.getLogger().error("------ WeatherReceiveJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ WeatherReceiveJob end:{}", DateUtil.date()); xContext.getLogger().info("------ WeatherReceiveJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
...@@ -28,10 +28,10 @@ public class WellTechDailyJob { ...@@ -28,10 +28,10 @@ public class WellTechDailyJob {
*/ */
public XServiceResult execute(XContext xContext) { public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ WellTechDailyJob start:{}", DateUtil.date()); xContext.getLogger().info("------ WellTechDailyJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "WellTechDailyJob"; String redisFlag = TaskConstant.TASK_LOCK_FLAG + "WellTechDailyJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key); TaskLockCache exist = TaskLockCache.exist(xContext, redisFlag);
if (ObjectUtil.isNull(exist)) { if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key); ServiceUtil.setCache(xContext, redisFlag);
try { try {
IPlantPredictedPowerCloudService service = xContext.getBean(IPlantPredictedPowerCloudService.class); IPlantPredictedPowerCloudService service = xContext.getBean(IPlantPredictedPowerCloudService.class);
XServiceResult result = service.wellTechDailyJob(xContext); XServiceResult result = service.wellTechDailyJob(xContext);
...@@ -40,7 +40,7 @@ public class WellTechDailyJob { ...@@ -40,7 +40,7 @@ public class WellTechDailyJob {
xContext.getLogger().error("------ WellTechDailyJob Exception: ", e); xContext.getLogger().error("------ WellTechDailyJob Exception: ", e);
} finally { } finally {
xContext.getLogger().info("------ WellTechDailyJob end:{}", DateUtil.date()); xContext.getLogger().info("------ WellTechDailyJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key); TaskLockCache.delete(xContext, redisFlag);
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
......
package pps.core.task.job;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import pps.cloud.base.service.IWindPredictionHistoryCloudService;
import pps.core.common.cache.TaskLockCache;
import pps.core.task.constant.TaskConstant;
import pps.core.task.utils.ServiceUtil;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
/**
* 风资源训练集数据定时任务
*
* @author ZWT
* @date 2024/08/30 13:50
*/
@XText("风资源训练集数据定时任务")
@XService
public class WindPredictionHistoryJob {
/**
* 每天00:12执行 0 12 0 * * ?
*
* @param xContext x上下文
* @return {@link XServiceResult }
*/
public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ WindPredictionHistoryJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "WindPredictionHistoryJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key);
if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key);
try {
IWindPredictionHistoryCloudService service = xContext.getBean(IWindPredictionHistoryCloudService.class);
XServiceResult result = service.windPredictionHistoryJob(xContext);
result.throwIfFail();
} catch (Exception e) {
xContext.getLogger().error("------ WindPredictionHistoryJob Exception: ", e);
} finally {
xContext.getLogger().info("------ WindPredictionHistoryJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key);
}
}
return XServiceResult.OK;
}
}
...@@ -38,7 +38,6 @@ import pps.core.space.enums.BusinessError; ...@@ -38,7 +38,6 @@ import pps.core.space.enums.BusinessError;
import pps.core.space.mapper.*; import pps.core.space.mapper.*;
import pps.core.space.service.data.*; import pps.core.space.service.data.*;
import pps.core.space.service.data.space_institution_detail.OptimizeWellResult; import pps.core.space.service.data.space_institution_detail.OptimizeWellResult;
import pps.core.space.service.data.space_optimize_effect.GetSpaceOptimizeEffectOutput;
import pps.core.space.service.data.space_optimize_period.GetPredictedPowerOutput; import pps.core.space.service.data.space_optimize_period.GetPredictedPowerOutput;
import pps.core.space.service.data.space_optimize_period.GetSpaceOptimizePeriodInput; import pps.core.space.service.data.space_optimize_period.GetSpaceOptimizePeriodInput;
import pps.core.space.service.data.space_optimize_period.GetSpaceOptimizePeriodOutput; import pps.core.space.service.data.space_optimize_period.GetSpaceOptimizePeriodOutput;
...@@ -700,9 +699,15 @@ public class SpaceOptimizeBaseService { ...@@ -700,9 +699,15 @@ public class SpaceOptimizeBaseService {
} }
//计算权重时间轴 //计算权重时间轴
//每日最小开井时长(分钟) //每日最小开井时长(分钟)
int minOpenMinute = tundraStrategyWellhead.getMinOpen() int minOpenMinute;
BigDecimal minOpen = tundraStrategyWellhead.getMinOpen();
if (ObjectUtil.isNull(minOpen)) {
minOpenMinute = 0;
} else {
minOpenMinute = minOpen
.multiply(BusinessConstant.BIG_DECIMAL_60) .multiply(BusinessConstant.BIG_DECIMAL_60)
.intValue(); .intValue();
}
serviceRating = serviceRating.add(tundraStrategyWellhead.getServiceRating()); serviceRating = serviceRating.add(tundraStrategyWellhead.getServiceRating());
List<SpaceOptimizeWeight> weightList = this.calculateWeightList(serviceRating, rangeToList, powerList, strategyList, isOffGrid); List<SpaceOptimizeWeight> weightList = this.calculateWeightList(serviceRating, rangeToList, powerList, strategyList, isOffGrid);
List<SpaceOptimizeWeightDuration> weightDurationList = this.weightListProcessing(weightList, minOpenMinute); List<SpaceOptimizeWeightDuration> weightDurationList = this.weightListProcessing(weightList, minOpenMinute);
...@@ -2028,24 +2033,6 @@ public class SpaceOptimizeBaseService { ...@@ -2028,24 +2033,6 @@ public class SpaceOptimizeBaseService {
wellheadOutputs = Collections.emptyList(); wellheadOutputs = Collections.emptyList();
} else { } else {
if (CollUtil.isNotEmpty(durationOutputs)) { if (CollUtil.isNotEmpty(durationOutputs)) {
//查能耗
SpaceOptimizeEffectMapper mapper = context.getBean(SpaceOptimizeEffectMapper.class);
List<SpaceOptimizeEffectEnt> effectList = mapper.selectList(new LambdaQueryWrapper<SpaceOptimizeEffectEnt>()
.select(SpaceOptimizeEffectEnt::getWellheadId, SpaceOptimizeEffectEnt::getGreenPowerRate, SpaceOptimizeEffectEnt::getPowerCost,
SpaceOptimizeEffectEnt::getOptimalGreenPowerRate, SpaceOptimizeEffectEnt::getOptimalPowerCost, SpaceOptimizeEffectEnt::getInstitutionResult,
SpaceOptimizeEffectEnt::getGreenPowerUpgrade, SpaceOptimizeEffectEnt::getCostDown, SpaceOptimizeEffectEnt::getOptimalResult)
.eq(BaseModel::getIsDeleted, 1)
.eq(SpaceOptimizeEffectEnt::getPeriodId, periodId)
.eq(SpaceOptimizeEffectEnt::getOptimizeDate, optimizeDate)
);
Map<String, SpaceOptimizeEffectEnt> effectMap;
if (CollUtil.isNotEmpty(effectList)) {
effectMap = effectList.stream()
.collect(Collectors.toMap(SpaceOptimizeEffectEnt::getWellheadId, Function.identity()));
} else {
effectMap = Collections.emptyMap();
}
//处理间开
Map<String, List<SpaceOptimizeDateDuration>> collect = new HashMap<>(16); Map<String, List<SpaceOptimizeDateDuration>> collect = new HashMap<>(16);
for (SpaceOptimizeDateDuration durationOutput : durationOutputs) { for (SpaceOptimizeDateDuration durationOutput : durationOutputs) {
if (CharSequenceUtil.isEmpty(durationOutput.getGenerationTypeKey())) { if (CharSequenceUtil.isEmpty(durationOutput.getGenerationTypeKey())) {
...@@ -2062,55 +2049,13 @@ public class SpaceOptimizeBaseService { ...@@ -2062,55 +2049,13 @@ public class SpaceOptimizeBaseService {
} }
//封装 //封装
Map<Integer, List<SpaceOptimizeDateDuration>> listMap; Map<Integer, List<SpaceOptimizeDateDuration>> listMap;
SpaceOptimizeEffectEnt effect;
boolean isOptimal;
BigDecimal costDown;
String optimalResult;
BigDecimal optimalGreenPowerRate;
BigDecimal optimalPowerCost;
BigDecimal greenPowerUpgrade;
for (GetSpaceOptimizeWellheadOutput w : wellheadOutputs) { for (GetSpaceOptimizeWellheadOutput w : wellheadOutputs) {
//封装能耗分析
if (effectMap.containsKey(w.getWellheadId())) {
effect = effectMap.get(w.getWellheadId());
costDown = effect.getCostDown();
//降低成本大于等于0才优化(1天/3天间开不处理结果)
isOptimal = BusinessConstant.FOUR.equals(flag) || BusinessConstant.THREE.equals(flag) || costDown.compareTo(BigDecimal.ZERO) >= 0;
if (isOptimal) {
optimalResult = effect.getOptimalResult();
optimalGreenPowerRate = effect.getOptimalGreenPowerRate();
optimalPowerCost = effect.getOptimalPowerCost();
greenPowerUpgrade = effect.getGreenPowerUpgrade();
} else {
optimalResult = effect.getInstitutionResult();
optimalGreenPowerRate = effect.getGreenPowerRate();
optimalPowerCost = effect.getPowerCost();
greenPowerUpgrade = BigDecimal.ZERO;
costDown = BigDecimal.ZERO;
}
w.setEffect(GetSpaceOptimizeEffectOutput.builder()
.optimalResult(optimalResult)
.greenPowerRate(effect.getGreenPowerRate())
.powerCost(effect.getPowerCost())
.optimalGreenPowerRate(optimalGreenPowerRate)
.optimalPowerCost(optimalPowerCost)
.greenPowerUpgrade(greenPowerUpgrade)
.costDown(costDown)
.build());
} else {
w.setEffect(new GetSpaceOptimizeEffectOutput());
isOptimal = false;
}
//封装间开 //封装间开
if (collect.containsKey(w.getWellheadId())) { if (collect.containsKey(w.getWellheadId())) {
listMap = collect.get(w.getWellheadId()).stream() listMap = collect.get(w.getWellheadId()).stream()
.collect(Collectors.groupingBy(SpaceOptimizeDateDuration::getIsOptimize)); .collect(Collectors.groupingBy(SpaceOptimizeDateDuration::getIsOptimize));
//填充关井时间(降低成本大于等于0才优化) //填充关井时间(降低成本大于等于0才优化)
if (isOptimal) {
w.setOptimizeList(ServiceUtil.getAllDateDuration(listMap.get(0))); w.setOptimizeList(ServiceUtil.getAllDateDuration(listMap.get(0)));
} else {
w.setOptimizeList(ServiceUtil.getAllDateDuration(listMap.get(1)));
}
w.setInitializeList(ServiceUtil.getAllDateDuration(listMap.get(1))); w.setInitializeList(ServiceUtil.getAllDateDuration(listMap.get(1)));
} else { } else {
w.setOptimizeList(Collections.emptyList()); w.setOptimizeList(Collections.emptyList());
...@@ -3719,7 +3664,7 @@ public class SpaceOptimizeBaseService { ...@@ -3719,7 +3664,7 @@ public class SpaceOptimizeBaseService {
beginTypeKey = weight.getGenerationTypeKey(); beginTypeKey = weight.getGenerationTypeKey();
beginTime = startTime; beginTime = startTime;
} }
if (!CharSequenceUtil.equals(beginTypeKey, weight.getGenerationTypeKey())) { if (!CharSequenceUtil.equals(beginTypeKey, weight.getGenerationTypeKey()) && ObjectUtil.isNotNull(beginTime)) {
this.createOptimizeDuration(durationDTOList, durationDTO.getPeriodId(), durationDTO.getRecordId(), durationDTO.getWellheadId(), beginTypeKey, this.createOptimizeDuration(durationDTOList, durationDTO.getPeriodId(), durationDTO.getRecordId(), durationDTO.getWellheadId(), beginTypeKey,
beginTime.toString(BusinessConstant.MINUTES_FORMAT), beginTime.toString(BusinessConstant.MINUTES_FORMAT),
weight.getTimestamp().toString(BusinessConstant.MINUTES_FORMAT), weight.getTimestamp().toString(BusinessConstant.MINUTES_FORMAT),
...@@ -3730,7 +3675,7 @@ public class SpaceOptimizeBaseService { ...@@ -3730,7 +3675,7 @@ public class SpaceOptimizeBaseService {
} }
} }
//时间戳大于结束时间,跳出循环设置下次索引位置 //时间戳大于结束时间,跳出循环设置下次索引位置
if (DateUtil.compare(weight.getTimestamp(), endTime) > 0) { if (DateUtil.compare(weight.getTimestamp(), endTime) > 0 && ObjectUtil.isNotNull(beginTime)) {
this.createOptimizeDuration(durationDTOList, durationDTO.getPeriodId(), durationDTO.getRecordId(), durationDTO.getWellheadId(), beginTypeKey, this.createOptimizeDuration(durationDTOList, durationDTO.getPeriodId(), durationDTO.getRecordId(), durationDTO.getWellheadId(), beginTypeKey,
beginTime.toString(BusinessConstant.MINUTES_FORMAT), beginTime.toString(BusinessConstant.MINUTES_FORMAT),
endTime.toString(BusinessConstant.MINUTES_FORMAT), endTime.toString(BusinessConstant.MINUTES_FORMAT),
......
...@@ -859,11 +859,23 @@ public class HomePageService { ...@@ -859,11 +859,23 @@ public class HomePageService {
cumulativeProduction = BigDecimal.ZERO; cumulativeProduction = BigDecimal.ZERO;
powerGeneration = BigDecimal.ZERO; powerGeneration = BigDecimal.ZERO;
dailyElectricityConsumption = BigDecimal.ZERO; dailyElectricityConsumption = BigDecimal.ZERO;
} else {
if (ObjectUtil.isNull(dailyAccumulation.getDailyLiquidProduction())) {
cumulativeProduction = BigDecimal.ZERO;
} else { } else {
cumulativeProduction = dailyAccumulation.getDailyLiquidProduction().setScale(2, RoundingMode.HALF_UP); cumulativeProduction = dailyAccumulation.getDailyLiquidProduction().setScale(2, RoundingMode.HALF_UP);
}
if (ObjectUtil.isNull(dailyAccumulation.getPhotovoltaicPower())) {
powerGeneration = BigDecimal.ZERO;
} else {
powerGeneration = dailyAccumulation.getPhotovoltaicPower().setScale(2, RoundingMode.HALF_UP); powerGeneration = dailyAccumulation.getPhotovoltaicPower().setScale(2, RoundingMode.HALF_UP);
}
if (ObjectUtil.isNull(dailyAccumulation.getDailyElectricityConsumption())) {
dailyElectricityConsumption = BigDecimal.ZERO;
} else {
dailyElectricityConsumption = dailyAccumulation.getDailyElectricityConsumption().setScale(2, RoundingMode.HALF_UP); dailyElectricityConsumption = dailyAccumulation.getDailyElectricityConsumption().setScale(2, RoundingMode.HALF_UP);
} }
}
return XSingleResult.success(GetLineViewOutput.builder() return XSingleResult.success(GetLineViewOutput.builder()
.wellList(wellheadList) .wellList(wellheadList)
.operatingLoad(operatingLoad) .operatingLoad(operatingLoad)
......
...@@ -5,17 +5,13 @@ import cn.hutool.core.date.DateTime; ...@@ -5,17 +5,13 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.excel.EasyExcelFactory; import com.alibaba.excel.EasyExcelFactory;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.core.common.constant.BusinessConstant; import pps.core.common.constant.BusinessConstant;
import pps.core.common.excel.util.EasyExcelUtil; import pps.core.common.excel.util.EasyExcelUtil;
import pps.core.common.excel.util.ExcelStyleTool; import pps.core.common.excel.util.ExcelStyleTool;
import pps.core.prediction.entity.PlantPowerDataEnt; import pps.core.prediction.entity.PlantPowerDataEnt;
import pps.core.prediction.entity.PlantPowerDataView;
import pps.core.prediction.enums.ImportFieldDic;
import pps.core.prediction.mapper.PlantPowerDataMapper; import pps.core.prediction.mapper.PlantPowerDataMapper;
import pps.core.prediction.mapper.PlantPowerDataViewMapper;
import pps.core.prediction.service.data.plant_power_data.ExcelPlantPowerTemplate; import pps.core.prediction.service.data.plant_power_data.ExcelPlantPowerTemplate;
import pps.core.prediction.service.data.plant_power_data.ImportFileInput; import pps.core.prediction.service.data.plant_power_data.ImportFileInput;
import pps.core.prediction.service.data.plant_power_data.QueryPlantPowerDataInput; import pps.core.prediction.service.data.plant_power_data.QueryPlantPowerDataInput;
...@@ -24,7 +20,6 @@ import xstartup.annotation.XService; ...@@ -24,7 +20,6 @@ import xstartup.annotation.XService;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
import xstartup.base.tool.XStorageTool; import xstartup.base.tool.XStorageTool;
import xstartup.base.util.XHttpUtils;
import xstartup.data.XFileResult; import xstartup.data.XFileResult;
import xstartup.data.XFileType; import xstartup.data.XFileType;
import xstartup.data.XPageResult; import xstartup.data.XPageResult;
...@@ -34,8 +29,6 @@ import xstartup.feature.api.annotation.XApiUpload; ...@@ -34,8 +29,6 @@ import xstartup.feature.api.annotation.XApiUpload;
import xstartup.feature.mybatis.helper.XMapperHelper; import xstartup.feature.mybatis.helper.XMapperHelper;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@XService @XService
@XText("电站实际发电数据") @XText("电站实际发电数据")
...@@ -95,71 +88,6 @@ public class PlantPowerDataService { ...@@ -95,71 +88,6 @@ public class PlantPowerDataService {
@XText("导入电站实际发电数据") @XText("导入电站实际发电数据")
@XApiUpload @XApiUpload
public XServiceResult importPlantPowerData(XContext context, ImportFileInput input) { public XServiceResult importPlantPowerData(XContext context, ImportFileInput input) {
List<ExcelPlantPowerTemplate> list = EasyExcelUtil.getExcelDataAndCheck(input.getFile(), ExcelPlantPowerTemplate.class,
null, null);
if (CollUtil.isNotEmpty(list)) {
DateTime dateTime;
DateTime minDate = null;
DateTime maxDate = null;
List<PlantPowerDataView> dataList = new ArrayList<>(list.size());
for (ExcelPlantPowerTemplate template : list) {
if (ObjectUtil.isNotNull(template.getDataDate())) {
dateTime = DateUtil.date(template.getDataDate());
if (ObjectUtil.isNull(minDate)) {
minDate = dateTime;
maxDate = dateTime;
}
if (minDate.compareTo(dateTime) > 0) {
minDate = dateTime;
} else if (dateTime.compareTo(maxDate) > 0) {
maxDate = dateTime;
}
dataList.add(
PlantPowerDataView.builder()
.dataDate(dateTime)
.windSpeed(BusinessConstant.BIG_DECIMAL_6_67)
.windDirection(BigDecimal.ZERO)
.temperature(BusinessConstant.BIG_DECIMAL_4)
.pressure(BigDecimal.ONE)
.humidity(BusinessConstant.BIG_DECIMAL_3)
.planeIrradiance(BusinessConstant.BIG_DECIMAL_2)
.horizontalIrradiance(BusinessConstant.BIG_DECIMAL_4)
.power(BusinessConstant.BIG_DECIMAL_60)
.build()
);
}
}
PlantPowerDataMapper mapper = context.getBean(PlantPowerDataMapper.class);
mapper.delete(new QueryWrapper<PlantPowerDataEnt>()
.lambda()
.eq(PlantPowerDataEnt::getPlantId, input.getPlantId())
.ge(PlantPowerDataEnt::getDataDate, minDate)
.le(PlantPowerDataEnt::getDataDate, maxDate));
PlantPowerDataViewMapper viewMapper = context.getBean(PlantPowerDataViewMapper.class);
viewMapper.insertBatch(dataList);
//进行训练
doTrainData(context, input.getPlantId());
}
return XServiceResult.OK; return XServiceResult.OK;
} }
private List<String> getExcelHeaderList() {
List<Map<String, Object>> fieldList = new ArrayList<>();
for (ImportFieldDic value : ImportFieldDic.values()) {
Map<String, Object> map = new HashMap<>();
map.put("col", value.getCol());
map.put("sort", value.getSort());
fieldList.add(map);
}
fieldList.sort(Comparator.comparing(o -> ((Integer) o.get("sort"))));
return fieldList.stream().map(x -> ((String) x.get("col"))).collect(Collectors.toList());
}
public void doTrainData(XContext context, String plantId) {
try {
XHttpUtils.postAsJson("http://127.0.0.1:10098/aiprediction/xgbtrain?plantId=" + plantId, 10000);
} catch (Exception e) {
context.getLogger().error(e.getMessage());
}
}
} }
\ No newline at end of file
...@@ -3,9 +3,8 @@ package pps.core.prediction.service; ...@@ -3,9 +3,8 @@ package pps.core.prediction.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadInput; import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadInput;
import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadOutput; import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadOutput;
import pps.cloud.middle.service.IWellDailyProductionSituationCloudService; import pps.cloud.middle.service.IWellDailyProductionSituationCloudService;
...@@ -14,10 +13,7 @@ import pps.cloud.middle.service.data.wellhead_daily_production_situation.GetWell ...@@ -14,10 +13,7 @@ import pps.cloud.middle.service.data.wellhead_daily_production_situation.GetWell
import pps.cloud.prediction.service.IPlantPredictedPowerCloudService; import pps.cloud.prediction.service.IPlantPredictedPowerCloudService;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput; import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerOutput; import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerOutput;
import pps.core.auth.HttpRequestClient;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.utils.BaseUtils; import pps.core.common.utils.BaseUtils;
import pps.core.prediction.constant.ThirdPartyApiConstant;
import pps.core.prediction.entity.PredictedPowerView; import pps.core.prediction.entity.PredictedPowerView;
import pps.core.prediction.entity.WellheadDailyProductionSituationView; import pps.core.prediction.entity.WellheadDailyProductionSituationView;
import pps.core.prediction.mapper.PredictedPowerViewMapper; import pps.core.prediction.mapper.PredictedPowerViewMapper;
...@@ -26,14 +22,16 @@ import pps.core.prediction.service.data.wellhead_daily_production_situation.Well ...@@ -26,14 +22,16 @@ import pps.core.prediction.service.data.wellhead_daily_production_situation.Well
import pps.core.prediction.utils.ServiceUtil; import pps.core.prediction.utils.ServiceUtil;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.base.XContext; import xstartup.base.XContext;
import xstartup.base.XStartup;
import xstartup.base.util.XCopyUtils; import xstartup.base.util.XCopyUtils;
import xstartup.data.XListResult; import xstartup.data.XListResult;
import xstartup.data.XServiceResult; import xstartup.data.XServiceResult;
import xstartup.helper.XTransactionHelper; import xstartup.helper.XTransactionHelper;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -206,9 +204,12 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower ...@@ -206,9 +204,12 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower
if (CollUtil.isEmpty(list)) { if (CollUtil.isEmpty(list)) {
return XServiceResult.OK; return XServiceResult.OK;
} }
List<String> collect = list.stream() List<String> collect = new ArrayList<>(16);
.map(WellheadDailyProductionSituationJob::getWellNumber) for (WellheadDailyProductionSituationJob job : list) {
.collect(Collectors.toList()); if (CharSequenceUtil.isNotBlank(job.getWellNumber())) {
collect.add(job.getWellNumber());
}
}
Map<String, String> map = ServiceUtil.getBaseWellheadList(context, DynamicQueryBaseWellheadInput.builder() Map<String, String> map = ServiceUtil.getBaseWellheadList(context, DynamicQueryBaseWellheadInput.builder()
.wellNumbers(collect) .wellNumbers(collect)
.build()).stream() .build()).stream()
...@@ -263,8 +264,6 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower ...@@ -263,8 +264,6 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower
List<WellheadDailyProductionSituationJob> list = null; List<WellheadDailyProductionSituationJob> list = null;
//区分环境 //区分环境
String oilFieldCode = ServiceUtil.getOilFieldCode(context); String oilFieldCode = ServiceUtil.getOilFieldCode(context);
switch (oilFieldCode) {
case BusinessConstant.ENV_SY:
IWellDailyProductionSituationCloudService service = context.getBean(IWellDailyProductionSituationCloudService.class); IWellDailyProductionSituationCloudService service = context.getBean(IWellDailyProductionSituationCloudService.class);
XListResult<GetWellheadDailyProductionSituationOutput> result = service.getWellDailyProductionSituationList(context, GetWellheadDailyProductionSituationInput.builder() XListResult<GetWellheadDailyProductionSituationOutput> result = service.getWellDailyProductionSituationList(context, GetWellheadDailyProductionSituationInput.builder()
.dataDate(DateUtil.beginOfDay(DateUtil.yesterday()).toDateStr()) .dataDate(DateUtil.beginOfDay(DateUtil.yesterday()).toDateStr())
...@@ -295,29 +294,16 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower ...@@ -295,29 +294,16 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower
); );
} }
} }
break;
case BusinessConstant.ENV_CQ:
String token = ServiceUtil.getToken(context);
HttpRequestClient client = new HttpRequestClient(token);
Map<String, Object> param = new HashMap<>(4);
param.put("Calc_Date", DateUtil.yesterday().toString(BusinessConstant.DATE_FORMAT_DAY));
String url = XStartup.getCurrent().getProperty("third-party.chang-qing.url");
url += ThirdPartyApiConstant.CQ_WELL_TECH_DAILY;
String resultStr = client.doPostForm(url, param);
context.getLogger().info("*** CQ_WELL_TECH_DAILY : {}", resultStr);
JSONObject jsonObject = JSON.parseObject(resultStr);
String data = jsonObject.getString("data");
list = JSON.parseArray(data, WellheadDailyProductionSituationJob.class);
break;
default:
}
if (CollUtil.isEmpty(list)) { if (CollUtil.isEmpty(list)) {
context.getLogger().info("------ WellTechDailyJob 未发现数据: {}", DateUtil.yesterday().toString("yyyy-MM-dd")); context.getLogger().info("------ WellTechDailyJob 未发现数据: {}", DateUtil.yesterday().toString("yyyy-MM-dd"));
return XServiceResult.OK; return XServiceResult.OK;
} }
List<String> collect = list.stream() List<String> collect = new ArrayList<>(16);
.map(WellheadDailyProductionSituationJob::getWellNumber) for (WellheadDailyProductionSituationJob job : list) {
.collect(Collectors.toList()); if (CharSequenceUtil.isNotBlank(job.getWellNumber())) {
collect.add(job.getWellNumber());
}
}
Map<String, String> map = ServiceUtil.getBaseWellheadList(context, DynamicQueryBaseWellheadInput.builder() Map<String, String> map = ServiceUtil.getBaseWellheadList(context, DynamicQueryBaseWellheadInput.builder()
.wellNumbers(collect) .wellNumbers(collect)
.build()).stream() .build()).stream()
......
...@@ -13,7 +13,6 @@ import pps.core.prediction.mapper.PlantPredictedPowerLongTermDataMapper; ...@@ -13,7 +13,6 @@ import pps.core.prediction.mapper.PlantPredictedPowerLongTermDataMapper;
import pps.core.prediction.service.data.plant_predicted_power_data.DoPlantPredictedPowerDataInput; import pps.core.prediction.service.data.plant_predicted_power_data.DoPlantPredictedPowerDataInput;
import pps.core.prediction.service.data.plant_predicted_power_data.GetPlantPredictedPowerDataInput; import pps.core.prediction.service.data.plant_predicted_power_data.GetPlantPredictedPowerDataInput;
import pps.core.prediction.service.data.plant_predicted_power_data.GetPlantPredictedPowerDataOutput; import pps.core.prediction.service.data.plant_predicted_power_data.GetPlantPredictedPowerDataOutput;
import pps.core.prediction.utils.HttpUtils;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
...@@ -150,17 +149,6 @@ public class PlantPredictedPowerDataService { ...@@ -150,17 +149,6 @@ public class PlantPredictedPowerDataService {
@XText("预测电站发电数据") @XText("预测电站发电数据")
@XApiPost @XApiPost
public XServiceResult doPredictedPowerData(XContext context, DoPlantPredictedPowerDataInput input) { public XServiceResult doPredictedPowerData(XContext context, DoPlantPredictedPowerDataInput input) {
doPredictedData(context, input.getPlantId());
return XServiceResult.OK; return XServiceResult.OK;
} }
public void doPredictedData(XContext context, String plantId) {
try {
Object ret = HttpUtils.send2("http://127.0.0.1:10098/aiprediction/xgbreason?plantId=" + plantId,
"");
context.getLogger().info(ret.toString());
} catch (Exception e) {
throw new RuntimeException("调用训练接口失败");
}
}
} }
\ No newline at end of file
package pps.core.prediction.service; package pps.core.prediction.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod; import com.github.pagehelper.page.PageMethod;
import pps.core.auth.HttpRequestClient;
import pps.core.common.constant.BusinessConstant; import pps.core.common.constant.BusinessConstant;
import pps.core.prediction.constant.ThirdPartyApiConstant;
import pps.core.prediction.entity.WellheadDailyProductionSituationEnt; import pps.core.prediction.entity.WellheadDailyProductionSituationEnt;
import pps.core.prediction.excel.listener.ThirdActivePowerDataListener; import pps.core.prediction.excel.listener.ThirdActivePowerDataListener;
import pps.core.prediction.mapper.WellheadDailyProductionSituationMapper; import pps.core.prediction.mapper.WellheadDailyProductionSituationMapper;
...@@ -20,11 +15,9 @@ import pps.core.prediction.service.data.wellhead_daily_production_situation.GetW ...@@ -20,11 +15,9 @@ import pps.core.prediction.service.data.wellhead_daily_production_situation.GetW
import pps.core.prediction.service.data.wellhead_daily_production_situation.GetWellheadDailyProductionSituationOutput; import pps.core.prediction.service.data.wellhead_daily_production_situation.GetWellheadDailyProductionSituationOutput;
import pps.core.prediction.service.data.wellhead_daily_production_situation.QueryWellheadDailyProductionSituationInput; import pps.core.prediction.service.data.wellhead_daily_production_situation.QueryWellheadDailyProductionSituationInput;
import pps.core.prediction.service.data.wellhead_daily_production_situation.QueryWellheadDailyProductionSituationOutput; import pps.core.prediction.service.data.wellhead_daily_production_situation.QueryWellheadDailyProductionSituationOutput;
import pps.core.prediction.utils.ServiceUtil;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
import xstartup.base.XStartup;
import xstartup.base.util.XCopyUtils; import xstartup.base.util.XCopyUtils;
import xstartup.data.XListResult; import xstartup.data.XListResult;
import xstartup.data.XPageResult; import xstartup.data.XPageResult;
...@@ -33,9 +26,7 @@ import xstartup.feature.api.annotation.XApiGet; ...@@ -33,9 +26,7 @@ import xstartup.feature.api.annotation.XApiGet;
import xstartup.feature.api.annotation.XApiPost; import xstartup.feature.api.annotation.XApiPost;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 井口生产情况模块 * 井口生产情况模块
...@@ -88,21 +79,7 @@ public class WellheadDailyProductionSituationService { ...@@ -88,21 +79,7 @@ public class WellheadDailyProductionSituationService {
@XText("井口生产情况--甘特图") @XText("井口生产情况--甘特图")
@XApiPost @XApiPost
public XListResult<GetWellheadDailyProductionSituationOutput> queryRptSystemStartStop(XContext context, GetWellheadDailyProductionSituationInput input) { public XListResult<GetWellheadDailyProductionSituationOutput> queryRptSystemStartStop(XContext context, GetWellheadDailyProductionSituationInput input) {
String token = ServiceUtil.getToken(context); return XListResult.success(Collections.emptyList());
HttpRequestClient client = new HttpRequestClient(token);
Map<String, Object> param = new HashMap<>(4);
param.put("Org_Name", input.getStationName());
param.put("WELL_NAME", input.getWellNumber());
String url = XStartup.getCurrent().getProperty("third-party.chang-qing.url");
url += ThirdPartyApiConstant.CQ_RPT_SYSTEM_START_STOP;
String resultStr = client.doPostForm(url, param);
JSONObject jsonObject = JSON.parseObject(resultStr);
String data = jsonObject.getString("data");
List<GetWellheadDailyProductionSituationOutput> outputs = JSON.parseArray(data, GetWellheadDailyProductionSituationOutput.class);
if (CollUtil.isEmpty(outputs)) {
outputs = Collections.emptyList();
}
return XListResult.success(outputs);
} }
@XText("有功功率历史数据导入") @XText("有功功率历史数据导入")
......
package pps.core.prediction.utils;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
public class HttpUtils {
public static String send2(String url, String param) throws Exception {
URL localURL = new URL(url);
URLConnection connection = localURL.openConnection();
HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Accept", "application/json");
httpURLConnection.setRequestProperty("Content-Type", "application/json");
httpURLConnection.setRequestProperty("Content-Length", String.valueOf(param.length()));
httpURLConnection.setConnectTimeout(10000);
OutputStream outputStream = null;
OutputStreamWriter outputStreamWriter = null;
InputStream inputStream = null;
String resultBuffer = "";
try {
outputStream = httpURLConnection.getOutputStream();
outputStreamWriter = new OutputStreamWriter(outputStream);
outputStreamWriter.write(param);
outputStreamWriter.flush();
if (httpURLConnection.getResponseCode() >= 300) {
throw new Exception(
"HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
}
inputStream = httpURLConnection.getInputStream();
resultBuffer = convertStreamToString(inputStream);
} finally {
if (outputStreamWriter != null) {
outputStreamWriter.close();
}
if (outputStream != null) {
outputStream.close();
}
if (inputStream != null) {
inputStream.close();
}
}
return resultBuffer;
}
public static String convertStreamToString(InputStream is) {
StringBuilder sb1 = new StringBuilder();
byte[] bytes = new byte[4096];
int size;
try {
while ((size = is.read(bytes)) > 0) {
String str = new String(bytes, 0, size, "UTF-8");
sb1.append(str);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb1.toString();
}
}
...@@ -3,7 +3,6 @@ package pps.core.prediction.utils; ...@@ -3,7 +3,6 @@ package pps.core.prediction.utils;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
...@@ -29,7 +28,6 @@ import pps.cloud.base.service.data.config_oil_field.GetConfigOilFieldOutput; ...@@ -29,7 +28,6 @@ import pps.cloud.base.service.data.config_oil_field.GetConfigOilFieldOutput;
import pps.cloud.system.service.SysOrganizationCloudService; import pps.cloud.system.service.SysOrganizationCloudService;
import pps.cloud.system.service.data.sys_organization.GetAllOuListByOuIdInput; import pps.cloud.system.service.data.sys_organization.GetAllOuListByOuIdInput;
import pps.cloud.system.service.data.sys_organization.GetSysOrganizationViewOutput; import pps.cloud.system.service.data.sys_organization.GetSysOrganizationViewOutput;
import pps.core.auth.HttpRequestClient;
import pps.core.common.cache.ThirdPartyConfigCache; import pps.core.common.cache.ThirdPartyConfigCache;
import pps.core.common.constant.BusinessConstant; import pps.core.common.constant.BusinessConstant;
import pps.core.prediction.constant.ThirdPartyApiConstant; import pps.core.prediction.constant.ThirdPartyApiConstant;
...@@ -62,47 +60,6 @@ import java.util.stream.Collectors; ...@@ -62,47 +60,6 @@ import java.util.stream.Collectors;
*/ */
public class ServiceUtil { public class ServiceUtil {
/**
* 调用接口(长庆)
*
* @param context 上下文
* @param api 应用程序编程接口
* @param param 参数
* @return {@link String}
*/
public static String doPostFormCq(XContext context, String api, Map<String, Object> param) {
String url = XStartup.getCurrent().getProperty("third-party.chang-qing.url");
String token = ServiceUtil.getToken(context);
HttpRequestClient client = new HttpRequestClient(token);
String resultStr = client.doPostForm(url + api, param);
JSONObject jsonObject = JSON.parseObject(resultStr);
context.getLogger().info("**** doPostFormCq api: {}", api);
context.getLogger().info("**** doPostFormCq resultStr: {}", resultStr);
return jsonObject.getString("data");
}
/**
* 获取长庆TOKEN
*
* @param context 上下文
* @return {@link String}
*/
public static String getToken(XContext context) {
String token;
ThirdPartyConfigCache exist = ThirdPartyConfigCache.exist(context, ThirdPartyApiConstant.CQ_TOKEN_CACHE_KEY);
if (ObjectUtil.isNull(exist)) {
token = ServiceUtil.getCqToken(context);
} else {
long duration = (long) exist.getDuration();
if (duration - DateUtil.between(exist.getCurrentDate(), DateUtil.date(), DateUnit.SECOND) < ThirdPartyApiConstant.MAX_SECOND) {
token = ServiceUtil.getCqToken(context);
} else {
token = exist.getCode();
}
}
return token;
}
/** /**
* 获得预测功率输出 * 获得预测功率输出
* *
......
...@@ -42,11 +42,6 @@ x.db.pps.core.middle.databaseId=@x.db.pps.core.middle.databaseId@ ...@@ -42,11 +42,6 @@ x.db.pps.core.middle.databaseId=@x.db.pps.core.middle.databaseId@
x.druid.validation-query= x.druid.validation-query=
# \u81EA\u5B9A\u4E49\u914D\u7F6E # \u81EA\u5B9A\u4E49\u914D\u7F6E
weather.file.temp.path=@weather.file.temp.path@ weather.file.temp.path=@weather.file.temp.path@
weather.file.icon=@weather.file.icon@
weather.mail.host=@weather.mail.host@
weather.mail.username=@weather.mail.username@
weather.mail.password=@weather.mail.password@
weather.mail.protocol=@weather.mail.protocol@
#\u9996\u9875 #\u9996\u9875
home.image.path=@home.image.path@ home.image.path=@home.image.path@
#\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86) #\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86)
......
...@@ -34,13 +34,7 @@ x.db.pps.core.middle.password=BJ8HiKUS_Rg= ...@@ -34,13 +34,7 @@ x.db.pps.core.middle.password=BJ8HiKUS_Rg=
x.db.pps.core.middle.naming=snake-case x.db.pps.core.middle.naming=snake-case
x.db.pps.core.middle.databaseId=Oracle x.db.pps.core.middle.databaseId=Oracle
# \u81EA\u5B9A\u4E49\u914D\u7F6E # \u81EA\u5B9A\u4E49\u914D\u7F6E
#weather.file.temp.path=D:/home/weather/temp/receive
weather.file.temp.path=/home/weather-jar/temp/receive weather.file.temp.path=/home/weather-jar/temp/receive
weather.file.icon=/home/weather-jar/icon
weather.mail.host=pop.qq.com
weather.mail.username=2289169069@qq.com
weather.mail.password=xiytzwcreqphdiga
weather.mail.protocol=pop3
#\u9996\u9875 #\u9996\u9875
home.image.path=/home/gf-jar/homeImg home.image.path=/home/gf-jar/homeImg
#\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86) #\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86)
......
...@@ -35,12 +35,6 @@ x.db.pps.core.middle.naming=snake-case ...@@ -35,12 +35,6 @@ x.db.pps.core.middle.naming=snake-case
x.db.pps.core.middle.databaseId=Oracle x.db.pps.core.middle.databaseId=Oracle
# \u81EA\u5B9A\u4E49\u914D\u7F6E # \u81EA\u5B9A\u4E49\u914D\u7F6E
weather.file.temp.path=D:\\IDE\\Project\\temp\\receive weather.file.temp.path=D:\\IDE\\Project\\temp\\receive
weather.file.icon=D:\\IDE\\Project\\icon
#weather.file.temp.path=/home/weather-jar/temp/receive
weather.mail.host=mail.petrochina
weather.mail.username=lingtanproject@petrochina.com.cn
weather.mail.password=Cppeilingtan2024
weather.mail.protocol=pop3
#\u9996\u9875 #\u9996\u9875
home.image.path=/home/gf-jar/homeImg home.image.path=/home/gf-jar/homeImg
#\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86) #\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86)
......
...@@ -34,13 +34,7 @@ x.db.pps.core.middle.password=ECqrraM3I35AFJ-VC0XOpw== ...@@ -34,13 +34,7 @@ x.db.pps.core.middle.password=ECqrraM3I35AFJ-VC0XOpw==
x.db.pps.core.middle.naming=snake-case x.db.pps.core.middle.naming=snake-case
x.db.pps.core.middle.databaseId=Oracle x.db.pps.core.middle.databaseId=Oracle
# \u81EA\u5B9A\u4E49\u914D\u7F6E # \u81EA\u5B9A\u4E49\u914D\u7F6E
#weather.file.temp.path=D:/home/weather/temp/receive
weather.file.temp.path=/home/weather-jar/temp/receive weather.file.temp.path=/home/weather-jar/temp/receive
weather.file.icon=/home/weather-jar/icon
weather.mail.host=mail.petrochina
weather.mail.username=lingtanproject@petrochina.com.cn
weather.mail.password=Cppeilingtan2024
weather.mail.protocol=pop3
#\u9996\u9875 #\u9996\u9875
home.image.path=/home/gf-jar/homeImg home.image.path=/home/gf-jar/homeImg
#\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86) #\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86)
......
...@@ -35,12 +35,6 @@ x.db.pps.core.middle.naming=snake-case ...@@ -35,12 +35,6 @@ x.db.pps.core.middle.naming=snake-case
x.db.pps.core.middle.databaseId=Oracle x.db.pps.core.middle.databaseId=Oracle
# \u81EA\u5B9A\u4E49\u914D\u7F6E # \u81EA\u5B9A\u4E49\u914D\u7F6E
weather.file.temp.path=D:\\IDE\\Project\\temp\\receive weather.file.temp.path=D:\\IDE\\Project\\temp\\receive
weather.file.icon=D:\\IDE\\Project\\icon
#weather.file.temp.path=/home/weather-jar/temp/receive
weather.mail.host=mail.petrochina
weather.mail.username=lingtanproject@petrochina.com.cn
weather.mail.password=Cppeilingtan2024
weather.mail.protocol=pop3
#\u9996\u9875 #\u9996\u9875
home.image.path=/home/gf-jar/homeImg home.image.path=/home/gf-jar/homeImg
#\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86) #\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86)
......
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