diff --git a/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java b/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java
index c6ae5e1..7b31481 100644
--- a/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java
+++ b/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java
@@ -54,6 +54,7 @@ public class MaterialTaskType {
public static final Integer ZHANGZHOU_SURVEY = 510; // 漳州调查表
public static final Integer ZHANGZHOUKFQ_SURVEY = 511; // 漳州开发区调查表
// 其他省份
+ public static final Integer OTHER = 600;
public static final Integer OTHER_ZHEJIANG = 601; // 浙江
public static final Integer OTHER_GIANLZHOU = 602; // 广州
public static final Integer OTHER_YUNNAN = 603; // 云南
@@ -146,6 +147,7 @@ public class MaterialTaskType {
ZHANGZHOU_SURVEY,
ZHANGZHOUKFQ_SURVEY,
+ OTHER,
OTHER_ZHEJIANG,
OTHER_GIANLZHOU,
OTHER_YUNNAN,
diff --git a/src/main/java/mjkf/xinke/main/dao/DataAdjacentMapper.java b/src/main/java/mjkf/xinke/main/dao/DataAdjacentMapper.java
new file mode 100644
index 0000000..3e7518c
--- /dev/null
+++ b/src/main/java/mjkf/xinke/main/dao/DataAdjacentMapper.java
@@ -0,0 +1,16 @@
+package mjkf.xinke.main.dao;
+
+import mjkf.xinke.main.model.db.DataAdjacent;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 相邻城市价格 Mapper 接口
+ *
+ *
+ * @author han0
+ * @since 2024-09-25
+ */
+public interface DataAdjacentMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/mjkf/xinke/main/model/db/DataAdjacent.java b/src/main/java/mjkf/xinke/main/model/db/DataAdjacent.java
new file mode 100644
index 0000000..1774311
--- /dev/null
+++ b/src/main/java/mjkf/xinke/main/model/db/DataAdjacent.java
@@ -0,0 +1,177 @@
+package mjkf.xinke.main.model.db;
+
+import cn.hutool.core.bean.BeanUtil;
+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.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.poi.ss.usermodel.CellType;
+import org.apache.poi.ss.usermodel.Row;
+
+/**
+ *
+ * 相邻城市价格
+ *
+ *
+ * @author han0
+ * @since 2024-09-25
+ */
+@Getter
+@Setter
+@TableName("DATA_ADJACENT")
+@ApiModel(value = "DataAdjacent对象", description = "相邻城市价格")
+public class DataAdjacent extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("材料id")
+ @TableField("MATERIAL_ID")
+ private String materialId;
+
+ @ApiModelProperty("规格")
+ @TableField("SPEC")
+ private String spec;
+
+ @ApiModelProperty("名称")
+ @TableField("`NAME`")
+ private String name;
+
+ @ApiModelProperty("广州价格")
+ @TableField("PRICE_GUANGZHOU")
+ private BigDecimal priceGuangzhou;
+
+ @ApiModelProperty("梅州价格")
+ @TableField("PRICE_MEIZHOU")
+ private BigDecimal priceMeizhou;
+
+ @ApiModelProperty("潮州价格")
+ @TableField("PRICE_CHAOZHOU")
+ private BigDecimal priceChaozhou;
+
+ @ApiModelProperty("南昌价格")
+ @TableField("PRICE_NANCHANG")
+ private BigDecimal priceNanchang;
+
+ @ApiModelProperty("抚州价格")
+ @TableField("PRICE_FUZHOU")
+ private BigDecimal priceFuzhou;
+
+ @ApiModelProperty("赣州价格")
+ @TableField("PRICE_GANZHOU")
+ private BigDecimal priceGanzhou;
+
+ @ApiModelProperty("上饶价格")
+ @TableField("PRICE_SHANGRAO")
+ private BigDecimal priceShangrao;
+
+ @ApiModelProperty("鹰潭价格")
+ @TableField("PRICE_YINGTAN")
+ private BigDecimal priceYingtan;
+
+ @ApiModelProperty("杭州价格")
+ @TableField("PRICE_HANGZHOU")
+ private BigDecimal priceHangzhou;
+
+ @ApiModelProperty("丽水价格")
+ @TableField("PRICE_LISHUI")
+ private BigDecimal priceLishui;
+
+ @ApiModelProperty("衢州价格")
+ @TableField("PRICE_QUZHOU")
+ private BigDecimal priceQuzhou;
+
+ @ApiModelProperty("温州价格")
+ @TableField("PRICE_WENZHOU")
+ private BigDecimal priceWenzhou;
+
+ @ApiModelProperty("昆明价格")
+ @TableField("PRICE_KUNMING")
+ private BigDecimal priceKunming;
+
+ @ApiModelProperty("统计年份")
+ @TableField("`YEAR`")
+ private Integer year;
+
+ @ApiModelProperty("统计月份")
+ @TableField("`MONTH`")
+ private Integer month;
+
+ @ApiModelProperty("扩展信息")
+ @TableField("EXT_JSON")
+ private String extJson;
+
+ @ApiModelProperty("租户id")
+ @TableField("TENANT_ID")
+ private String tenantId;
+
+ @ApiModelProperty("删除标志")
+ @TableField("DELETE_FLAG")
+ private String deleteFlag;
+
+ @ApiModelProperty("创建时间")
+ @TableField("CREATE_TIME")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("创建用户")
+ @TableField("CREATE_USER")
+ private String createUser;
+
+ @ApiModelProperty("更新时间")
+ @TableField("UPDATE_TIME")
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("更新人")
+ @TableField("UPDATE_USER")
+ private String updateUser;
+
+ @Override
+ public Serializable pkVal() {
+ return this.id;
+ }
+
+ public DataAdjacent () {}
+
+ public DataAdjacent (Row row, MaterialTask task) {
+ var policy = Row.MissingCellPolicy.CREATE_NULL_AS_BLANK;
+ row.getCell(0, policy).setCellType(CellType.STRING);
+ this.setMaterialId(row.getCell(0, policy).getStringCellValue());
+ this.setName(row.getCell(1, policy).getStringCellValue().replace(" ", ""));
+ this.setSpec(row.getCell(2, policy).getStringCellValue().replace(" ", ""));
+ this.setYear(task.getYear());
+ this.setMonth(task.getMonth());
+
+ this.setPriceGuangzhou(BigDecimal.valueOf(row.getCell(3, policy).getNumericCellValue()));
+ this.setPriceMeizhou(BigDecimal.valueOf(row.getCell(4, policy).getNumericCellValue()));
+ this.setPriceChaozhou(BigDecimal.valueOf(row.getCell(5, policy).getNumericCellValue()));
+ this.setPriceNanchang(BigDecimal.valueOf(row.getCell(6, policy).getNumericCellValue()));
+ this.setPriceFuzhou(BigDecimal.valueOf(row.getCell(7, policy).getNumericCellValue()));
+ this.setPriceGanzhou(BigDecimal.valueOf(row.getCell(8, policy).getNumericCellValue()));
+ this.setPriceShangrao(BigDecimal.valueOf(row.getCell(9, policy).getNumericCellValue()));
+ this.setPriceYingtan(BigDecimal.valueOf(row.getCell(10, policy).getNumericCellValue()));
+ this.setPriceHangzhou(BigDecimal.valueOf(row.getCell(11, policy).getNumericCellValue()));
+ this.setPriceLishui(BigDecimal.valueOf(row.getCell(12, policy).getNumericCellValue()));
+ this.setPriceQuzhou(BigDecimal.valueOf(row.getCell(13, policy).getNumericCellValue()));
+ this.setPriceWenzhou(BigDecimal.valueOf(row.getCell(14, policy).getNumericCellValue()));
+ this.setPriceKunming(BigDecimal.valueOf(row.getCell(15, policy).getNumericCellValue()));
+
+ if (this.getMaterialId().isEmpty()) {
+ throw new IllegalArgumentException("材料编码为空");
+ }
+ }
+
+ public DataAdjacent update(DataAdjacent item) {
+ BeanUtil.copyProperties(item, this);
+ return this;
+ }
+}
diff --git a/src/main/java/mjkf/xinke/main/service/DataAdjacentService.java b/src/main/java/mjkf/xinke/main/service/DataAdjacentService.java
new file mode 100644
index 0000000..cfe0315
--- /dev/null
+++ b/src/main/java/mjkf/xinke/main/service/DataAdjacentService.java
@@ -0,0 +1,63 @@
+package mjkf.xinke.main.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import mjkf.xinke.main.model.db.DataAdjacent;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+@Service
+public class DataAdjacentService extends DataService, DataAdjacent> {
+
+ public LambdaQueryWrapper indexQuery(DataAdjacent data) {
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.eq(DataAdjacent::getMaterialId, data.getMaterialId());
+ query.eq(DataAdjacent::getYear, data.getYear());
+ query.eq(DataAdjacent::getMonth, data.getMonth());
+ return query;
+ }
+
+ public LambdaQueryWrapper filterQuery(LambdaQueryWrapper query) {
+ return query;
+ }
+
+ public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name, Integer type) {
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ if (keyWord != null) {
+ query.and(e -> e.like(DataAdjacent::getName, keyWord));
+ }
+ if (month != null) {
+ query.eq(DataAdjacent::getMonth, month);
+ }
+ if (year != null) {
+ query.eq(DataAdjacent::getYear, year);
+ }
+ if (name != null) {
+ query.like(DataAdjacent::getName, name);
+ }
+ if (materialId != null) {
+ query.eq(DataAdjacent::getMaterialId, materialId);
+ }
+ if (type != null) {
+ }
+ return query;
+ }
+
+ public DataAdjacent getMapGroupingBy(Map item) {
+ var o = new DataAdjacent();
+ o.setMaterialId(item.get("material_id").toString());
+ return o;
+ }
+
+ public LambdaQueryWrapper trendQuery(Object obj, Integer year, Integer month) {
+ var data = (DataAdjacent) obj;
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.eq(DataAdjacent::getMaterialId, data.getMaterialId());
+ query.eq(DataAdjacent::getYear, year);
+ query.eq(DataAdjacent::getMonth, month);
+ query.orderByAsc(DataAdjacent::getYear, DataAdjacent::getMonth);
+ return query;
+ }
+}
+
diff --git a/src/main/java/mjkf/xinke/main/service/MaterialTaskService.java b/src/main/java/mjkf/xinke/main/service/MaterialTaskService.java
index 466af8a..da2601e 100644
--- a/src/main/java/mjkf/xinke/main/service/MaterialTaskService.java
+++ b/src/main/java/mjkf/xinke/main/service/MaterialTaskService.java
@@ -40,6 +40,8 @@ public class MaterialTaskService extends ServiceImpl, M
AsphaltModifierService asphaltModifierService;
@Resource
DataNetworkService dataNetworkService;
+ @Resource
+ DataAdjacentService dataAdjacentService;
@Override
public boolean save(MaterialTask data) {
@@ -77,18 +79,20 @@ public class MaterialTaskService extends ServiceImpl, M
List list;
if (data.getType().equals(MaterialTaskType.SANMING_STEEL)) {
list = sanmingSteelService.saveOrUpdateByIndexBatch(rows, data);
- }else if (MaterialTaskType.isLocalMaterial(data.getType())) {
+ } else if (MaterialTaskType.isLocalMaterial(data.getType())) {
list = localMaterialService.saveOrUpdateByIndexBatch(rows, data);
} else if (data.getType().equals(MaterialTaskType.ASPHALT_MODIFIER)) {
list = asphaltModifierService.saveOrUpdateByIndexBatch(rows, data);
} else if (MaterialTaskType.isNetworkPrice(data.getType())) {
list = dataNetworkService.saveOrUpdateByIndexBatch(rows, data);
- } else if (MaterialTaskType.isSurvey(data.getType())) {
+ } else if (MaterialTaskType.isSurvey(data.getType())) {
list = fujianSurveyService.saveOrUpdateByIndexBatch(rows, data);
- } else if (MaterialTaskType.isTransportationBureau(data.getType())) {
+ } else if (MaterialTaskType.isTransportationBureau(data.getType())) {
list = fuzhouTransportationBureauService.saveOrUpdateByIndexBatch(rows, data);
- } else if (MaterialTaskType.isHighwayBureau(data.getType())) {
+ } else if (MaterialTaskType.isHighwayBureau(data.getType())) {
list = fuzhouHighwayBureauService.saveOrUpdateByIndexBatch(rows, data);
+ } else if (data.getType().equals(MaterialTaskType.OTHER)) {
+ list = dataAdjacentService.saveOrUpdateByIndexBatch(rows, data);
} else {
System.out.println("MaterialTaskService.importData | 未识别的任务类型");
return false;
diff --git a/src/main/resources/_sql/init/mysql/v0.3.sql b/src/main/resources/_sql/init/mysql/v0.3.sql
index 161a792..9e16445 100644
--- a/src/main/resources/_sql/init/mysql/v0.3.sql
+++ b/src/main/resources/_sql/init/mysql/v0.3.sql
@@ -16,4 +16,59 @@ ALTER TABLE PRICE_RESULT ADD WEIGHT_FTB decimal(16,4) default 1 comment '福州
ALTER TABLE PRICE_RESULT ADD WEIGHT_SS decimal(16,4) default 1 comment '三明钢铁权重';
ALTER TABLE PRICE_RESULT ADD WEIGHT_FHB decimal(16,4) default 1 comment '福州公路局权重';
ALTER TABLE PRICE_RESULT ADD WEIGHT_NETWORK decimal(16,4) default 1 comment '网络权重';
-ALTER TABLE PRICE_RESULT ADD WEIGHT_SURVEY decimal(16,4) default 1 comment '调查权重';
\ No newline at end of file
+ALTER TABLE PRICE_RESULT ADD WEIGHT_SURVEY decimal(16,4) default 1 comment '调查权重';
+
+create table DATA_ADJACENT (
+ ID int auto_increment primary key,
+ MATERIAL_ID varchar(128) null comment '材料id',
+ SPEC varchar(128) null comment '规格',
+ NAME varchar(128) null comment '名称',
+ PRICE_GUANGZHOU decimal(16, 4) null comment '广州价格',
+ PRICE_MEIZHOU decimal(16, 4) null comment '梅州价格',
+ PRICE_CHAOZHOU decimal(16, 4) null comment '潮州价格',
+ PRICE_NANCHANG decimal(16, 4) null comment '南昌价格',
+ PRICE_FUZHOU decimal(16, 4) null comment '抚州价格',
+ PRICE_GANZHOU decimal(16, 4) null comment '赣州价格',
+ PRICE_SHANGRAO decimal(16, 4) null comment '上饶价格',
+ PRICE_YINGTAN decimal(16, 4) null comment '鹰潭价格',
+ PRICE_HANGZHOU decimal(16, 4) null comment '杭州价格',
+ PRICE_LISHUI decimal(16, 4) null comment '丽水价格',
+ PRICE_QUZHOU decimal(16, 4) null comment '衢州价格',
+ PRICE_WENZHOU decimal(16, 4) null comment '温州价格',
+ PRICE_KUNMING decimal(16, 4) null comment '昆明价格',
+ YEAR int null comment '统计年份',
+ MONTH int null comment '统计月份',
+ EXT_JSON longtext null comment '扩展信息',
+ TENANT_ID varchar(20) null comment '租户id',
+ DELETE_FLAG varchar(255) null comment '删除标志',
+ CREATE_TIME datetime null comment '创建时间',
+ CREATE_USER varchar(20) null comment '创建用户',
+ UPDATE_TIME datetime null comment '更新时间',
+ UPDATE_USER varchar(20) null comment '更新人'
+) comment '相邻城市价格';
+
+
+
+Guangzhou
+Meizhou
+Chaozhou
+Nanchang
+Fuzhou
+Ganzhou
+Shangrao
+Yingtan
+Hangzhou
+Lishui
+Quzhou
+Wenzhou
+Kunming
+
+
+
+
+
+
+
+
+
+
diff --git a/src/test/java/mjkf/xinke/UploadFileTest.java b/src/test/java/mjkf/xinke/UploadFileTest.java
index fb60907..fdf5530 100644
--- a/src/test/java/mjkf/xinke/UploadFileTest.java
+++ b/src/test/java/mjkf/xinke/UploadFileTest.java
@@ -22,9 +22,10 @@ public class UploadFileTest {
@Test
public void test() throws Exception {
- var filePath = "C:\\Users\\Administrator\\Desktop\\材料管理系统模版\\历史数据\\地材-202405.xlsx";
+// var filePath = "C:\\Users\\Administrator\\Desktop\\材料管理系统模版\\历史数据\\地材-202405.xlsx";
+ var filePath = "C:\\Users\\Administrator\\Documents\\工作表 在 9月完成功能.xlsx";
var file = new File(filePath);
- var multipartFile = this.mockMultipartFile(file, "网络价格.xlsx", "application/x-zip-compressed");
+ var multipartFile = this.mockMultipartFile(file, "相邻城市价格.xlsx", "application/x-zip-compressed");
var fileId = devFileService.uploadReturnId(DevFileEngineTypeEnum.LOCAL.getValue(), multipartFile);
System.out.println("UploadFileTest.test | fileId " + fileId);
}
@@ -36,6 +37,7 @@ public class UploadFileTest {
* 1810482216079302658 交通局.xlsx 40101
* 1810497092512178177 地材.xlsx 1101
* 1810506191866003457 地材-202405.xlsx 1101
+ * 1838851336371163138 相邻城市.xlsx 600
*/
private MultipartFile mockMultipartFile(File file, String fileName, String contentType) {