Commit 4c7c565f authored by ZWT's avatar ZWT

feat(能源管理系统): 间开优化定时任务

1.开发间开优化长期间开优化定时任务,了解长期并网型流程算法;
2.定时任务模块新增CRON常量类,定义常用表达式;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 60198d1e
...@@ -7,6 +7,9 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; ...@@ -7,6 +7,9 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod; import com.github.pagehelper.page.PageMethod;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import pps.cloud.space.service.ISpaceInstitutionDetailCloudService;
import pps.cloud.system.service.SysOrganizationCloudService;
import pps.cloud.system.service.data.*;
import pps.core.base.entity.*; import pps.core.base.entity.*;
import pps.core.base.enums.BusinessError; import pps.core.base.enums.BusinessError;
import pps.core.base.mapper.*; import pps.core.base.mapper.*;
...@@ -36,10 +39,7 @@ import xstartup.feature.api.annotation.XApiGet; ...@@ -36,10 +39,7 @@ import xstartup.feature.api.annotation.XApiGet;
import xstartup.feature.api.annotation.XApiPost; import xstartup.feature.api.annotation.XApiPost;
import xstartup.helper.XTransactionHelper; import xstartup.helper.XTransactionHelper;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -142,7 +142,7 @@ public class BasePowerLineService { ...@@ -142,7 +142,7 @@ public class BasePowerLineService {
@XText("输电线路配置--删除") @XText("输电线路配置--删除")
public XServiceResult deleteBasePowerLine(XContext context, DeleteBasePowerLineInput input) { public XServiceResult deleteBasePowerLine(XContext context, DeleteBasePowerLineInput input) {
String lineId = input.getId(); String lineId = input.getId();
if (ServiceUtil.checkLineIsReference(context, lineId)) { if (this.checkLineIsReference(context, lineId)) {
return XServiceResult.error(context, BusinessError.LineReference); return XServiceResult.error(context, BusinessError.LineReference);
} }
return XTransactionHelper.begin(context, () -> { return XTransactionHelper.begin(context, () -> {
...@@ -252,7 +252,7 @@ public class BasePowerLineService { ...@@ -252,7 +252,7 @@ public class BasePowerLineService {
output.setLineTypeName( output.setLineTypeName(
lineTypeMap.get(output.getLineTypeKey()) lineTypeMap.get(output.getLineTypeKey())
); );
output.setOuName(ServiceUtil.getSysOrgNameById(context, output.getOuId())); output.setOuName(this.getSysOrgNameById(context, output.getOuId()));
return XSingleResult.success(output); return XSingleResult.success(output);
} }
...@@ -270,12 +270,12 @@ public class BasePowerLineService { ...@@ -270,12 +270,12 @@ public class BasePowerLineService {
BasePowerLineViewMapper mapper = context.getBean(BasePowerLineViewMapper.class); BasePowerLineViewMapper mapper = context.getBean(BasePowerLineViewMapper.class);
BasePowerLineView lineView = XCopyUtils.copyNewObject(input, BasePowerLineView.class); BasePowerLineView lineView = XCopyUtils.copyNewObject(input, BasePowerLineView.class);
PageMethod.startPage(input.getPage(), input.getLimit()); PageMethod.startPage(input.getPage(), input.getLimit());
lineView.setOuList(ServiceUtil.getOrgIdsByPath(context, lineView.getOuId())); lineView.setOuList(this.getOrgIdsByPath(context, lineView.getOuId()));
List<BasePowerLineView> list = mapper.selectList(lineView); List<BasePowerLineView> list = mapper.selectList(lineView);
PageInfo<BasePowerLineView> pageInfo = new PageInfo<>(list); PageInfo<BasePowerLineView> pageInfo = new PageInfo<>(list);
List<QueryBasePowerLineViewOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QueryBasePowerLineViewOutput.class); List<QueryBasePowerLineViewOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QueryBasePowerLineViewOutput.class);
if (CollUtil.isNotEmpty(outputs)) { if (CollUtil.isNotEmpty(outputs)) {
Map<String, String> ouMap = ServiceUtil.getOuMapByOuIds( Map<String, String> ouMap = this.getOuMapByOuIds(
context, context,
outputs.stream() outputs.stream()
.map(QueryBasePowerLineViewOutput::getOuId) .map(QueryBasePowerLineViewOutput::getOuId)
...@@ -367,6 +367,75 @@ public class BasePowerLineService { ...@@ -367,6 +367,75 @@ public class BasePowerLineService {
/*-----------------------------------private-----------------------------------*/ /*-----------------------------------private-----------------------------------*/
/**
* 检查线路是否被间开制度引用
*
* @param context 上下文
* @param lineId 线路id
* @return boolean
*/
private boolean checkLineIsReference(XContext context, String lineId) {
ISpaceInstitutionDetailCloudService contextBean = context.getBean(ISpaceInstitutionDetailCloudService.class);
XSingleResult<Long> result = contextBean.getInstitutionLineCountByLineId(context, lineId);
result.throwIfFail();
return result.getResult() > 0;
}
/**
* 通过组织id获取系统组织名称
*
* @param context 上下文
* @param ouId 组织id
* @return {@link String}
*/
private String getSysOrgNameById(XContext context, String ouId) {
SysOrganizationCloudService orgCloudService = context.getBean(SysOrganizationCloudService.class);
GetSysOrganizationViewInput viewInput = new GetSysOrganizationViewInput();
viewInput.setId(ouId);
XSingleResult<GetSysOrganizationViewOutput> organization = orgCloudService.getSysOrganizationById(context, viewInput);
organization.throwIfFail();
return Optional.ofNullable(organization.getResult())
.map(GetSysOrganizationViewOutput::getOuName)
.orElse(null);
}
/**
* 获取所有path包含组织ID的组织
*
* @param context 上下文
* @param ouId ou id
* @return {@link List}<{@link String}>
*/
private List<String> getOrgIdsByPath(XContext context, String ouId) {
SysOrganizationCloudService organizationCloudService = context.getBean(SysOrganizationCloudService.class);
GetAllOuListByOuIdInput ouIdInput = new GetAllOuListByOuIdInput();
ouIdInput.setOuId(ouId);
XListResult<GetSysOrganizationViewOutput> allListByOuId = organizationCloudService.getAllListByOuId(context, ouIdInput);
allListByOuId.throwIfFail();
return allListByOuId.getResult().stream()
.map(GetSysOrganizationViewOutput::getId)
.collect(Collectors.toList());
}
/**
* 通过组织机构ID集合获取详情列表
*
* @param context 上下文
* @param ouIds ou id
* @return {@link Map}<{@link String}, {@link String}>
*/
private Map<String, String> getOuMapByOuIds(XContext context, List<String> ouIds) {
GetOuListByOuIdsInput input = new GetOuListByOuIdsInput();
input.setOuIdList(ouIds);
SysOrganizationCloudService organizationCloudService = context.getBean(SysOrganizationCloudService.class);
XListResult<GetOuListTreeOutput> ouListByOuIds = organizationCloudService.getOuListByOuIds(context, input);
ouListByOuIds.throwIfFail();
return ouListByOuIds.getResult().stream()
.collect(Collectors.toMap(
GetOuListTreeOutput::getOuId, GetOuListTreeOutput::getOuName
));
}
/** /**
* 通过线路ID获取线路信息 * 通过线路ID获取线路信息
* *
......
...@@ -8,6 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; ...@@ -8,6 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod; import com.github.pagehelper.page.PageMethod;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import pps.cloud.system.service.SystemAreaService;
import pps.cloud.system.service.data.GetSysAreaInput;
import pps.cloud.system.service.data.GetSysAreaOutput;
import pps.core.base.entity.*; import pps.core.base.entity.*;
import pps.core.base.enums.BusinessError; import pps.core.base.enums.BusinessError;
import pps.core.base.mapper.*; import pps.core.base.mapper.*;
...@@ -260,7 +263,7 @@ public class BasePriceStrategyService { ...@@ -260,7 +263,7 @@ public class BasePriceStrategyService {
PageInfo<BasePriceStrategyView> pageInfo = new PageInfo<>(list); PageInfo<BasePriceStrategyView> pageInfo = new PageInfo<>(list);
List<QueryBasePriceStrategyViewOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QueryBasePriceStrategyViewOutput.class); List<QueryBasePriceStrategyViewOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QueryBasePriceStrategyViewOutput.class);
if (CollUtil.isNotEmpty(outputs)) { if (CollUtil.isNotEmpty(outputs)) {
Map<Integer, String> areaMap = ServiceUtil.getSysAreaMap(context); Map<Integer, String> areaMap = this.getSysAreaMap(context);
for (QueryBasePriceStrategyViewOutput output : outputs) { for (QueryBasePriceStrategyViewOutput output : outputs) {
output.setAreaName( output.setAreaName(
areaMap.get(output.getAreaCode()) areaMap.get(output.getAreaCode())
...@@ -318,6 +321,20 @@ public class BasePriceStrategyService { ...@@ -318,6 +321,20 @@ public class BasePriceStrategyService {
return count > 0; return count > 0;
} }
/**
* 获取区域Map
*
* @param context 上下文
* @return {@link Map}<{@link Integer}, {@link String}>
*/
private Map<Integer, String> getSysAreaMap(XContext context) {
SystemAreaService systemAreaService = context.getBean(SystemAreaService.class);
XListResult<GetSysAreaOutput> sysAreaList = systemAreaService.getSysAreaList(context, new GetSysAreaInput());
sysAreaList.throwIfFail();
return sysAreaList.getResult().stream()
.collect(Collectors.toMap(GetSysAreaOutput::getId, GetSysAreaOutput::getName));
}
/** /**
* 保存策略明细 * 保存策略明细
* *
......
package pps.core.base.utils; package pps.core.base.utils;
import com.baomidou.mybatisplus.core.enums.SqlMethod;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import pps.cloud.space.service.ISpaceInstitutionDetailCloudService;
import pps.cloud.system.service.SysOrganizationCloudService;
import pps.cloud.system.service.SystemAreaService;
import pps.cloud.system.service.SystemDictionaryService; import pps.cloud.system.service.SystemDictionaryService;
import pps.cloud.system.service.data.*; import pps.cloud.system.service.data.QuerySysDictionaryViewInput;
import pps.cloud.system.service.data.QuerySysDictionaryViewOutput;
import xstartup.base.XContext; import xstartup.base.XContext;
import xstartup.data.XListResult; import xstartup.data.XListResult;
import xstartup.data.XSingleResult;
import java.util.Collection;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -45,101 +37,4 @@ public class ServiceUtil { ...@@ -45,101 +37,4 @@ public class ServiceUtil {
return dictPageResult.getResult().stream() return dictPageResult.getResult().stream()
.collect(Collectors.toMap(QuerySysDictionaryViewOutput::getDicKey, QuerySysDictionaryViewOutput::getDicName)); .collect(Collectors.toMap(QuerySysDictionaryViewOutput::getDicKey, QuerySysDictionaryViewOutput::getDicName));
} }
/**
* 通过组织id获取系统组织名称
*
* @param context 上下文
* @param ouId 组织id
* @return {@link String}
*/
public static String getSysOrgNameById(XContext context, String ouId) {
SysOrganizationCloudService orgCloudService = context.getBean(SysOrganizationCloudService.class);
GetSysOrganizationViewInput viewInput = new GetSysOrganizationViewInput();
viewInput.setId(ouId);
XSingleResult<GetSysOrganizationViewOutput> organization = orgCloudService.getSysOrganizationById(context, viewInput);
organization.throwIfFail();
return Optional.ofNullable(organization.getResult())
.map(GetSysOrganizationViewOutput::getOuName)
.orElse(null);
}
/**
* 获取区域Map
*
* @param context 上下文
* @return {@link Map}<{@link Integer}, {@link String}>
*/
public static Map<Integer, String> getSysAreaMap(XContext context) {
SystemAreaService systemAreaService = context.getBean(SystemAreaService.class);
XListResult<GetSysAreaOutput> sysAreaList = systemAreaService.getSysAreaList(context, new GetSysAreaInput());
sysAreaList.throwIfFail();
return sysAreaList.getResult().stream()
.collect(Collectors.toMap(GetSysAreaOutput::getId, GetSysAreaOutput::getName));
}
/**
* 获取所有path包含组织ID的组织
*
* @param context 上下文
* @param ouId ou id
* @return {@link List}<{@link String}>
*/
public static List<String> getOrgIdsByPath(XContext context, String ouId) {
SysOrganizationCloudService organizationCloudService = context.getBean(SysOrganizationCloudService.class);
GetAllOuListByOuIdInput ouIdInput = new GetAllOuListByOuIdInput();
ouIdInput.setOuId(ouId);
XListResult<GetSysOrganizationViewOutput> allListByOuId = organizationCloudService.getAllListByOuId(context, ouIdInput);
allListByOuId.throwIfFail();
return allListByOuId.getResult().stream()
.map(GetSysOrganizationViewOutput::getId)
.collect(Collectors.toList());
}
/**
* 通过组织机构ID集合获取详情列表
*
* @param context 上下文
* @param ouIds ou id
* @return {@link Map}<{@link String}, {@link String}>
*/
public static Map<String, String> getOuMapByOuIds(XContext context, List<String> ouIds) {
GetOuListByOuIdsInput input = new GetOuListByOuIdsInput();
input.setOuIdList(ouIds);
SysOrganizationCloudService organizationCloudService = context.getBean(SysOrganizationCloudService.class);
XListResult<GetOuListTreeOutput> ouListByOuIds = organizationCloudService.getOuListByOuIds(context, input);
ouListByOuIds.throwIfFail();
return ouListByOuIds.getResult().stream()
.collect(Collectors.toMap(
GetOuListTreeOutput::getOuId, GetOuListTreeOutput::getOuName
));
}
/**
* 检查线路是否被间开制度引用
*
* @param context 上下文
* @param lineId 线路id
* @return boolean
*/
public static boolean checkLineIsReference(XContext context, String lineId) {
ISpaceInstitutionDetailCloudService contextBean = context.getBean(ISpaceInstitutionDetailCloudService.class);
XSingleResult<Long> result = contextBean.getInstitutionLineCountByLineId(context, lineId);
result.throwIfFail();
return result.getResult() > 0;
}
/**
* 批量插入
*
* @param mapper 映射器
* @param entityClass 实体类
* @param list 列表
*/
public static <E> void batchInsert(Class<?> mapper, Class<?> entityClass, Collection<E> list) {
String sqlStatement = SqlHelper.getSqlStatement(mapper, SqlMethod.INSERT_ONE);
SqlHelper.executeBatch(entityClass, null, list, 1000, (sqlSession, ent) -> {
sqlSession.insert(sqlStatement, ent);
});
}
} }
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment