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;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod;
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.enums.BusinessError;
import pps.core.base.mapper.*;
......@@ -36,10 +39,7 @@ import xstartup.feature.api.annotation.XApiGet;
import xstartup.feature.api.annotation.XApiPost;
import xstartup.helper.XTransactionHelper;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -142,7 +142,7 @@ public class BasePowerLineService {
@XText("输电线路配置--删除")
public XServiceResult deleteBasePowerLine(XContext context, DeleteBasePowerLineInput input) {
String lineId = input.getId();
if (ServiceUtil.checkLineIsReference(context, lineId)) {
if (this.checkLineIsReference(context, lineId)) {
return XServiceResult.error(context, BusinessError.LineReference);
}
return XTransactionHelper.begin(context, () -> {
......@@ -252,7 +252,7 @@ public class BasePowerLineService {
output.setLineTypeName(
lineTypeMap.get(output.getLineTypeKey())
);
output.setOuName(ServiceUtil.getSysOrgNameById(context, output.getOuId()));
output.setOuName(this.getSysOrgNameById(context, output.getOuId()));
return XSingleResult.success(output);
}
......@@ -270,12 +270,12 @@ public class BasePowerLineService {
BasePowerLineViewMapper mapper = context.getBean(BasePowerLineViewMapper.class);
BasePowerLineView lineView = XCopyUtils.copyNewObject(input, BasePowerLineView.class);
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);
PageInfo<BasePowerLineView> pageInfo = new PageInfo<>(list);
List<QueryBasePowerLineViewOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QueryBasePowerLineViewOutput.class);
if (CollUtil.isNotEmpty(outputs)) {
Map<String, String> ouMap = ServiceUtil.getOuMapByOuIds(
Map<String, String> ouMap = this.getOuMapByOuIds(
context,
outputs.stream()
.map(QueryBasePowerLineViewOutput::getOuId)
......@@ -367,6 +367,75 @@ public class BasePowerLineService {
/*-----------------------------------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获取线路信息
*
......
......@@ -8,6 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod;
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.enums.BusinessError;
import pps.core.base.mapper.*;
......@@ -260,7 +263,7 @@ public class BasePriceStrategyService {
PageInfo<BasePriceStrategyView> pageInfo = new PageInfo<>(list);
List<QueryBasePriceStrategyViewOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QueryBasePriceStrategyViewOutput.class);
if (CollUtil.isNotEmpty(outputs)) {
Map<Integer, String> areaMap = ServiceUtil.getSysAreaMap(context);
Map<Integer, String> areaMap = this.getSysAreaMap(context);
for (QueryBasePriceStrategyViewOutput output : outputs) {
output.setAreaName(
areaMap.get(output.getAreaCode())
......@@ -318,6 +321,20 @@ public class BasePriceStrategyService {
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;
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.data.*;
import pps.cloud.system.service.data.QuerySysDictionaryViewInput;
import pps.cloud.system.service.data.QuerySysDictionaryViewOutput;
import xstartup.base.XContext;
import xstartup.data.XListResult;
import xstartup.data.XSingleResult;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/**
......@@ -45,101 +37,4 @@ public class ServiceUtil {
return dictPageResult.getResult().stream()
.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