Commit 8dc5f3a8 authored by ZWT's avatar ZWT

feat(零碳): 长庆

1.添加easy excel配置,增加转换器,增加全局excel导出样式,增加场站下拉选解析器;
2.开发光伏电站模板导出接口,增加模板导出类,并完成接口冒烟测试及接口文档;
3.间开制度管理模块新增设为基础制度开关接口,添加线上接口文档并完成接口冒烟测试;
4.开发井口配置模板导出接口,增加模板导出类,并完成接口冒烟测试及接口文档;
5.开发第三方有功功率历史数据导入接口,增加模板配置类,添加线上接口文档并完成接口冒烟测试;
6.开发给长庆使用的获取第三方认证token接口,验证获取token后是否能正常跳转指定页面,创建长庆用演示用户及角色;
7.开发柴发设备配置模板导出接口,增加模板导出类,并完成接口冒烟测试及接口文档;
8.开发储能设备配置模板导出接口,增加模板导出类,并完成接口冒烟测试及接口文档;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 0b651150
......@@ -32,4 +32,7 @@ public class GetSysDictionaryViewOutput {
@XText("0为系统字典,1应用字典")
private Integer dicType;
@XText("字典编码")
private String dicKey;
}
......@@ -3,12 +3,11 @@ package pps.core.base.excel;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.text.CharSequenceUtil;
import pps.cloud.system.service.SystemDictionaryService;
import pps.cloud.system.service.data.sys_dictionary.GetSysDictionaryViewInput;
import pps.cloud.system.service.data.sys_dictionary.GetSysDictionaryViewOutput;
import pps.core.base.utils.ServiceUtil;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.excel.config.ExcelDynamicSelect;
import xstartup.base.XSelfServiceContext;
import xstartup.data.XListResult;
import java.util.List;
import java.util.stream.Collectors;
......@@ -24,12 +23,7 @@ public class RunTypeImpl implements ExcelDynamicSelect {
@Override
public String[] getSource() {
XSelfServiceContext build = XSelfServiceContext.build(SystemDictionaryService.class);
SystemDictionaryService bean = build.getBean(SystemDictionaryService.class);
XListResult<GetSysDictionaryViewOutput> result = bean.querySysDictionaryByParam(build, GetSysDictionaryViewInput.builder()
.alias(BusinessConstant.RUN_TYPE)
.build());
result.throwIfFail();
List<GetSysDictionaryViewOutput> list = result.getResult();
List<GetSysDictionaryViewOutput> list = ServiceUtil.getDictionaryList(build, BusinessConstant.RUN_TYPE);
if (CollUtil.isNotEmpty(list)) {
return CharSequenceUtil.splitToArray(list.stream()
.map(GetSysDictionaryViewOutput::getDicName)
......
......@@ -9,18 +9,24 @@ import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import pps.cloud.system.service.data.sys_area.QuerySysAreaOutput;
import pps.cloud.system.service.data.sys_dictionary.GetSysDictionaryViewOutput;
import pps.cloud.system.service.data.sys_organization.GetSysOrganizationViewOutput;
import pps.core.base.entity.BasePhotovoltaicPlantEnt;
import pps.core.base.entity.BasePhotovoltaicPlantView;
import pps.core.base.entity.BaseWellheadEnt;
import pps.core.base.entity.BaseWellheadView;
import pps.core.base.enums.BusinessError;
import pps.core.base.mapper.BasePhotovoltaicPlantMapper;
import pps.core.base.mapper.BasePhotovoltaicPlantViewMapper;
import pps.core.base.mapper.BaseWellheadMapper;
import pps.core.base.mapper.BaseWellheadViewMapper;
import pps.core.base.service.data.base_excel.ExcelDieselGeneratorTemplate;
import pps.core.base.service.data.base_excel.ExcelEnergyStorageDeviceTemplate;
import pps.core.base.service.data.base_excel.ExcelPhotovoltaicPlantTemplate;
import pps.core.base.service.data.base_excel.ExcelWellheadTemplate;
import pps.core.base.service.data.excel.ImportExcelInput;
import pps.core.base.utils.ServiceUtil;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.entity.BaseModel;
import pps.core.common.excel.config.CascadeWriteHandler;
import pps.core.common.excel.listener.ExcelListener;
......@@ -170,23 +176,23 @@ public class ExcelService {
* @return {@link XServiceResult }
*/
@XText("光伏电站配置导入")
@XApiUpload(anonymous = true)
@XApiUpload
public XServiceResult importPhotovoltaicPlant(XContext context, ImportExcelInput input) {
List<ExcelPhotovoltaicPlantTemplate> list = this.getExcelDataAndCheck(input.getFile(), ExcelPhotovoltaicPlantTemplate.class, "电站名称", ExcelPhotovoltaicPlantTemplate::getStationName);
List<ExcelPhotovoltaicPlantTemplate> list = this.getExcelDataAndCheck(input.getFile(), ExcelPhotovoltaicPlantTemplate.class,
"电站名称", ExcelPhotovoltaicPlantTemplate::getStationName);
//整理各种字典数据
Map<String, String> ouMap = this.getPlantMap(context);
Map<String, Integer> city = ServiceUtil.getProvinceAndCityList(context, "陕西", "甘肃").stream()
.collect(Collectors.toMap(QuerySysAreaOutput::getCity, QuerySysAreaOutput::getId));
Map<String, String> ouMap = this.getPlantMap(context);
//封装并校验电站名称(校验电站名称是否重复,重复不导入),并插入数据
BasePhotovoltaicPlantMapper mapper = context.getBean(BasePhotovoltaicPlantMapper.class);
List<BasePhotovoltaicPlantEnt> plantEntList = mapper.selectList(new LambdaQueryWrapper<BasePhotovoltaicPlantEnt>()
Set<String> collect = context.getBean(BasePhotovoltaicPlantMapper.class)
.selectList(new LambdaQueryWrapper<BasePhotovoltaicPlantEnt>()
.eq(BaseModel::getIsDeleted, 1)
);
Set<String> collect = plantEntList.stream()
).stream()
.map(BasePhotovoltaicPlantEnt::getStationName)
.collect(Collectors.toSet());
StringBuilder stringBuilder = new StringBuilder();
List<BasePhotovoltaicPlantView> insertList = new ArrayList<>(plantEntList.size());
List<BasePhotovoltaicPlantView> insertList = new ArrayList<>(list.size());
int rowNum = 2;
for (ExcelPhotovoltaicPlantTemplate ent : list) {
//检查名称是否重复
......@@ -240,8 +246,57 @@ public class ExcelService {
@XText("井口配置导入")
@XApiUpload(anonymous = true)
public XServiceResult importWellhead(XContext context, ImportExcelInput input) {
// List<ExcelWellheadTemplate> list = this.getExcelDataAndCheck(input.getFile(), ExcelWellheadTemplate.class);
List<ExcelWellheadTemplate> list = this.getExcelDataAndCheck(input.getFile(), ExcelWellheadTemplate.class,
"井号", ExcelWellheadTemplate::getWellNumber);
//整理各种字典数据
Map<String, String> ouMap = this.getPlantMap(context);
Map<String, String> dictMap = ServiceUtil.getDictionaryList(context, BusinessConstant.RUN_TYPE).stream()
.collect(Collectors.toMap(GetSysDictionaryViewOutput::getDicName, GetSysDictionaryViewOutput::getDicKey));
//封装并校验井号(校验井号是否重复,重复不导入),并插入数据
Set<String> collect = context.getBean(BaseWellheadMapper.class)
.selectList(new LambdaQueryWrapper<BaseWellheadEnt>()
.eq(BaseModel::getIsDeleted, 1)
).stream()
.map(BaseWellheadEnt::getWellNumber)
.collect(Collectors.toSet());
StringBuilder stringBuilder = new StringBuilder();
List<BaseWellheadView> insertList = new ArrayList<>(list.size());
int rowNum = 2;
for (ExcelWellheadTemplate ent : list) {
//检查名称是否重复
if (collect.contains(ent.getWellNumber())) {
if (0 == stringBuilder.length()) {
stringBuilder.append("数据导入成功: ");
}
stringBuilder.append("第").append(rowNum).append("行,[井号重复]");
} else {
//数据封装
BaseWellheadView build = BaseWellheadView.builder()
.ouName(ent.getOuName())
.ouId(ouMap.get(ent.getOuName()))
.wellNumber(ent.getWellNumber())
.runTypeName(ent.getRunTypeName())
.runTypeKey(dictMap.get(ent.getRunTypeName()))
.serviceRating(new BigDecimal(ent.getServiceRating()))
.ratedPower(new BigDecimal(ent.getRatedPower()))
.build();
// BaseUtils.setBaseModelDefault(build, context.getSession(PpsUserSession.class));
build.setId(IdUtil.simpleUUID());
build.setIsDeleted(1);
insertList.add(build);
}
rowNum++;
}
return XTransactionHelper.begin(context, () -> {
if (CollUtil.isNotEmpty(insertList)) {
BaseWellheadViewMapper viewMapper = context.getBean(BaseWellheadViewMapper.class);
// viewMapper.batchInsertList(insertList);
}
if (stringBuilder.length() > 0) {
return XServiceResult.error(-1, stringBuilder.toString());
}
return XServiceResult.OK;
});
}
/**
......
......@@ -53,7 +53,7 @@ public class ExcelDieselGeneratorTemplate implements Serializable {
* 常用功率(KW)
*/
@NotBlank(message = "缺少常用功率")
@Min(value = 0, message = "常用功率为数字")
@Min(value = 0, message = "常用功率需大于0")
@ExcelProperty(index = 4, value = "常用功率(KW)")
private String normalPower;
......@@ -61,7 +61,7 @@ public class ExcelDieselGeneratorTemplate implements Serializable {
* 备用功率(KW)
*/
@NotBlank(message = "缺少备用功率")
@Min(value = 0, message = "备用功率为数字")
@Min(value = 0, message = "备用功率需大于0")
@ExcelProperty(index = 5, value = "备用功率(KW)")
private String standbyPower;
}
\ No newline at end of file
......@@ -53,7 +53,7 @@ public class ExcelEnergyStorageDeviceTemplate implements Serializable {
* 设备容量(KWh)
*/
@NotBlank(message = "缺少设备容量")
@Min(value = 0, message = "设备容量为数字")
@Min(value = 0, message = "设备容量需大于0")
@ExcelProperty(index = 4, value = "设备容量(KWh)")
private String apparatusCapacity;
......@@ -61,7 +61,7 @@ public class ExcelEnergyStorageDeviceTemplate implements Serializable {
* 额定放电功率(KW)
*/
@NotBlank(message = "缺少额定放电功率")
@Min(value = 0, message = "额定放电功率为数字")
@Min(value = 0, message = "额定放电功率需大于0")
@ExcelProperty(index = 5, value = "额定放电功率(KW)")
private String ratedDischargePower;
......@@ -69,7 +69,7 @@ public class ExcelEnergyStorageDeviceTemplate implements Serializable {
* 额定充电功率(KW)
*/
@NotBlank(message = "缺少额定充电功率")
@Min(value = 0, message = "额定充电功率为数字")
@Min(value = 0, message = "额定充电功率需大于0")
@ExcelProperty(index = 6, value = "额定充电功率(KW)")
private String ratedChargingPower;
......@@ -77,7 +77,7 @@ public class ExcelEnergyStorageDeviceTemplate implements Serializable {
* 额定放电深度(%)
*/
@NotBlank(message = "缺少额定放电深度")
@Min(value = 0, message = "额定放电深度为数字")
@Min(value = 0, message = "额定放电深度需大于0")
@ExcelProperty(index = 7, value = "额定放电深度(%)")
private String ratedDischargeDepth;
......@@ -85,7 +85,7 @@ public class ExcelEnergyStorageDeviceTemplate implements Serializable {
* 额定放电效率(%)
*/
@NotBlank(message = "缺少额定放电效率")
@Min(value = 0, message = "额定放电效率为数字")
@Min(value = 0, message = "额定放电效率需大于0")
@ExcelProperty(index = 8, value = "额定放电效率(%)")
private String ratedDischargeEfficiency;
}
\ No newline at end of file
......@@ -65,7 +65,7 @@ public class ExcelPhotovoltaicPlantTemplate implements Serializable {
* 安装倾角(°)
*/
@NotBlank(message = "缺少安装倾角")
@Min(value = 0, message = "安装倾角为数字")
@Min(value = 0, message = "安装倾角需大于0")
@ExcelProperty(index = 6, value = "安装倾角(°)")
private String mountingAngle;
......@@ -73,7 +73,7 @@ public class ExcelPhotovoltaicPlantTemplate implements Serializable {
* 装机总量(KWP)
*/
@NotBlank(message = "缺少装机总量")
@Min(value = 0, message = "装机总量为数字")
@Min(value = 0, message = "装机总量需大于0")
@ExcelProperty(index = 7, value = "装机总量(KWP)")
private String totalPower;
......@@ -81,7 +81,7 @@ public class ExcelPhotovoltaicPlantTemplate implements Serializable {
* 阵列朝向
*/
@NotBlank(message = "缺少阵列朝向")
@Min(value = 0, message = "阵列朝向为数字")
@Min(value = 0, message = "阵列朝向需大于0")
@ExcelProperty(index = 8, value = "阵列朝向")
private String arrayOrientation;
......@@ -89,7 +89,7 @@ public class ExcelPhotovoltaicPlantTemplate implements Serializable {
* 经度(°)
*/
@NotBlank(message = "缺少经度")
@Min(value = 0, message = "经度为数字")
@Min(value = 0, message = "经度需大于0")
@ExcelProperty(index = 9, value = "经度(°)")
private String longitude;
......@@ -97,7 +97,7 @@ public class ExcelPhotovoltaicPlantTemplate implements Serializable {
* 纬度(°)
*/
@NotBlank(message = "缺少纬度")
@Min(value = 0, message = "纬度为数字")
@Min(value = 0, message = "纬度需大于0")
@ExcelProperty(index = 10, value = "纬度(°)")
private String latitude;
......@@ -105,7 +105,7 @@ public class ExcelPhotovoltaicPlantTemplate implements Serializable {
* 高程(m)
*/
@NotBlank(message = "缺少高程")
@Min(value = 0, message = "高程为数字")
@Min(value = 0, message = "高程需大于0")
@ExcelProperty(index = 11, value = "高程(m)")
private String elevation;
}
\ No newline at end of file
......@@ -48,7 +48,7 @@ public class ExcelWellheadTemplate implements Serializable {
* 运行功率(KW)
*/
@NotBlank(message = "缺少运行功率")
@Min(value = 0, message = "运行功率为数字")
@Min(value = 0, message = "运行功率需大于0")
@ExcelProperty(index = 3, value = "运行功率(KW)")
private String serviceRating;
......@@ -56,7 +56,7 @@ public class ExcelWellheadTemplate implements Serializable {
* 额定功率(KW)
*/
@NotBlank(message = "缺少额定功率")
@Min(value = 0, message = "额定功率为数字")
@Min(value = 0, message = "额定功率需大于0")
@ExcelProperty(index = 4, value = "额定功率(KW)")
private String ratedPower;
}
\ No newline at end of file
......@@ -6,10 +6,13 @@ import pps.cloud.system.service.SystemAreaService;
import pps.cloud.system.service.SystemDictionaryService;
import pps.cloud.system.service.data.sys_area.QuerySysAreaInput;
import pps.cloud.system.service.data.sys_area.QuerySysAreaOutput;
import pps.cloud.system.service.data.sys_dictionary.GetSysDictionaryViewInput;
import pps.cloud.system.service.data.sys_dictionary.GetSysDictionaryViewOutput;
import pps.cloud.system.service.data.sys_dictionary.QuerySysDictionaryViewInput;
import pps.cloud.system.service.data.sys_dictionary.QuerySysDictionaryViewOutput;
import pps.cloud.system.service.data.sys_organization.GetAllOuListByOuIdInput;
import pps.cloud.system.service.data.sys_organization.GetSysOrganizationViewOutput;
import pps.core.common.constant.BusinessConstant;
import xstartup.base.XContext;
import xstartup.data.XListResult;
......@@ -92,4 +95,20 @@ public class ServiceUtil {
result.throwIfFail();
return result.getResult();
}
/**
* 获取字典列表
*
* @param context 上下文
* @param alias 别名
* @return {@link List }<{@link GetSysDictionaryViewOutput }>
*/
public static List<GetSysDictionaryViewOutput> getDictionaryList(XContext context, String alias) {
SystemDictionaryService bean = context.getBean(SystemDictionaryService.class);
XListResult<GetSysDictionaryViewOutput> result = bean.querySysDictionaryByParam(context, GetSysDictionaryViewInput.builder()
.alias(BusinessConstant.RUN_TYPE)
.build());
result.throwIfFail();
return result.getResult();
}
}
\ 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