feat(material-result): 新增获取各省份数据接口

This commit is contained in:
han0
2023-12-28 15:31:24 +08:00
parent 6b05baaa74
commit 841c41d8cd
11 changed files with 460 additions and 6 deletions

View File

@@ -0,0 +1,16 @@
package mjkf.xinke.main.dao;
import mjkf.xinke.main.model.db.DataFujian;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 福建数据 Mapper 接口
* </p>
*
* @author han0
* @since 2023-12-28
*/
public interface DataFujianMapper extends BaseMapper<DataFujian> {
}

View File

@@ -0,0 +1,16 @@
package mjkf.xinke.main.dao;
import mjkf.xinke.main.model.db.DataGuangdong;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 广东数据 Mapper 接口
* </p>
*
* @author han0
* @since 2023-12-28
*/
public interface DataGuangdongMapper extends BaseMapper<DataGuangdong> {
}

View File

@@ -0,0 +1,16 @@
package mjkf.xinke.main.dao;
import mjkf.xinke.main.model.db.DataZhejiang;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 浙江数据 Mapper 接口
* </p>
*
* @author han0
* @since 2023-12-28
*/
public interface DataZhejiangMapper extends BaseMapper<DataZhejiang> {
}

View File

@@ -0,0 +1,83 @@
package mjkf.xinke.main.model.db;
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 com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 福建数据
* </p>
*
* @author han0
* @since 2023-12-28
*/
@Getter
@Setter
@TableName("DATA_FUJIAN")
@ApiModel(value = "DataFujian对象", description = "福建数据")
public class DataFujian extends Model<DataFujian> {
private static final long serialVersionUID = 1L;
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("编码")
@TableField("`NUMBER`")
private String number;
@ApiModelProperty("名称")
@TableField("`NAME`")
private String name;
@ApiModelProperty("规格")
@TableField("SPEC")
private String spec;
@ApiModelProperty("单位")
@TableField("UNIT")
private String unit;
@ApiModelProperty("除价格")
@TableField("PRICE_WITHOUT_TAX")
private BigDecimal priceWithoutTax;
@ApiModelProperty("含税价")
@TableField("PRICE")
private BigDecimal price;
@ApiModelProperty("分类")
@TableField("CATEGORY")
private String category;
@ApiModelProperty("年份")
@TableField("`YEAR`")
private Integer year;
@ApiModelProperty("月份")
@TableField("`MONTH`")
private Integer month;
@ApiModelProperty("地市")
@TableField("CITY")
private String city;
@ApiModelProperty("日期")
@TableField("`DATE`")
private LocalDate date;
@Override
public Serializable pkVal() {
return this.id;
}
}

View File

@@ -0,0 +1,54 @@
package mjkf.xinke.main.model.db;
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 com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 广东数据
* </p>
*
* @author han0
* @since 2023-12-28
*/
@Getter
@Setter
@TableName("DATA_GUANGDONG")
@ApiModel(value = "DataGuangdong对象", description = "广东数据")
public class DataGuangdong extends Model<DataGuangdong> {
private static final long serialVersionUID = 1L;
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("下载地址")
@TableField("URL")
private String url;
@ApiModelProperty("名称")
@TableField("`NAME`")
private String name;
@ApiModelProperty("来源")
@TableField("`SOURCE`")
private String source;
@ApiModelProperty("日期")
@TableField("`DATE`")
private LocalDate date;
@Override
public Serializable pkVal() {
return this.id;
}
}

View File

@@ -0,0 +1,54 @@
package mjkf.xinke.main.model.db;
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 com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 浙江数据
* </p>
*
* @author han0
* @since 2023-12-28
*/
@Getter
@Setter
@TableName("DATA_ZHEJIANG")
@ApiModel(value = "DataZhejiang对象", description = "浙江数据")
public class DataZhejiang extends Model<DataZhejiang> {
private static final long serialVersionUID = 1L;
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("下载地址")
@TableField("URL")
private String url;
@ApiModelProperty("名称")
@TableField("`NAME`")
private String name;
@ApiModelProperty("来源")
@TableField("`SOURCE`")
private String source;
@ApiModelProperty("日期")
@TableField("`DATE`")
private LocalDate date;
@Override
public Serializable pkVal() {
return this.id;
}
}

View File

@@ -0,0 +1,70 @@
package mjkf.xinke.main.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import mjkf.xinke.main.model.db.DataFujian;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.Map;
@Service
public class DataFujianService extends DataService<BaseMapper<DataFujian>, DataFujian> {
public LambdaQueryWrapper<DataFujian> getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
LambdaQueryWrapper<DataFujian> query = new LambdaQueryWrapper<>();
if (keyWord != null) {
query.and(e -> e.like(DataFujian::getName, keyWord));
}
if (year != null) {
query.eq(DataFujian::getYear, year);
}
if (month != null) {
query.eq(DataFujian::getMonth, month);
}
if (name != null) {
query.like(DataFujian::getName, name);
}
if (materialId != null) {
// todo
// query.eq(SteelSection::getMaterialId, materialId);
}
return query;
}
public LambdaQueryWrapper<DataFujian> indexQuery(DataFujian data) {
LambdaQueryWrapper<DataFujian> query = new LambdaQueryWrapper<>();
query.eq(DataFujian::getYear, data.getYear());
query.eq(DataFujian::getMonth, data.getMonth());
query.eq(DataFujian::getCity, data.getCity());
query.eq(DataFujian::getName, data.getName());
query.eq(DataFujian::getSpec, data.getSpec());
return query;
}
public LambdaQueryWrapper<DataFujian> filterQuery(LambdaQueryWrapper<DataFujian> query) {
return query;
}
public DataFujian getMapGroupingBy(Map item) {
var o = new DataFujian();
o.setYear(Integer.valueOf(item.get("year").toString()));
o.setMonth(Integer.valueOf(item.get("month").toString()));
o.setCity(item.get("city").toString());
o.setName(item.get("name").toString());
o.setSpec(item.get("spec").toString());
return o;
}
public LambdaQueryWrapper<DataFujian> trendQuery(Object obj, Integer year, Integer month) {
var data = (DataFujian) obj;
LambdaQueryWrapper<DataFujian> query = new LambdaQueryWrapper<>();
query.eq(DataFujian::getName, data.getName());
var date = LocalDate.of(year, month, 1);
query.between(DataFujian::getDate, date, date.plusMonths(1));
return query;
}
}

View File

@@ -0,0 +1,68 @@
package mjkf.xinke.main.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import mjkf.xinke.main.model.db.DataGuangdong;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
@Service
public class DataGuangdongService extends DataService<BaseMapper<DataGuangdong>, DataGuangdong> {
public LambdaQueryWrapper<DataGuangdong> getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
LambdaQueryWrapper<DataGuangdong> query = new LambdaQueryWrapper<>();
if (keyWord != null) {
query.and(e -> e.like(DataGuangdong::getName, keyWord));
}
if (year != null) {
var date = LocalDate.of(year, month, 1);
query.between(DataGuangdong::getDate, date, date.plusYears(1));
}
if (month != null) {
var date = LocalDate.of(year, month, 1);
query.between(DataGuangdong::getDate, date, date.plusMonths(1));
}
if (name != null) {
query.like(DataGuangdong::getName, name);
}
if (materialId != null) {
// todo
// query.eq(SteelSection::getMaterialId, materialId);
}
return query;
}
public LambdaQueryWrapper<DataGuangdong> indexQuery(DataGuangdong data) {
LambdaQueryWrapper<DataGuangdong> query = new LambdaQueryWrapper<>();
query.eq(DataGuangdong::getName, data.getName());
query.eq(DataGuangdong::getDate, data.getDate());
return query;
}
public LambdaQueryWrapper<DataGuangdong> filterQuery(LambdaQueryWrapper<DataGuangdong> query) {
return query;
}
public DataGuangdong getMapGroupingBy(Map item) {
var o = new DataGuangdong();
o.setName(item.get("name").toString());
return o;
}
public LambdaQueryWrapper<DataGuangdong> trendQuery(Object obj, Integer year, Integer month) {
var data = (DataGuangdong) obj;
LambdaQueryWrapper<DataGuangdong> query = new LambdaQueryWrapper<>();
query.eq(DataGuangdong::getName, data.getName());
var date = LocalDate.of(year, month, 1);
query.between(DataGuangdong::getDate, date, date.plusMonths(1));
return query;
}
public List<Map<String, Object>> listStatistics(LambdaQueryWrapper<DataGuangdong> query) {
var data = (List<Map<String, Object>>) this.listMaps(query);
return data;
}
}

View File

@@ -28,6 +28,8 @@ public abstract class DataService<M extends BaseMapper<T>, T> extends ServiceImp
abstract LambdaQueryWrapper<T> filterQuery(LambdaQueryWrapper<T> query); abstract LambdaQueryWrapper<T> filterQuery(LambdaQueryWrapper<T> query);
abstract LambdaQueryWrapper<T> getQuery(String keyWord, Integer year, Integer month, String materialId, String name);
public List<T> saveOrUpdateByIndexBatch(List<Row> rows) throws Exception { public List<T> saveOrUpdateByIndexBatch(List<Row> rows) throws Exception {
var list = rows.stream().map(item -> { var list = rows.stream().map(item -> {
try { try {
@@ -81,7 +83,7 @@ public abstract class DataService<M extends BaseMapper<T>, T> extends ServiceImp
abstract public T getMapGroupingBy(Map item); abstract public T getMapGroupingBy(Map item);
public List<Map> listStatistics(LambdaQueryWrapper<T> query) { public List<Map<String, Object>> listStatistics(LambdaQueryWrapper<T> query) {
var data = (List<Map<String, Object>>) this.listMaps(query); var data = (List<Map<String, Object>>) this.listMaps(query);
var groupMap = data.stream().collect(Collectors.groupingBy(item->this.getMapGroupingBy(item), Collectors.toList())); var groupMap = data.stream().collect(Collectors.groupingBy(item->this.getMapGroupingBy(item), Collectors.toList()));

View File

@@ -0,0 +1,70 @@
package mjkf.xinke.main.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import mjkf.xinke.main.model.db.DataZhejiang;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
@Service
public class DataZhejiangService extends DataService<BaseMapper<DataZhejiang>, DataZhejiang>{
public LambdaQueryWrapper<DataZhejiang> getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
LambdaQueryWrapper<DataZhejiang> query = new LambdaQueryWrapper<>();
if (keyWord != null) {
query.and(e -> e.like(DataZhejiang::getName, keyWord));
}
if (year != null) {
var date = LocalDate.of(year, month, 1);
query.between(DataZhejiang::getDate, date, date.plusYears(1));
}
if (month != null) {
var date = LocalDate.of(year, month, 1);
query.between(DataZhejiang::getDate, date, date.plusMonths(1));
}
if (name != null) {
query.like(DataZhejiang::getName, name);
}
if (materialId != null) {
// todo
// query.eq(SteelSection::getMaterialId, materialId);
}
return query;
}
public LambdaQueryWrapper<DataZhejiang> indexQuery(DataZhejiang data) {
LambdaQueryWrapper<DataZhejiang> query = new LambdaQueryWrapper<>();
query.eq(DataZhejiang::getName, data.getName());
query.eq(DataZhejiang::getDate, data.getDate());
return query;
}
public LambdaQueryWrapper<DataZhejiang> filterQuery(LambdaQueryWrapper<DataZhejiang> query) {
return query;
}
public DataZhejiang getMapGroupingBy(Map item) {
var o = new DataZhejiang();
o.setName(item.get("name").toString());
return o;
}
public LambdaQueryWrapper<DataZhejiang> trendQuery(Object obj, Integer year, Integer month) {
var data = (DataZhejiang) obj;
LambdaQueryWrapper<DataZhejiang> query = new LambdaQueryWrapper<>();
query.eq(DataZhejiang::getName, data.getName());
var date = LocalDate.of(year, month, 1);
query.between(DataZhejiang::getDate, date, date.plusMonths(1));
return query;
}
public List<Map<String, Object>> listStatistics(LambdaQueryWrapper<DataZhejiang> query) {
var data = (List<Map<String, Object>>) this.listMaps(query);
return data;
}
}

View File

@@ -38,6 +38,12 @@ public class MaterialResultService {
OilService oilService; OilService oilService;
@Resource @Resource
LocalMaterialService localMaterialService; LocalMaterialService localMaterialService;
@Resource
DataZhejiangService dataZhejiangService;
@Resource
DataGuangdongService dataGuangdongService;
@Resource
DataFujianService dataFujianService;
/** /**
* 基础查询 * 基础查询
@@ -149,13 +155,13 @@ public class MaterialResultService {
} else if (type.equals(MaterialTaskType.FUJIAN_SURVEY)) { } else if (type.equals(MaterialTaskType.FUJIAN_SURVEY)) {
service = fujianSurveyService; service = fujianSurveyService;
} else if (type.equals(MaterialTaskType.OTHER_ZHEJIANG)) { } else if (type.equals(MaterialTaskType.OTHER_ZHEJIANG)) {
// service = otherZhejiangService; service = dataZhejiangService;
} else if (type.equals(MaterialTaskType.OTHER_GIANLZHOU)) { } else if (type.equals(MaterialTaskType.OTHER_GIANLZHOU)) {
// service = otherGianlzhouService; service = dataGuangdongService;
} else if (type.equals(MaterialTaskType.OTHER_YUNNAN)) { } else if (type.equals(MaterialTaskType.OTHER_YUNNAN)) {
// service = otherYunnanService; // service = dataYunnanService;
} else if (type.equals(MaterialTaskType.FUJIAN_DEPARTMENT)) { } else if (type.equals(MaterialTaskType.FUJIAN_DEPARTMENT)) {
// service = fujianDepartmentService; service = dataFujianService;
} else if (type.equals(MaterialTaskType.OIL)) { } else if (type.equals(MaterialTaskType.OIL)) {
service = oilService; service = oilService;
} else if (MaterialTaskType.isLocalMaterial(type)) { } else if (MaterialTaskType.isLocalMaterial(type)) {
@@ -166,7 +172,6 @@ public class MaterialResultService {
return service; return service;
} }
public <T> List<T> getTrend(Object data, Integer year, Integer month, Integer type) throws Exception{ public <T> List<T> getTrend(Object data, Integer year, Integer month, Integer type) throws Exception{
var service = this.getService(type); var service = this.getService(type);
Method trendQuery = service.getClass().getMethod("trendQuery", Object.class, Integer.class, Integer.class); Method trendQuery = service.getClass().getMethod("trendQuery", Object.class, Integer.class, Integer.class);