From 841c41d8cd024a347c8a4c99eda8de3b93b7e9ad Mon Sep 17 00:00:00 2001 From: han0 Date: Thu, 28 Dec 2023 15:31:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(material-result):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=90=84=E7=9C=81=E4=BB=BD=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mjkf/xinke/main/dao/DataFujianMapper.java | 16 ++++ .../xinke/main/dao/DataGuangdongMapper.java | 16 ++++ .../xinke/main/dao/DataZhejiangMapper.java | 16 ++++ .../mjkf/xinke/main/model/db/DataFujian.java | 83 +++++++++++++++++++ .../xinke/main/model/db/DataGuangdong.java | 54 ++++++++++++ .../xinke/main/model/db/DataZhejiang.java | 54 ++++++++++++ .../xinke/main/service/DataFujianService.java | 70 ++++++++++++++++ .../main/service/DataGuangdongService.java | 68 +++++++++++++++ .../mjkf/xinke/main/service/DataService.java | 4 +- .../main/service/DataZhejiangService.java | 70 ++++++++++++++++ .../main/service/MaterialResultService.java | 15 ++-- 11 files changed, 460 insertions(+), 6 deletions(-) create mode 100644 src/main/java/mjkf/xinke/main/dao/DataFujianMapper.java create mode 100644 src/main/java/mjkf/xinke/main/dao/DataGuangdongMapper.java create mode 100644 src/main/java/mjkf/xinke/main/dao/DataZhejiangMapper.java create mode 100644 src/main/java/mjkf/xinke/main/model/db/DataFujian.java create mode 100644 src/main/java/mjkf/xinke/main/model/db/DataGuangdong.java create mode 100644 src/main/java/mjkf/xinke/main/model/db/DataZhejiang.java create mode 100644 src/main/java/mjkf/xinke/main/service/DataFujianService.java create mode 100644 src/main/java/mjkf/xinke/main/service/DataGuangdongService.java create mode 100644 src/main/java/mjkf/xinke/main/service/DataZhejiangService.java diff --git a/src/main/java/mjkf/xinke/main/dao/DataFujianMapper.java b/src/main/java/mjkf/xinke/main/dao/DataFujianMapper.java new file mode 100644 index 0000000..ca3d219 --- /dev/null +++ b/src/main/java/mjkf/xinke/main/dao/DataFujianMapper.java @@ -0,0 +1,16 @@ +package mjkf.xinke.main.dao; + +import mjkf.xinke.main.model.db.DataFujian; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 福建数据 Mapper 接口 + *

+ * + * @author han0 + * @since 2023-12-28 + */ +public interface DataFujianMapper extends BaseMapper { + +} diff --git a/src/main/java/mjkf/xinke/main/dao/DataGuangdongMapper.java b/src/main/java/mjkf/xinke/main/dao/DataGuangdongMapper.java new file mode 100644 index 0000000..69964db --- /dev/null +++ b/src/main/java/mjkf/xinke/main/dao/DataGuangdongMapper.java @@ -0,0 +1,16 @@ +package mjkf.xinke.main.dao; + +import mjkf.xinke.main.model.db.DataGuangdong; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 广东数据 Mapper 接口 + *

+ * + * @author han0 + * @since 2023-12-28 + */ +public interface DataGuangdongMapper extends BaseMapper { + +} diff --git a/src/main/java/mjkf/xinke/main/dao/DataZhejiangMapper.java b/src/main/java/mjkf/xinke/main/dao/DataZhejiangMapper.java new file mode 100644 index 0000000..fee6079 --- /dev/null +++ b/src/main/java/mjkf/xinke/main/dao/DataZhejiangMapper.java @@ -0,0 +1,16 @@ +package mjkf.xinke.main.dao; + +import mjkf.xinke.main.model.db.DataZhejiang; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 浙江数据 Mapper 接口 + *

+ * + * @author han0 + * @since 2023-12-28 + */ +public interface DataZhejiangMapper extends BaseMapper { + +} diff --git a/src/main/java/mjkf/xinke/main/model/db/DataFujian.java b/src/main/java/mjkf/xinke/main/model/db/DataFujian.java new file mode 100644 index 0000000..fdcbcbe --- /dev/null +++ b/src/main/java/mjkf/xinke/main/model/db/DataFujian.java @@ -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; + +/** + *

+ * 福建数据 + *

+ * + * @author han0 + * @since 2023-12-28 + */ +@Getter +@Setter +@TableName("DATA_FUJIAN") +@ApiModel(value = "DataFujian对象", description = "福建数据") +public class DataFujian extends Model { + + 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; + } +} diff --git a/src/main/java/mjkf/xinke/main/model/db/DataGuangdong.java b/src/main/java/mjkf/xinke/main/model/db/DataGuangdong.java new file mode 100644 index 0000000..edd4d99 --- /dev/null +++ b/src/main/java/mjkf/xinke/main/model/db/DataGuangdong.java @@ -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; + +/** + *

+ * 广东数据 + *

+ * + * @author han0 + * @since 2023-12-28 + */ +@Getter +@Setter +@TableName("DATA_GUANGDONG") +@ApiModel(value = "DataGuangdong对象", description = "广东数据") +public class DataGuangdong extends Model { + + 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; + } +} diff --git a/src/main/java/mjkf/xinke/main/model/db/DataZhejiang.java b/src/main/java/mjkf/xinke/main/model/db/DataZhejiang.java new file mode 100644 index 0000000..c3cc4e2 --- /dev/null +++ b/src/main/java/mjkf/xinke/main/model/db/DataZhejiang.java @@ -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; + +/** + *

+ * 浙江数据 + *

+ * + * @author han0 + * @since 2023-12-28 + */ +@Getter +@Setter +@TableName("DATA_ZHEJIANG") +@ApiModel(value = "DataZhejiang对象", description = "浙江数据") +public class DataZhejiang extends Model { + + 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; + } +} diff --git a/src/main/java/mjkf/xinke/main/service/DataFujianService.java b/src/main/java/mjkf/xinke/main/service/DataFujianService.java new file mode 100644 index 0000000..f358c31 --- /dev/null +++ b/src/main/java/mjkf/xinke/main/service/DataFujianService.java @@ -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, DataFujian> { + + public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) { + LambdaQueryWrapper 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 indexQuery(DataFujian data) { + LambdaQueryWrapper 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 filterQuery(LambdaQueryWrapper 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 trendQuery(Object obj, Integer year, Integer month) { + var data = (DataFujian) obj; + LambdaQueryWrapper 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; + } + +} + diff --git a/src/main/java/mjkf/xinke/main/service/DataGuangdongService.java b/src/main/java/mjkf/xinke/main/service/DataGuangdongService.java new file mode 100644 index 0000000..b8eaafe --- /dev/null +++ b/src/main/java/mjkf/xinke/main/service/DataGuangdongService.java @@ -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, DataGuangdong> { + public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) { + LambdaQueryWrapper 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 indexQuery(DataGuangdong data) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DataGuangdong::getName, data.getName()); + query.eq(DataGuangdong::getDate, data.getDate()); + return query; + } + + public LambdaQueryWrapper filterQuery(LambdaQueryWrapper query) { + return query; + } + + public DataGuangdong getMapGroupingBy(Map item) { + var o = new DataGuangdong(); + o.setName(item.get("name").toString()); + return o; + } + + public LambdaQueryWrapper trendQuery(Object obj, Integer year, Integer month) { + var data = (DataGuangdong) obj; + LambdaQueryWrapper 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> listStatistics(LambdaQueryWrapper query) { + var data = (List>) this.listMaps(query); + return data; + } +} + diff --git a/src/main/java/mjkf/xinke/main/service/DataService.java b/src/main/java/mjkf/xinke/main/service/DataService.java index d642e62..5a0f6db 100644 --- a/src/main/java/mjkf/xinke/main/service/DataService.java +++ b/src/main/java/mjkf/xinke/main/service/DataService.java @@ -28,6 +28,8 @@ public abstract class DataService, T> extends ServiceImp abstract LambdaQueryWrapper filterQuery(LambdaQueryWrapper query); + abstract LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name); + public List saveOrUpdateByIndexBatch(List rows) throws Exception { var list = rows.stream().map(item -> { try { @@ -81,7 +83,7 @@ public abstract class DataService, T> extends ServiceImp abstract public T getMapGroupingBy(Map item); - public List listStatistics(LambdaQueryWrapper query) { + public List> listStatistics(LambdaQueryWrapper query) { var data = (List>) this.listMaps(query); var groupMap = data.stream().collect(Collectors.groupingBy(item->this.getMapGroupingBy(item), Collectors.toList())); diff --git a/src/main/java/mjkf/xinke/main/service/DataZhejiangService.java b/src/main/java/mjkf/xinke/main/service/DataZhejiangService.java new file mode 100644 index 0000000..e042359 --- /dev/null +++ b/src/main/java/mjkf/xinke/main/service/DataZhejiangService.java @@ -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, DataZhejiang>{ + + + public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) { + LambdaQueryWrapper 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 indexQuery(DataZhejiang data) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DataZhejiang::getName, data.getName()); + query.eq(DataZhejiang::getDate, data.getDate()); + return query; + } + + public LambdaQueryWrapper filterQuery(LambdaQueryWrapper query) { + return query; + } + + public DataZhejiang getMapGroupingBy(Map item) { + var o = new DataZhejiang(); + o.setName(item.get("name").toString()); + return o; + } + + public LambdaQueryWrapper trendQuery(Object obj, Integer year, Integer month) { + var data = (DataZhejiang) obj; + LambdaQueryWrapper 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> listStatistics(LambdaQueryWrapper query) { + var data = (List>) this.listMaps(query); + return data; + } +} + diff --git a/src/main/java/mjkf/xinke/main/service/MaterialResultService.java b/src/main/java/mjkf/xinke/main/service/MaterialResultService.java index e955a49..ed7e204 100644 --- a/src/main/java/mjkf/xinke/main/service/MaterialResultService.java +++ b/src/main/java/mjkf/xinke/main/service/MaterialResultService.java @@ -38,6 +38,12 @@ public class MaterialResultService { OilService oilService; @Resource 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)) { service = fujianSurveyService; } else if (type.equals(MaterialTaskType.OTHER_ZHEJIANG)) { -// service = otherZhejiangService; + service = dataZhejiangService; } else if (type.equals(MaterialTaskType.OTHER_GIANLZHOU)) { -// service = otherGianlzhouService; + service = dataGuangdongService; } else if (type.equals(MaterialTaskType.OTHER_YUNNAN)) { -// service = otherYunnanService; +// service = dataYunnanService; } else if (type.equals(MaterialTaskType.FUJIAN_DEPARTMENT)) { -// service = fujianDepartmentService; + service = dataFujianService; } else if (type.equals(MaterialTaskType.OIL)) { service = oilService; } else if (MaterialTaskType.isLocalMaterial(type)) { @@ -166,7 +172,6 @@ public class MaterialResultService { return service; } - public List getTrend(Object data, Integer year, Integer month, Integer type) throws Exception{ var service = this.getService(type); Method trendQuery = service.getClass().getMethod("trendQuery", Object.class, Integer.class, Integer.class);