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; ...@@ -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.GetSysAreaInput;
import pps.cloud.system.service.data.sys_area.GetSysAreaOutput; 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.XService;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
...@@ -34,4 +36,14 @@ public interface SystemAreaService { ...@@ -34,4 +36,14 @@ public interface SystemAreaService {
*/ */
@XText("地区Cloud服务-查询地区路径") @XText("地区Cloud服务-查询地区路径")
XSingleResult<GetSysAreaOutput> getSysAreaPath(XContext context, GetSysAreaInput input); 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; package pps.core.system.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
/**
* 系统区域视图
*
* @author ZWT
* @date 2024/05/09
*/
@Data
public class SysAreaView implements Serializable { public class SysAreaView implements Serializable {
@TableField @TableField
private Integer id; private Integer id;
...@@ -17,36 +25,15 @@ public class SysAreaView implements Serializable { ...@@ -17,36 +25,15 @@ public class SysAreaView implements Serializable {
@TableField @TableField
private Integer lev; private Integer lev;
public Integer getId() { /**
return this.id; * 省份
} */
@TableField(exist = false)
public void setId(Integer value) { private String province;
this.id = value;
} /**
* 城市
public String getName() { */
return this.name; @TableField(exist = false)
} private String city;
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;
}
} }
...@@ -28,4 +28,12 @@ public interface SysAreaViewMapper { ...@@ -28,4 +28,12 @@ public interface SysAreaViewMapper {
* @return {@link SysAreaView} * @return {@link SysAreaView}
*/ */
SysAreaView selectSysAreaPath(@Param(value = "id") Integer id); 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; ...@@ -5,6 +5,8 @@ import org.apache.commons.lang3.StringUtils;
import pps.cloud.system.service.SystemAreaService; import pps.cloud.system.service.SystemAreaService;
import pps.cloud.system.service.data.sys_area.GetSysAreaInput; 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.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.SysAreaEnt;
import pps.core.system.entity.SysAreaView; import pps.core.system.entity.SysAreaView;
import pps.core.system.mapper.SysAreaMapper; import pps.core.system.mapper.SysAreaMapper;
...@@ -66,4 +68,18 @@ public class SystemAreaServiceImpl implements SystemAreaService { ...@@ -66,4 +68,18 @@ public class SystemAreaServiceImpl implements SystemAreaService {
SysAreaView sysAreaView = mapper.selectSysAreaPath(input.getId()); SysAreaView sysAreaView = mapper.selectSysAreaPath(input.getId());
return XSingleResult.success(XCopyUtils.copyNewObject(sysAreaView, GetSysAreaOutput.class)); 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 @@ ...@@ -73,4 +73,24 @@
AND c.lev = 2 AND c.lev = 2
AND (b.id = #{id} OR c.id = #{id}) LIMIT 1 AND (b.id = #{id} OR c.id = #{id}) LIMIT 1
</select> </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> </mapper>
...@@ -6,16 +6,20 @@ import com.alibaba.excel.EasyExcelFactory; ...@@ -6,16 +6,20 @@ import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import pps.core.common.excel.CascadeWriteHandler; import pps.cloud.system.service.SystemAreaService;
import pps.core.common.excel.ExcelStyleTool; 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.service.data.base_excel.ExcelPhotovoltaicPlantTemplate;
import pps.core.base.utils.EasyExcelUtil; 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.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.data.XFileResult; import xstartup.data.XFileResult;
import xstartup.data.XFileType; import xstartup.data.XFileType;
import xstartup.data.XListResult;
import xstartup.feature.api.annotation.XApiGet; import xstartup.feature.api.annotation.XApiGet;
import java.io.File; import java.io.File;
...@@ -23,6 +27,7 @@ import java.util.ArrayList; ...@@ -23,6 +27,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* excel导入导出 * excel导入导出
...@@ -45,15 +50,25 @@ public class ExcelService { ...@@ -45,15 +50,25 @@ public class ExcelService {
public XFileResult templatePhotovoltaicPlant(XContext context) { public XFileResult templatePhotovoltaicPlant(XContext context) {
String fileSavePath = XStorageTool.getAbsolutePath("/temp/excel/光伏电站模板.xlsx"); String fileSavePath = XStorageTool.getAbsolutePath("/temp/excel/光伏电站模板.xlsx");
File file = FileUtil.touch(fileSavePath); 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<>(); List<String> provNameList = new ArrayList<>();
provNameList.add("浙江省"); for (String province : collect.keySet()) {
provNameList.add("广东省"); provNameList.add(province);
// 整理数据,放入一个Map中,mapkey存放父地点,value 存放该地点下的子区域 siteMap.put(province, collect.get(province).stream()
Map<String, List<String>> siteMap = new HashMap<>(); .map(QuerySysAreaOutput::getCity)
siteMap.put("浙江省", CollUtil.newArrayList("杭州市", "金华市", "宁波市")); .collect(Collectors.toList())
siteMap.put("广东省", CollUtil.newArrayList("广州市", "深圳市", "韶光市")); );
}
//生成模板
ExcelWriter excelWriter = EasyExcelFactory.write(file) ExcelWriter excelWriter = EasyExcelFactory.write(file)
.registerWriteHandler(ExcelStyleTool.getStyleStrategy()) .registerWriteHandler(ExcelStyleTool.getStyleStrategy())
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) .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