Commit d3ffe082 authored by ZWT's avatar ZWT

feat(零碳): 长庆

1.添加easy excel配置,增加转换器,增加全局excel导出样式,增加场站下拉选解析器;
2.开发光伏电站模板导出接口,增加模板导出类,并完成接口冒烟测试及接口文档;
3.间开制度管理模块新增设为基础制度开关接口,添加线上接口文档并完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent cc4c871c
......@@ -2,6 +2,8 @@ package pps.cloud.system.service;
import pps.cloud.system.service.data.sys_area.GetSysAreaInput;
import pps.cloud.system.service.data.sys_area.GetSysAreaOutput;
import pps.cloud.system.service.data.sys_area.QuerySysAreaInput;
import pps.cloud.system.service.data.sys_area.QuerySysAreaOutput;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
......@@ -34,4 +36,14 @@ public interface SystemAreaService {
*/
@XText("地区Cloud服务-查询地区路径")
XSingleResult<GetSysAreaOutput> getSysAreaPath(XContext context, GetSysAreaInput input);
/**
* 获取省和市
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult}<{@link QuerySysAreaOutput}>
*/
@XText("地区Cloud服务-查询地区路径")
XListResult<QuerySysAreaOutput> getProvinceAndCity(XContext context, QuerySysAreaInput input);
}
package pps.cloud.system.service.data.sys_area;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 查询系统区域输出
*
* @author ZWT
* @date 2024/05/09
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class QuerySysAreaInput {
/**
* 省份列表
*/
private List<String> provinceList;
}
package pps.cloud.system.service.data.sys_area;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 查询系统区域输出
*
* @author ZWT
* @date 2024/05/09
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class QuerySysAreaOutput {
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
}
package pps.core.system.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.io.Serializable;
/**
* 系统区域视图
*
* @author ZWT
* @date 2024/05/09
*/
@Data
public class SysAreaView implements Serializable {
@TableField
private Integer id;
......@@ -17,36 +25,15 @@ public class SysAreaView implements Serializable {
@TableField
private Integer lev;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getName() {
return this.name;
}
public void setName(String value) {
this.name = value;
}
public Integer getParentId() {
return this.parentId;
}
public void setParentId(Integer value) {
this.parentId = value;
}
public Integer getLev() {
return this.lev;
}
public void setLev(Integer value) {
this.lev = value;
}
/**
* 省份
*/
@TableField(exist = false)
private String province;
/**
* 城市
*/
@TableField(exist = false)
private String city;
}
......@@ -28,4 +28,12 @@ public interface SysAreaViewMapper {
* @return {@link SysAreaView}
*/
SysAreaView selectSysAreaPath(@Param(value = "id") Integer id);
/**
* 选择省和市
*
* @param list 省列表
* @return {@link List}<{@link SysAreaView}>
*/
List<SysAreaView> selectProvinceAndCity(@Param(value = "list") List<String> list);
}
......@@ -5,6 +5,8 @@ import org.apache.commons.lang3.StringUtils;
import pps.cloud.system.service.SystemAreaService;
import pps.cloud.system.service.data.sys_area.GetSysAreaInput;
import pps.cloud.system.service.data.sys_area.GetSysAreaOutput;
import pps.cloud.system.service.data.sys_area.QuerySysAreaInput;
import pps.cloud.system.service.data.sys_area.QuerySysAreaOutput;
import pps.core.system.entity.SysAreaEnt;
import pps.core.system.entity.SysAreaView;
import pps.core.system.mapper.SysAreaMapper;
......@@ -66,4 +68,18 @@ public class SystemAreaServiceImpl implements SystemAreaService {
SysAreaView sysAreaView = mapper.selectSysAreaPath(input.getId());
return XSingleResult.success(XCopyUtils.copyNewObject(sysAreaView, GetSysAreaOutput.class));
}
/**
* 获取省和市
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult}<{@link QuerySysAreaOutput}>
*/
@Override
public XListResult<QuerySysAreaOutput> getProvinceAndCity(XContext context, QuerySysAreaInput input) {
SysAreaViewMapper mapper = context.getBean(SysAreaViewMapper.class);
List<SysAreaView> viewList = mapper.selectProvinceAndCity(input.getProvinceList());
return XListResult.success(XCopyUtils.copyNewList(viewList, QuerySysAreaOutput.class));
}
}
\ No newline at end of file
......@@ -73,4 +73,24 @@
AND c.lev = 2
AND (b.id = #{id} OR c.id = #{id}) LIMIT 1
</select>
<resultMap id="ExtResultMap" type="pps.core.system.entity.SysAreaView" extends="BaseResultMap">
<result column="province" property="province" jdbcType="VARCHAR"/>
<result column="city" property="city" jdbcType="VARCHAR"/>
</resultMap>
<select id="selectProvinceAndCity" parameterType="list" resultMap="ExtResultMap">
SELECT p.`name` AS province,
a.`name` AS city
FROM sys_area p
LEFT JOIN sys_area a ON p.id = a.parent_id
WHERE p.`name` IN
<foreach collection="list" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND a.`name` != '无'
ORDER BY
p.id,
a.id
</select>
</mapper>
......@@ -6,16 +6,20 @@ import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import pps.core.common.excel.CascadeWriteHandler;
import pps.core.common.excel.ExcelStyleTool;
import pps.cloud.system.service.SystemAreaService;
import pps.cloud.system.service.data.sys_area.QuerySysAreaInput;
import pps.cloud.system.service.data.sys_area.QuerySysAreaOutput;
import pps.core.base.service.data.base_excel.ExcelPhotovoltaicPlantTemplate;
import pps.core.base.utils.EasyExcelUtil;
import pps.core.common.excel.CascadeWriteHandler;
import pps.core.common.excel.ExcelStyleTool;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.tool.XStorageTool;
import xstartup.data.XFileResult;
import xstartup.data.XFileType;
import xstartup.data.XListResult;
import xstartup.feature.api.annotation.XApiGet;
import java.io.File;
......@@ -23,6 +27,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* excel导入导出
......@@ -45,15 +50,25 @@ public class ExcelService {
public XFileResult templatePhotovoltaicPlant(XContext context) {
String fileSavePath = XStorageTool.getAbsolutePath("/temp/excel/光伏电站模板.xlsx");
File file = FileUtil.touch(fileSavePath);
// 准备要写出的数据(这里可以从数据库中查询出来后再进行)
// 查询所有的省名称
//查地区列表
SystemAreaService bean = context.getBean(SystemAreaService.class);
XListResult<QuerySysAreaOutput> result = bean.getProvinceAndCity(context, QuerySysAreaInput.builder()
.provinceList(CollUtil.toList("陕西", "甘肃"))
.build());
result.throwIfFail();
Map<String, List<QuerySysAreaOutput>> collect = result.getResult().stream()
.collect(Collectors.groupingBy(QuerySysAreaOutput::getProvince));
//整理数据,放入一个Map中,mapkey存放父地点,value 存放该地点下的子区域
Map<String, List<String>> siteMap = new HashMap<>(collect.size());
List<String> provNameList = new ArrayList<>();
provNameList.add("浙江省");
provNameList.add("广东省");
// 整理数据,放入一个Map中,mapkey存放父地点,value 存放该地点下的子区域
Map<String, List<String>> siteMap = new HashMap<>();
siteMap.put("浙江省", CollUtil.newArrayList("杭州市", "金华市", "宁波市"));
siteMap.put("广东省", CollUtil.newArrayList("广州市", "深圳市", "韶光市"));
for (String province : collect.keySet()) {
provNameList.add(province);
siteMap.put(province, collect.get(province).stream()
.map(QuerySysAreaOutput::getCity)
.collect(Collectors.toList())
);
}
//生成模板
ExcelWriter excelWriter = EasyExcelFactory.write(file)
.registerWriteHandler(ExcelStyleTool.getStyleStrategy())
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
......
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