Commit 37824bee authored by lixueyan's avatar lixueyan

导入导出的实现

parent 166a6e7a
......@@ -27,10 +27,6 @@ public class BaseDataEnt implements Serializable {
@TableField
private Date dataDate;
@XText("时间")
@TableField
private Time dataTime;
@XText("风速")
@TableField
private BigDecimal windSpeed;
......@@ -99,14 +95,6 @@ public class BaseDataEnt implements Serializable {
this.dataDate = value;
}
public Time getDataTime() {
return this.dataTime;
}
public void setDataTime(Time value) {
this.dataTime = value;
}
public BigDecimal getWindSpeed() {
return this.windSpeed;
}
......
......@@ -23,10 +23,6 @@ public class BaseDataView implements Serializable {
@TableField
private Date dataDate;
@XText("时间")
@TableField
private Time dataTime;
@XText("风速")
@TableField
private BigDecimal windSpeed;
......@@ -95,14 +91,6 @@ public class BaseDataView implements Serializable {
this.dataDate = value;
}
public Time getDataTime() {
return this.dataTime;
}
public void setDataTime(Time value) {
this.dataTime = value;
}
public BigDecimal getWindSpeed() {
return this.windSpeed;
}
......
package pps.core.base.enums;
public enum ImportFieldDic {
dataDate("dataDate","日期",1),
windSpeed("windSpeed","风速",2),
windDirection("windDirection","风向",3),
temperature("temperature","温度",4),
pressure("pressure","压强",5),
humidity("humidity","湿度",6),
planeIrradiance("planeIrradiance","组件平面辐照度",7),
horizontalIrradiance("horizontalIrradiance","全水平辐照度",8),
power("power","实际功率",9),
;
ImportFieldDic(String col, String name, Integer sort) {
this.col = col;
this.name = name;
this.sort = sort;
}
private String col;
private String name;
private Integer sort;
public String getCol() {
return col;
}
public void setCol(String col) {
this.col = col;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public static ImportFieldDic findByValue(String col){
for(ImportFieldDic item : values()){
if(item.getCol().equals(col)){
return item;
}
}
return null;
}
}
......@@ -9,4 +9,6 @@ import java.util.List;
public interface BaseDataViewMapper {
BaseDataView selectOne(BaseDataView record);
List<BaseDataView> selectList(BaseDataView record);
void batchInsert(List<BaseDataView> dataList);
}
......@@ -3,25 +3,44 @@ package pps.core.base.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.util.CollectionUtils;
import pps.cloud.base.service.BaseBasePipelineService;
import pps.cloud.base.service.BaseBaseStationService;
import pps.cloud.base.service.data.BaseOuIdInput;
import pps.cloud.base.service.data.QueryBaseStationOutput;
import pps.cloud.base.service.data.base_pipeline.SelectPipelineByOperatorOutput;
import pps.cloud.system.service.SysOrganizationCloudService;
import pps.cloud.system.service.data.GetSysOrganizationViewOutput;
import pps.core.base.entity.BaseDataEnt;
import pps.core.base.entity.BaseDataView;
import pps.core.base.enums.ImportFieldDic;
import pps.core.base.mapper.BaseDataMapper;
import pps.core.base.mapper.BaseDataViewMapper;
import pps.core.base.service.data.base_data.*;
import pps.core.base.service.data.base_line.ImportFileInput;
import pps.core.common.session.PpsUserSession;
import pps.core.common.utils.ExcelTemplateUtils;
import pps.core.common.utils.ExcelUtils;
import pps.core.common.utils.ExportExcelUtils;
import pps.core.common.utils.MapUtil;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.data.CustomQueryInput;
import xstartup.base.tool.XStorageTool;
import xstartup.base.util.XCopyUtils;
import xstartup.data.XPageResult;
import xstartup.data.XServiceResult;
import xstartup.data.XSingleResult;
import xstartup.base.util.XDateUtils;
import xstartup.data.*;
import xstartup.error.XError;
import xstartup.feature.api.annotation.XApiAnonymous;
import xstartup.feature.api.annotation.XApiGet;
import xstartup.feature.api.annotation.XApiPost;
import xstartup.feature.api.annotation.XApiUpload;
import xstartup.feature.mybatis.helper.XMapperHelper;
import java.util.List;
import java.io.InputStream;
import java.util.*;
import java.util.stream.Collectors;
@XService
public class BaseDataService {
......@@ -96,4 +115,82 @@ public class BaseDataService {
BaseDataMapper mapper = context.getBean(BaseDataMapper.class);
return XMapperHelper.query(mapper, input, BaseDataEnt.class, QueryBaseDataOutput.class);
}
@XText("下载导入模板")
@XApiGet
public XFileResult downloadImportTemplate(XContext context){
String fileSavePath = XStorageTool.getAbsolutePath("/temp/excel/导入模板_" + XDateUtils.getString(new Date(),"yyyy-MM-dd") + ".xlsx");
String templateFilePath = "template/import_template.xlsx";
InputStream templateInputStream = this.getClass().getClassLoader().getResourceAsStream(templateFilePath);
byte[] excelContent = ExportExcelUtils.genSingleExcelFileData(templateInputStream, null);
try {
ExportExcelUtils.outputFileData(excelContent,fileSavePath);
} catch (Exception e) {
e.printStackTrace();
}
return XFileResult.success(XFileType.APPLICATION_XLSX, fileSavePath);
}
@XText("新增导入")
@XApiUpload
public XServiceResult importFile(XContext context, ImportFileInput input) {
List<String> headerList = getExcelHeaderList();
List<BaseDataView> list = new ArrayList<>();
List<Map<String, Object>> mapList = ExcelUtils.readExcel(input.getFile().getInputStream(), input.getFile().getFileName(), headerList, 0);
try {
List<BaseDataView> dataList = new ArrayList<>();
Date minDate = null;
Date maxDate = null;
for (Map<String, Object> objectMap : mapList) {
BaseDataView dataView = MapUtil.mapToObj(objectMap, BaseDataView.class);
dataView.setOuId(input.getOuId());
dataView.setLineId(input.getLineId());
if(dataView.getDataDate()!=null){
if(minDate==null){
minDate = dataView.getDataDate();
maxDate = dataView.getDataDate();
}
if(minDate.compareTo(dataView.getDataDate())>0){
minDate = dataView.getDataDate();
}else if(maxDate.compareTo(dataView.getDataDate())<0){
maxDate = dataView.getDataDate();
}
}
dataList.add(dataView);
}
if(minDate==null){
return XServiceResult.error(1000,"日期错误");
}
BaseDataMapper mapper = context.getBean(BaseDataMapper.class);
QueryWrapper<BaseDataEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(BaseDataEnt::getLineId,input.getLineId())
.ge(BaseDataEnt::getDataDate,minDate)
.le(BaseDataEnt::getDataDate,maxDate);
mapper.delete(queryWrapper);
BaseDataViewMapper viewMapper = context.getBean(BaseDataViewMapper.class);
viewMapper.batchInsert(dataList);
}catch (Exception e){
return XServiceResult.error(-1,e.getMessage());
}
return XServiceResult.OK;
}
private List<String> getExcelHeaderList(){
List<Map<String,Object>> fieldList = new ArrayList<>();
for (ImportFieldDic value : ImportFieldDic.values()) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("col",value.getCol());
map.put("sort",value.getSort());
fieldList.add(map);
}
fieldList.sort(new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
return ((Integer)o1.get("sort")).compareTo((Integer)o2.get("sort"));
}
});
return fieldList.stream().map(x->((String)x.get("col"))).collect(Collectors.toList());
}
}
package pps.core.base.service.data.base_line;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
import xstartup.data.XUploadFile;
/**
* @author lixueyan
* @date 2023/6/9 0009 9:45
*/
public class ImportFileInput {
@XText("上传的文件")
@NotNull
private XUploadFile file;
@XText("线路id")
@NotNull
private Integer lineId;
@XText("井场id")
@NotNull
private String ouId;
public XUploadFile getFile() {
return file;
}
public void setFile(XUploadFile file) {
this.file = file;
}
public Integer getLineId() {
return lineId;
}
public void setLineId(Integer lineId) {
this.lineId = lineId;
}
public String getOuId() {
return ouId;
}
public void setOuId(String ouId) {
this.ouId = ouId;
}
}
......@@ -6,7 +6,6 @@
<result column="ou_id" property="ouId" jdbcType="VARCHAR" />
<result column="line_id" property="lineId" jdbcType="INTEGER" />
<result column="data_date" property="dataDate" jdbcType="DATE" />
<result column="data_time" property="dataTime" jdbcType="TIME" />
<result column="wind_speed" property="windSpeed" jdbcType="DECIMAL" />
<result column="wind_direction" property="windDirection" jdbcType="DECIMAL" />
<result column="temperature" property="temperature" jdbcType="DECIMAL" />
......@@ -22,7 +21,6 @@
ou_id,
line_id,
data_date,
data_time,
wind_speed,
wind_direction,
temperature,
......@@ -33,6 +31,7 @@
power,
predicted_power
</sql>
<select id="selectOne" parameterType="pps.core.base.entity.BaseDataView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
......@@ -47,4 +46,37 @@
where
id=#{id}
</select>
<insert id="batchInsert">
insert into base_data(
ou_id,
line_id,
data_date,
wind_speed,
wind_direction,
temperature,
pressure,
humidity,
plane_Irradiance,
horizontal_Irradiance,
power,
predicted_power
) VALUES
<foreach collection ="list" item="item" separator =",">
(
#{item.ouId},
#{item.lineId},
#{item.dataDate},
#{item.windSpeed},
#{item.windDirection},
#{item.temperature},
#{item.pressure},
#{item.humidity},
#{item.planeIrradiance},
#{item.horizontalIrradiance},
#{item.power},
#{item.predictedPower}
)
</foreach>
</insert>
</mapper>
......@@ -58,11 +58,6 @@
<artifactId>huawei-gauss-db</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>gf</groupId>
<artifactId>pps-core-framedata</artifactId>
<version>${pps.version}</version>
</dependency>
<dependency>
<groupId>xstartup</groupId>
<artifactId>xstartup-toolkit-kafka</artifactId>
......
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