Commit 8aaef4c7 authored by tianchao's avatar tianchao

1.增加训练按钮

parent a3be1cb7
package pps.core.base.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@TableName("base_data_import_log")
public class BaseDataImportLogEnt implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
@XText("组织id")
@TableField
private String ouId;
@XText("线路id")
@TableField
private Integer lineId;
@XText("开始日期")
@TableField
private Date beginDate;
@XText("结束日期")
@TableField
private Date endDate;
@XText("创建时间")
@TableField
private Date createTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getOuId() {
return ouId;
}
public void setOuId(String ouId) {
this.ouId = ouId;
}
public Integer getLineId() {
return lineId;
}
public void setLineId(Integer lineId) {
this.lineId = lineId;
}
public Date getBeginDate() {
return beginDate;
}
public void setBeginDate(Date beginDate) {
this.beginDate = beginDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
package pps.core.base.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@TableName("base_model_val")
public class BaseModelValEnt implements Serializable {
@XText("实际数据")
@TableField
private String ytrue;
@XText("预测数据")
@TableField
private String ypred;
@TableField
private String mae;
@TableField
private String rmse;
@TableField
private String r2;
@XText("训练模式")
@TableField
private String keyname;
@XText("线路")
@TableField
private Integer lineId;
@TableField
private String stape;
@XText("开始时间")
@TableField
private String startime;
@XText("结束时间")
@TableField
private String endtime;
@TableField
private String taget;
@TableField
private String timecol;
@TableField
private String features;
@TableField
private String modelpath;
@TableField
private String paramkeys;
@XText("id")
@TableField
private BigDecimal id;
@XText("创建时间")
@TableField
private Date createtime;
public String getYtrue() {
return ytrue;
}
public void setYtrue(String ytrue) {
this.ytrue = ytrue;
}
public String getYpred() {
return ypred;
}
public void setYpred(String ypred) {
this.ypred = ypred;
}
public String getMae() {
return mae;
}
public void setMae(String mae) {
this.mae = mae;
}
public String getRmse() {
return rmse;
}
public void setRmse(String rmse) {
this.rmse = rmse;
}
public String getR2() {
return r2;
}
public void setR2(String r2) {
this.r2 = r2;
}
public String getKeyname() {
return keyname;
}
public void setKeyname(String keyname) {
this.keyname = keyname;
}
public Integer getLineId() {
return lineId;
}
public void setLineId(Integer lineId) {
this.lineId = lineId;
}
public String getStape() {
return stape;
}
public void setStape(String stape) {
this.stape = stape;
}
public String getStartime() {
return startime;
}
public void setStartime(String startime) {
this.startime = startime;
}
public String getEndtime() {
return endtime;
}
public void setEndtime(String endtime) {
this.endtime = endtime;
}
public String getTaget() {
return taget;
}
public void setTaget(String taget) {
this.taget = taget;
}
public String getTimecol() {
return timecol;
}
public void setTimecol(String timecol) {
this.timecol = timecol;
}
public String getFeatures() {
return features;
}
public void setFeatures(String features) {
this.features = features;
}
public String getModelpath() {
return modelpath;
}
public void setModelpath(String modelpath) {
this.modelpath = modelpath;
}
public String getParamkeys() {
return paramkeys;
}
public void setParamkeys(String paramkeys) {
this.paramkeys = paramkeys;
}
public BigDecimal getId() {
return id;
}
public void setId(BigDecimal id) {
this.id = id;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
}
package pps.core.base.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.base.entity.BaseDataEnt;
import pps.core.base.entity.BaseDataImportLogEnt;
@Repository(value="pps.core.base.mapper.BaseDataImportLogMapper")
public interface BaseDataImportLogMapper extends BaseMapper<BaseDataImportLogEnt> {
}
package pps.core.base.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.base.entity.BaseDataEnt;
import pps.core.base.entity.BaseModelValEnt;
@Repository(value="pps.core.base.mapper.BaseModelValMapper")
public interface BaseModelValMapper extends BaseMapper<BaseModelValEnt> {
}
package pps.core.base.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.util.CollectionUtils;
import pps.core.base.entity.BaseDataEnt;
import pps.core.base.entity.BaseDataImportLogEnt;
import pps.core.base.entity.BaseDataView;
import pps.core.base.entity.BaseModelValEnt;
import pps.core.base.enums.ImportFieldDic;
import pps.core.base.mapper.BaseDataImportLogMapper;
import pps.core.base.mapper.BaseDataMapper;
import pps.core.base.mapper.BaseDataViewMapper;
import pps.core.base.mapper.BaseModelValMapper;
import pps.core.base.service.data.base_data.*;
import pps.core.base.service.data.base_line.ImportFileInput;
import pps.core.base.utils.HttpUtils;
......@@ -92,7 +98,7 @@ public class BaseDataService {
@XApiAnonymous
@XApiGet
public XListResult<QueryBaseDataOutput> queryBaseData(XContext context, GetBaseDataInput input){
public XListResult<QueryBaseDataOutput> queryBaseDataCopy(XContext context, GetBaseDataInput input){
BaseDataMapper mapper = context.getBean(BaseDataMapper.class);
QueryWrapper<BaseDataEnt> queryWrapper = new QueryWrapper<>();
Date beginTime ;
......@@ -120,7 +126,7 @@ public class BaseDataService {
queryWrapper.lambda().eq(BaseDataEnt::getLineId, input.getLineId());
queryWrapper.lambda().orderByAsc(BaseDataEnt::getDataDate);
List<BaseDataEnt> list = mapper.selectList(queryWrapper);
CalcBaseDataInput calcBaseDataInput = new CalcBaseDataInput("" , input.getLineId() , "train_pre" , XDateUtils.getString(beginTime) , XDateUtils.getString(endTime));
CalcBaseDataInput calcBaseDataInput = new CalcBaseDataInput("" ,input.getKeyName() , input.getLineId() , "train_pre" , XDateUtils.getString(beginTime) , XDateUtils.getString(endTime));
Map<String , Object> map = getCalcData(context , calcBaseDataInput);
list.stream().forEach(item->{
String dataDate = XDateUtils.getString(item.getDataDate());
......@@ -133,6 +139,68 @@ public class BaseDataService {
return XListResult.success(outputs);
}
@XApiAnonymous
@XApiGet
public XListResult<QueryBaseDataOutput> queryBaseData(XContext context, GetBaseDataInput input){
BaseDataMapper mapper = context.getBean(BaseDataMapper.class);
QueryWrapper<BaseDataEnt> queryWrapper = new QueryWrapper<>();
BaseDataImportLogMapper logMapper = context.getBean(BaseDataImportLogMapper.class);
QueryWrapper<BaseDataImportLogEnt> logEntQueryWrapper = new QueryWrapper<>();
logEntQueryWrapper.lambda().eq(BaseDataImportLogEnt::getLineId , input.getLineId())
.orderByDesc(BaseDataImportLogEnt::getCreateTime)
.last(" limit 1");
BaseDataImportLogEnt ent = logMapper.selectOne(logEntQueryWrapper);
List<QueryBaseDataOutput> outputs = new ArrayList<>();
if(null != ent ){
queryWrapper.lambda().ge(BaseDataEnt::getDataDate, ent.getBeginDate());
queryWrapper.lambda().le(BaseDataEnt::getDataDate, ent.getEndDate());
queryWrapper.lambda().eq(BaseDataEnt::getLineId, input.getLineId());
queryWrapper.lambda().orderByAsc(BaseDataEnt::getDataDate);
List<BaseDataEnt> list = mapper.selectList(queryWrapper);
outputs = XCopyUtils.copyNewList(list , QueryBaseDataOutput.class);
}
return XListResult.success(outputs);
}
@XApiAnonymous
@XApiGet
@XText("获取预测数据")
public XListResult<GetBaseDataOutput> queryPreBaseData(XContext context, GetBaseDataInput input){
BaseDataImportLogMapper logMapper = context.getBean(BaseDataImportLogMapper.class);
QueryWrapper<BaseDataImportLogEnt> logEntQueryWrapper = new QueryWrapper<>();
logEntQueryWrapper.lambda().eq(BaseDataImportLogEnt::getLineId , input.getLineId())
.orderByDesc(BaseDataImportLogEnt::getCreateTime)
.last(" limit 1");
BaseDataImportLogEnt ent = logMapper.selectOne(logEntQueryWrapper);
List<GetBaseDataOutput> outputs = new ArrayList<>();
if(ent != null){
BaseDataMapper mapper = context.getBean(BaseDataMapper.class);
QueryWrapper<BaseDataEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().ge(BaseDataEnt::getDataDate, ent.getBeginDate());
queryWrapper.lambda().le(BaseDataEnt::getDataDate, ent.getEndDate());
queryWrapper.lambda().eq(BaseDataEnt::getLineId, input.getLineId());
queryWrapper.lambda().orderByAsc(BaseDataEnt::getDataDate);
List<BaseDataEnt> list = mapper.selectList(queryWrapper);
CalcBaseDataInput calcBaseDataInput = new CalcBaseDataInput("" ,input.getKeyName() , input.getLineId() , "train_pre" , XDateUtils.getString(ent.getBeginDate()), XDateUtils.getString(ent.getEndDate()));
Map<String , Object> map = getCalcData(context , calcBaseDataInput);
// for(String key : map.keySet()) {
// GetBaseDataOutput detailOutput = new GetBaseDataOutput();
// detailOutput.setDataDate(XDateUtils.parse(key));
// detailOutput.setPredictedPower(new BigDecimal(map.get(key).toString()));
// outputs.add(detailOutput);
// }
list.stream().forEach(item->{
String dataDate = XDateUtils.getString(item.getDataDate());
if(map.get(dataDate) != null &&
XStringUtils.isNotEmpty(map.get(dataDate).toString())){
item.setPredictedPower(new BigDecimal(map.get(dataDate).toString()));
}
});
outputs = XCopyUtils.copyNewList(list , GetBaseDataOutput.class);
}
return XListResult.success(outputs);
}
@XApiAnonymous
@XApiGet
public XPageResult<QueryBaseDataOutput> queryBaseDataList(XContext context, QueryBaseDataInput input){
......@@ -205,6 +273,14 @@ public class BaseDataService {
mapper.delete(queryWrapper);
BaseDataViewMapper viewMapper = context.getBean(BaseDataViewMapper.class);
viewMapper.batchInsert(dataList);
BaseDataImportLogMapper logMapper = context.getBean(BaseDataImportLogMapper.class);
BaseDataImportLogEnt ent = new BaseDataImportLogEnt();
ent.setOuId(input.getWellOuId());
ent.setLineId(input.getLineId());
ent.setBeginDate(minDate);
ent.setEndDate(maxDate);
ent.setCreateTime(new Date());
logMapper.insert(ent);
//进行训练
// CalcBaseDataInput calcBaseDataInput = new CalcBaseDataInput("" , input.getLineId() , "train_val" , XDateUtils.getString(minDate) , XDateUtils.getString(maxDate));
// doTrainData(context , calcBaseDataInput);
......@@ -231,7 +307,7 @@ public class BaseDataService {
return fieldList.stream().map(x->((String)x.get("col"))).collect(Collectors.toList());
}
@XText("预测算法训练")
@XText("获取预算")
@XApiGet
@XApiAnonymous
public XServiceResult calcBaseData(XContext context , CalcBaseDataInput calcBaseDataInput){
......@@ -266,24 +342,61 @@ public class BaseDataService {
@XApiAnonymous
@XApiPost
public XServiceResult trainBaseData(XContext context, GetBaseDataInput input){
Date beginTime ;
Date endTime ;
if(XStringUtils.isEmpty(input.getDataDate())){
beginTime = XDateUtils.getDayBeginTime(new Date());
endTime = XDateUtils.getDayEndTime(new Date());
}else{
if(input.getDataDate().contains("@")){
String[] dataDates = input.getDataDate().split("@");
beginTime = XDateUtils.getDayBeginTime(XDateUtils.parse(dataDates[0]));
endTime = XDateUtils.getDayEndTime(XDateUtils.parse(dataDates[1]));
}else {
beginTime = XDateUtils.getDayBeginTime(XDateUtils.parse(input.getDataDate()));
endTime = XDateUtils.getDayEndTime(XDateUtils.parse(input.getDataDate()));
@XText("预测算法训练")
public XServiceResult trainBaseData(XContext context, TrainBaseModelValInput input){
BaseDataImportLogMapper logMapper = context.getBean(BaseDataImportLogMapper.class);
QueryWrapper<BaseDataImportLogEnt> logEntQueryWrapper = new QueryWrapper<>();
logEntQueryWrapper.lambda().eq(BaseDataImportLogEnt::getLineId , input.getLineId())
.orderByDesc(BaseDataImportLogEnt::getCreateTime)
.last(" limit 1");
BaseDataImportLogEnt ent = logMapper.selectOne(logEntQueryWrapper);
if(ent == null)
return XServiceResult.OK;
if(!CollectionUtils.isEmpty(input.getKeyNames())){
for(String keyName : input.getKeyNames()){
CalcBaseDataInput calcBaseDataInput = new CalcBaseDataInput("" ,keyName , input.getLineId() , "train_val" ,XDateUtils.getString(ent.getBeginDate()) , XDateUtils.getString(ent.getEndDate()));
doTrainData(context , calcBaseDataInput);
}
}else {
CalcBaseDataInput calcBaseDataInput = new CalcBaseDataInput("" , input.getKeyName(), input.getLineId() , "train_val" , XDateUtils.getString(ent.getBeginDate()), XDateUtils.getString(ent.getEndDate()));
doTrainData(context , calcBaseDataInput);
}
CalcBaseDataInput calcBaseDataInput = new CalcBaseDataInput("" , input.getLineId() , "train_val" , XDateUtils.getString(beginTime) , XDateUtils.getString(endTime));
doTrainData(context , calcBaseDataInput);
return XServiceResult.OK;
}
@XApiAnonymous
@XApiGet
@XText("获取最新算法训练数据")
public XSingleResult<TrainBaseModelValOutput> getTrainBaseData(XContext context, GetTrainBaseModelValInput input){
BaseModelValMapper baseModelValMapper = context.getBean(BaseModelValMapper.class);
if(input.getLineId() == null)
return XSingleResult.error(500 , "请选择线路");
if(XStringUtils.isEmpty(input.getKeyNames()))
return XSingleResult.error(500 , "请选择模型");
QueryWrapper<BaseModelValEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(BaseModelValEnt::getLineId , input.getLineId())
.eq(BaseModelValEnt::getKeyname , input.getKeyNames())
.orderByDesc(BaseModelValEnt::getCreatetime).last(" limit 1");
BaseModelValEnt baseModelValEnt = baseModelValMapper.selectOne(queryWrapper);
TrainBaseModelValOutput output = XCopyUtils.copyNewObject(baseModelValEnt , TrainBaseModelValOutput.class);
if(baseModelValEnt != null && XStringUtils.isNotEmpty(output.getYtrue()) && XStringUtils.isNotEmpty(output.getYpred())){
Map<String , Object> ytrueMap = XJsonUtils.toMap(output.getYtrue().replace("\\",""));
Map<String , Object> yPreMap = XJsonUtils.toMap(output.getYpred().replace("\\",""));
List<TrainBaseModelValDetailOutput> list = new ArrayList<>();
for(String key : ytrueMap.keySet()){
TrainBaseModelValDetailOutput detailOutput = new TrainBaseModelValDetailOutput();
Date date = new Date(Long.valueOf(key));
detailOutput.setKey(XDateUtils.getString(date));
detailOutput.setPower(ytrueMap.get(key).toString());
if(yPreMap.get(key) != null)
detailOutput.setPredictedPower(yPreMap.get(key).toString());
list.add(detailOutput);
}
output.setList(list);
}else{
output = new TrainBaseModelValOutput();
}
return XSingleResult.success(output);
}
}
......@@ -16,9 +16,9 @@ public class CalcBaseDataInput {
public CalcBaseDataInput() {
}
public CalcBaseDataInput(String ou_id , Integer line_id, String stape, String startime, String endtime) {
public CalcBaseDataInput(String ou_id , String keyName , Integer line_id, String stape, String startime, String endtime) {
this.ou_id = ou_id;
this.keyName = "model_xgb";
this.keyName = keyName;
this.line_id = line_id;
this.stape = stape;
this.startime = startime;
......
......@@ -18,6 +18,8 @@ public class GetBaseDataInput {
@XText("日期")
private String dataDate;
private String keyName;
public Integer getId() {
return id;
}
......@@ -49,4 +51,12 @@ public class GetBaseDataInput {
public void setDataDate(String dataDate) {
this.dataDate = dataDate;
}
public String getKeyName() {
return keyName;
}
public void setKeyName(String keyName) {
this.keyName = keyName;
}
}
package pps.core.base.service.data.base_data;
import xstartup.annotation.XText;
import java.util.List;
public class GetTrainBaseModelValInput {
private Integer id;
private String keyNames;
@XText("组织id")
private String ouId;
@XText("线路id")
private Integer lineId;
@XText("日期")
private String dataDate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getOuId() {
return ouId;
}
public void setOuId(String ouId) {
this.ouId = ouId;
}
public Integer getLineId() {
return lineId;
}
public void setLineId(Integer lineId) {
this.lineId = lineId;
}
public String getDataDate() {
return dataDate;
}
public void setDataDate(String dataDate) {
this.dataDate = dataDate;
}
public String getKeyNames() {
return keyNames;
}
public void setKeyNames(String keyNames) {
this.keyNames = keyNames;
}
}
package pps.core.base.service.data.base_data;
import xstartup.annotation.XText;
import java.util.Date;
import java.util.List;
public class TrainBaseModelValDetailOutput {
private String key;
private String predictedPower;
private String power;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getPredictedPower() {
return predictedPower;
}
public void setPredictedPower(String predictedPower) {
this.predictedPower = predictedPower;
}
public String getPower() {
return power;
}
public void setPower(String power) {
this.power = power;
}
}
package pps.core.base.service.data.base_data;
import xstartup.annotation.XText;
import java.util.List;
public class TrainBaseModelValInput {
private Integer id;
private String keyName;
private List<String> keyNames;
@XText("组织id")
private String ouId;
@XText("线路id")
private Integer lineId;
@XText("日期")
private String dataDate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getOuId() {
return ouId;
}
public void setOuId(String ouId) {
this.ouId = ouId;
}
public Integer getLineId() {
return lineId;
}
public void setLineId(Integer lineId) {
this.lineId = lineId;
}
public String getDataDate() {
return dataDate;
}
public void setDataDate(String dataDate) {
this.dataDate = dataDate;
}
public List<String> getKeyNames() {
return keyNames;
}
public void setKeyNames(List<String> keyNames) {
this.keyNames = keyNames;
}
public String getKeyName() {
return keyName;
}
public void setKeyName(String keyName) {
this.keyName = keyName;
}
}
package pps.core.base.service.data.base_data;
import com.baomidou.mybatisplus.annotation.TableField;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
public class TrainBaseModelValOutput {
@XText("实际数据")
private String ytrue;
@XText("预测数据")
private String ypred;
@TableField
private String mae;
@TableField
private String rmse;
@TableField
private String r2;
@XText("训练模式")
private String keyname;
@XText("线路")
private Integer lineId;
private String stape;
@XText("开始时间")
private String startime;
@XText("结束时间")
private String endtime;
private String taget;
private String timecol;
private String features;
private String modelpath;
private String paramKeys;
@XText("id")
private BigDecimal id;
@XText("创建时间")
private Date createTime;
private List<TrainBaseModelValDetailOutput> list;
public String getYtrue() {
return ytrue;
}
public void setYtrue(String ytrue) {
this.ytrue = ytrue;
}
public String getYpred() {
return ypred;
}
public void setYpred(String ypred) {
this.ypred = ypred;
}
public String getMae() {
return mae;
}
public void setMae(String mae) {
this.mae = mae;
}
public String getRmse() {
return rmse;
}
public void setRmse(String rmse) {
this.rmse = rmse;
}
public String getR2() {
return r2;
}
public void setR2(String r2) {
this.r2 = r2;
}
public String getKeyname() {
return keyname;
}
public void setKeyname(String keyname) {
this.keyname = keyname;
}
public Integer getLineId() {
return lineId;
}
public void setLineId(Integer lineId) {
this.lineId = lineId;
}
public String getStape() {
return stape;
}
public void setStape(String stape) {
this.stape = stape;
}
public String getStartime() {
return startime;
}
public void setStartime(String startime) {
this.startime = startime;
}
public String getEndtime() {
return endtime;
}
public void setEndtime(String endtime) {
this.endtime = endtime;
}
public String getTaget() {
return taget;
}
public void setTaget(String taget) {
this.taget = taget;
}
public String getTimecol() {
return timecol;
}
public void setTimecol(String timecol) {
this.timecol = timecol;
}
public String getFeatures() {
return features;
}
public void setFeatures(String features) {
this.features = features;
}
public String getModelpath() {
return modelpath;
}
public void setModelpath(String modelpath) {
this.modelpath = modelpath;
}
public String getParamKeys() {
return paramKeys;
}
public void setParamKeys(String paramKeys) {
this.paramKeys = paramKeys;
}
public BigDecimal getId() {
return id;
}
public void setId(BigDecimal id) {
this.id = id;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public List<TrainBaseModelValDetailOutput> getList() {
return list;
}
public void setList(List<TrainBaseModelValDetailOutput> list) {
this.list = list;
}
}
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