diff --git a/pom.xml b/pom.xml
index c116af0..33f63e6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -157,6 +157,17 @@
jxls-jexcel
1.0.9
+
+ org.springframework
+ spring-test
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java b/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java
index ca5f243..a7f1132 100644
--- a/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java
+++ b/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java
@@ -1,6 +1,8 @@
package mjkf.xinke.main.constant;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
public class MaterialTaskType {
// 钢筋网
@@ -12,9 +14,11 @@ public class MaterialTaskType {
@Deprecated public static final Integer BAIINFO_ASPHALT_DOMESTIC = 201; // 国产沥青
@Deprecated public static final Integer BAIINFO_ASPHALT_IMPORTED = 202; // 进口沥青
@Deprecated public static final Integer BAIINFO_CEMENT = 203; // 水泥
+ // 发改委
+ @Deprecated public static final Integer OIL = 801; // 汽柴油
// 三明钢铁
public static final Integer SANMING_STEEL = 301;
- // 材料信息
+ // 交通局
public static final Integer FUZHOU_TRANSPORTATION_BUREAU = 40101; // todo-1 福州交通局
public static final Integer LONGYAN_TRANSPORTATION_BUREAU = 40102; // todo-1 龙岩交通局
public static final Integer NANPING_TRANSPORTATION_BUREAU = 40103; // todo-1 南平交通局
@@ -26,7 +30,7 @@ public class MaterialTaskType {
public static final Integer XIAMEN_TRANSPORTATION_BUREAU = 40109; // todo-1 厦门交通局
public static final Integer ZHANGZHOU_TRANSPORTATION_BUREAU = 40110; // todo-1 漳州交通局
public static final Integer ZHANGZHOUKFQ_TRANSPORTATION_BUREAU = 40111; // todo-1 漳州开发区交通局
-
+ // 公路局
public static final Integer FUZHOU_HIGHWAY_BUREAU = 40201; // todo-1 福州公路局
public static final Integer LONGYAN_HIGHWAY_BUREAU = 40202; // todo-1 龙岩公路局
public static final Integer NANPING_HIGHWAY_BUREAU = 40203; // todo-1 南平公路局
@@ -57,8 +61,6 @@ public class MaterialTaskType {
public static final Integer OTHER_JIANGXI = 604; // todo-2 江西
// 住建厅
public static final Integer FUJIAN_DEPARTMENT = 701;
- // 发改委
- @Deprecated public static final Integer OIL = 801; // 汽柴油
// 地材(废弃)
@Deprecated public static final Integer LOCAL_MEDIUM_COARSE_SAND = 901; // 中粗砂
@Deprecated public static final Integer LOCAL_MECHANISM_SAND = 902; // 机制砂
@@ -69,7 +71,6 @@ public class MaterialTaskType {
@Deprecated public static final Integer LOCAL_CLAY = 907; // 粘土
// 辅材
public static final Integer ASPHALT_MODIFIER = 1001; // 改性剂
-
// 新地材
public static final Integer LOCAL_FUZHOU = 1101; // 福州
public static final Integer LOCAL_LONGYAN = 1102; // 龙岩
@@ -79,12 +80,31 @@ public class MaterialTaskType {
public static final Integer LOCAL_QUANZHOU = 1106; // 泉州
public static final Integer LOCAL_SANMING = 1107; // 三明
public static final Integer LOCAL_ZHANGZHOU = 1108; // 漳州
-
// 网络价格
- public static final Integer NETWORK = 1201; // todo-1 网络价格
+ public static final Integer FUZHOU_NETWORK = 1201; // 福州网络价格
+ public static final Integer LONGYAN_NETWORK = 1202; // 龙岩网络价格
+ public static final Integer NANPING_NETWORK = 1203; // 南平网络价格
+ public static final Integer NINGDE_NETWORK = 1204; // 宁德网络价格
+ public static final Integer PINTAN_NETWORK = 1205; // 平潭网络价格
+ public static final Integer PUTIAN_NETWORK = 1206; // 莆田网络价格
+ public static final Integer QUANZHOU_NETWORK = 1207; // 泉州网络价格
+ public static final Integer SANMING_NETWORK = 1208; // 三明网络价格
+ public static final Integer XIAMEN_NETWORK = 1209; // 厦门网络价格
+ public static final Integer ZHANGZHOU_NETWORK = 1210; // 漳州网络价格
+ public static final Integer ZHANGZHOUKFQ_NETWORK = 1211; // 漳州开发区网络价格
public static final List list = List.of(
- NETWORK,
+ FUZHOU_NETWORK,
+ LONGYAN_NETWORK,
+ NANPING_NETWORK,
+ NINGDE_NETWORK,
+ PINTAN_NETWORK,
+ PUTIAN_NETWORK,
+ QUANZHOU_NETWORK,
+ SANMING_NETWORK,
+ XIAMEN_NETWORK,
+ ZHANGZHOU_NETWORK,
+ ZHANGZHOUKFQ_NETWORK,
SANMING_STEEL,
@@ -141,12 +161,29 @@ public class MaterialTaskType {
LOCAL_ZHANGZHOU
);
+ public static String getRegion (Integer type) {
+ var map = new HashMap();
+ map.put(1, "福州");
+ map.put(2, "龙岩");
+ map.put(3, "南平");
+ map.put(4, "宁德");
+ map.put(5, "平潭");
+ map.put(6, "莆田");
+ map.put(7, "泉州");
+ map.put(8, "三明");
+ map.put(9, "厦门");
+ map.put(10, "漳州");
+ map.put(11, "漳州开发区");
+ var i = type % 100;
+ var region = map.get(i);
+ return region;
+ }
+
/**
* 是否来源爬虫
*/
public static boolean isFromSpider(Integer type) {
var dataFromSpiderTypes = List.of(
- NETWORK,
OIL,
OTHER_ZHEJIANG,
OTHER_GIANLZHOU,
@@ -173,11 +210,89 @@ public class MaterialTaskType {
);
return dataFromSpiderTypes.contains(type);
}
+
+ /**
+ * 是否网络价格
+ */
+ public static boolean isNetworkPrice(Integer type) {
+ var types = List.of(
+ FUZHOU_NETWORK,
+ LONGYAN_NETWORK,
+ NANPING_NETWORK,
+ NINGDE_NETWORK,
+ PINTAN_NETWORK,
+ PUTIAN_NETWORK,
+ QUANZHOU_NETWORK,
+ SANMING_NETWORK
+ );
+ return types.contains(type);
+ }
+
+ /**
+ * 是否交通局
+ */
+ public static boolean isTransportationBureau(Integer type) {
+ var types = List.of(
+ FUZHOU_TRANSPORTATION_BUREAU,
+ LONGYAN_TRANSPORTATION_BUREAU,
+ NANPING_TRANSPORTATION_BUREAU,
+ NINGDE_TRANSPORTATION_BUREAU,
+ PINTAN_TRANSPORTATION_BUREAU,
+ PUTIAN_TRANSPORTATION_BUREAU,
+ QUANZHOU_TRANSPORTATION_BUREAU,
+ SANMING_TRANSPORTATION_BUREAU,
+ XIAMEN_TRANSPORTATION_BUREAU,
+ ZHANGZHOU_TRANSPORTATION_BUREAU,
+ ZHANGZHOUKFQ_TRANSPORTATION_BUREAU
+ );
+ return types.contains(type);
+ }
+
+ /**
+ * 是否公路局
+ */
+ public static boolean isHighwayBureau(Integer type) {
+ var types = List.of(
+ FUZHOU_HIGHWAY_BUREAU,
+ LONGYAN_HIGHWAY_BUREAU,
+ NANPING_HIGHWAY_BUREAU,
+ NINGDE_HIGHWAY_BUREAU,
+ PINTAN_HIGHWAY_BUREAU,
+ PUTIAN_HIGHWAY_BUREAU,
+ QUANZHOU_HIGHWAY_BUREAU,
+ SANMING_HIGHWAY_BUREAU,
+ XIAMEN_HIGHWAY_BUREAU,
+ ZHANGZHOU_HIGHWAY_BUREAU,
+ ZHANGZHOUKFQ_HIGHWAY_BUREAU
+ );
+ return types.contains(type);
+ }
+
+ /**
+ * 是否调查表
+ */
+ public static boolean isSurvey(Integer type) {
+ var types = List.of(
+ FUZHOU_SURVEY,
+ LONGYAN_SURVEY,
+ NANPING_SURVEY,
+ NINGDE_SURVEY,
+ PINTAN_SURVEY,
+ PUTIAN_SURVEY,
+ QUANZHOU_SURVEY,
+ SANMING_SURVEY,
+ XIAMEN_SURVEY,
+ ZHANGZHOU_SURVEY,
+ ZHANGZHOUKFQ_SURVEY
+ );
+ return types.contains(type);
+ }
+
/**
* todo-1 数据展示模块 地市暂不切换
* todo-1 十一个地市接口
* todo-1 采集结果“产地”改成“品牌产商”
- * todo-1 传采集数据网络价格树变动
+ * todo-0 传采集数据网络价格计算
* todo-1 趋势图一年每月打点
* todo-1 项目材料价格预算“最高(低)总金额”携带上价格的月份
* todo-1 项目材料价格预算计算数值没有小数点
diff --git a/src/main/java/mjkf/xinke/main/controller/LocalMaterialController.java b/src/main/java/mjkf/xinke/main/controller/LocalMaterialController.java
index a3fb199..aaee9b7 100644
--- a/src/main/java/mjkf/xinke/main/controller/LocalMaterialController.java
+++ b/src/main/java/mjkf/xinke/main/controller/LocalMaterialController.java
@@ -48,7 +48,7 @@ public class LocalMaterialController {
@ApiParam(value = "规格") @RequestParam(value="spec", required=false) String spec,
@ApiParam(value = "名称") @RequestParam(value="name", required=false) String name
) {
- var query = localMaterialService.getQuery(year, month, city, county, spec, name);
+ var query = localMaterialService.getQuery(year, month, city, county, spec, name, null);
query.orderByDesc(LocalMaterial::getName);
List data = localMaterialService.list(query);
diff --git a/src/main/java/mjkf/xinke/main/dao/DataNetworkMapper.java b/src/main/java/mjkf/xinke/main/dao/DataNetworkMapper.java
new file mode 100644
index 0000000..0394452
--- /dev/null
+++ b/src/main/java/mjkf/xinke/main/dao/DataNetworkMapper.java
@@ -0,0 +1,16 @@
+package mjkf.xinke.main.dao;
+
+import mjkf.xinke.main.model.db.DataNetwork;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 网络价格 Mapper 接口
+ *
+ *
+ * @author han0
+ * @since 2024-07-08
+ */
+public interface DataNetworkMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/mjkf/xinke/main/model/db/DataNetwork.java b/src/main/java/mjkf/xinke/main/model/db/DataNetwork.java
new file mode 100644
index 0000000..daf1ee2
--- /dev/null
+++ b/src/main/java/mjkf/xinke/main/model/db/DataNetwork.java
@@ -0,0 +1,112 @@
+package mjkf.xinke.main.model.db;
+
+import cn.hutool.core.util.ObjectUtil;
+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;
+import mjkf.xinke.main.constant.MaterialTaskType;
+import org.apache.poi.ss.usermodel.CellType;
+import org.apache.poi.ss.usermodel.Row;
+
+/**
+ *
+ * 网络价格
+ *
+ *
+ * @author han0
+ * @since 2024-07-08
+ */
+@Getter
+@Setter
+@TableName("DATA_NETWORK")
+@ApiModel(value = "DataNetwork对象", description = "网络价格")
+public class DataNetwork 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("UNIT")
+ private String unit;
+
+ @ApiModelProperty("品牌")
+ @TableField("BRAND")
+ private String brand;
+
+ @ApiModelProperty("名称")
+ @TableField("`NAME`")
+ private String name;
+
+ @ApiModelProperty("价格")
+ @TableField("PRICE")
+ private BigDecimal price;
+
+ @ApiModelProperty("信息来源")
+ @TableField("`SOURCE`")
+ private String source;
+
+ @ApiModelProperty("备注")
+ @TableField("REMARK")
+ private String remark;
+
+ @ApiModelProperty("日期")
+ @TableField("`DATE`")
+ private LocalDate date;
+
+ @ApiModelProperty("地区")
+ @TableField("REGION")
+ private String region;
+
+ @Override
+ public Serializable pkVal() {
+ return this.id;
+ }
+
+ public DataNetwork () {}
+
+ public DataNetwork (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());
+ this.setSpec(row.getCell(2, policy).getStringCellValue());
+ this.setUnit(row.getCell(3, policy).getStringCellValue());
+ this.setBrand(row.getCell(4, policy).getStringCellValue());
+ this.setPrice(BigDecimal.valueOf(row.getCell(5, policy).getNumericCellValue()));
+ this.setSource(row.getCell(6, policy).getStringCellValue());
+ this.setRemark(row.getCell(7, policy).getStringCellValue());
+ this.setDate(LocalDate.of(task.getYear(), task.getMonth(), 1)); // 日期从任务获取
+ this.setRegion(MaterialTaskType.getRegion(task.getType()));
+ }
+
+ public DataNetwork update(DataNetwork item) {
+ this.setMaterialId(item.getMaterialId());
+ this.setSpec(item.getSpec());
+ this.setUnit(item.getUnit());
+ this.setBrand(item.getBrand());
+ this.setName(item.getName());
+ this.setPrice(item.getPrice());
+ this.setSource(item.getSource());
+ this.setRemark(item.getRemark());
+ return this;
+ }
+}
diff --git a/src/main/java/mjkf/xinke/main/service/AsphaltDomesticService.java b/src/main/java/mjkf/xinke/main/service/AsphaltDomesticService.java
index d21710a..c05709c 100644
--- a/src/main/java/mjkf/xinke/main/service/AsphaltDomesticService.java
+++ b/src/main/java/mjkf/xinke/main/service/AsphaltDomesticService.java
@@ -28,7 +28,7 @@ public class AsphaltDomesticService extends DataService getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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
diff --git a/src/main/java/mjkf/xinke/main/service/AsphaltImportedService.java b/src/main/java/mjkf/xinke/main/service/AsphaltImportedService.java
index 6c4149f..38fe559 100644
--- a/src/main/java/mjkf/xinke/main/service/AsphaltImportedService.java
+++ b/src/main/java/mjkf/xinke/main/service/AsphaltImportedService.java
@@ -28,7 +28,7 @@ public class AsphaltImportedService extends DataService getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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
diff --git a/src/main/java/mjkf/xinke/main/service/AsphaltModifierService.java b/src/main/java/mjkf/xinke/main/service/AsphaltModifierService.java
index 31ed270..5a87615 100644
--- a/src/main/java/mjkf/xinke/main/service/AsphaltModifierService.java
+++ b/src/main/java/mjkf/xinke/main/service/AsphaltModifierService.java
@@ -27,7 +27,7 @@ public class AsphaltModifierService extends DataService getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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
diff --git a/src/main/java/mjkf/xinke/main/service/CementService.java b/src/main/java/mjkf/xinke/main/service/CementService.java
index a5dbac1..6e496d0 100644
--- a/src/main/java/mjkf/xinke/main/service/CementService.java
+++ b/src/main/java/mjkf/xinke/main/service/CementService.java
@@ -34,7 +34,7 @@ public class CementService extends DataService, Cement> {
return query;
}
- public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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
diff --git a/src/main/java/mjkf/xinke/main/service/DataFujianService.java b/src/main/java/mjkf/xinke/main/service/DataFujianService.java
index f358c31..242390a 100644
--- a/src/main/java/mjkf/xinke/main/service/DataFujianService.java
+++ b/src/main/java/mjkf/xinke/main/service/DataFujianService.java
@@ -12,7 +12,7 @@ import java.util.Map;
@Service
public class DataFujianService extends DataService, DataFujian> {
- public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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(DataFujian::getName, keyWord));
diff --git a/src/main/java/mjkf/xinke/main/service/DataGuangdongService.java b/src/main/java/mjkf/xinke/main/service/DataGuangdongService.java
index b8eaafe..f170b7d 100644
--- a/src/main/java/mjkf/xinke/main/service/DataGuangdongService.java
+++ b/src/main/java/mjkf/xinke/main/service/DataGuangdongService.java
@@ -11,7 +11,7 @@ import java.util.Map;
@Service
public class DataGuangdongService extends DataService, DataGuangdong> {
- public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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(DataGuangdong::getName, keyWord));
diff --git a/src/main/java/mjkf/xinke/main/service/DataNetworkService.java b/src/main/java/mjkf/xinke/main/service/DataNetworkService.java
new file mode 100644
index 0000000..d3623ca
--- /dev/null
+++ b/src/main/java/mjkf/xinke/main/service/DataNetworkService.java
@@ -0,0 +1,66 @@
+package mjkf.xinke.main.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import mjkf.xinke.main.constant.MaterialTaskType;
+import mjkf.xinke.main.model.db.DataNetwork;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.util.Map;
+
+@Service
+public class DataNetworkService extends DataService, DataNetwork> {
+
+ public LambdaQueryWrapper indexQuery(DataNetwork data) {
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.eq(DataNetwork::getName, data.getName());
+ query.eq(DataNetwork::getSpec, data.getSpec());
+ query.eq(DataNetwork::getDate, data.getDate());
+ query.eq(DataNetwork::getRegion, data.getRegion());
+ 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(DataNetwork::getName, keyWord)
+ );
+ }
+ if (month != null) {
+ var date = LocalDate.of(year, month, 1);
+ query.between(DataNetwork::getDate, date, date.plusMonths(1));
+ }
+ if (name != null) {
+ query.like(DataNetwork::getName, name);
+ }
+ if (materialId != null) {
+ query.eq(DataNetwork::getMaterialId, materialId);
+ }
+ if (type != null) {
+ query.eq(DataNetwork::getRegion, MaterialTaskType.getRegion(type));
+ }
+ return query;
+ }
+
+ public DataNetwork getMapGroupingBy(Map item) {
+ var o = new DataNetwork();
+ o.setName(item.get("name").toString());
+ return o;
+ }
+
+ public LambdaQueryWrapper trendQuery(Object obj, Integer year, Integer month) {
+ var data = (DataNetwork) obj;
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.eq(DataNetwork::getName, data.getName());
+ var date = LocalDate.of(year, month, 1);
+ query.between(DataNetwork::getDate, date, date.plusMonths(1));
+ return query;
+ }
+}
+
diff --git a/src/main/java/mjkf/xinke/main/service/DataService.java b/src/main/java/mjkf/xinke/main/service/DataService.java
index 5a0f6db..987c245 100644
--- a/src/main/java/mjkf/xinke/main/service/DataService.java
+++ b/src/main/java/mjkf/xinke/main/service/DataService.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import mjkf.xinke.main.model.db.MaterialTask;
import org.apache.poi.ss.usermodel.Row;
import java.lang.reflect.Method;
@@ -24,16 +25,28 @@ public abstract class DataService, T> extends ServiceImp
}
}
+ /**
+ * 唯一性查询
+ */
abstract LambdaQueryWrapper indexQuery(T data);
+ /**
+ * 展示展示过滤
+ */
abstract LambdaQueryWrapper filterQuery(LambdaQueryWrapper query);
- abstract LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name);
+ /**
+ * 数据查询
+ */
+ abstract LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name, Integer type);
- public List saveOrUpdateByIndexBatch(List rows) throws Exception {
+ /**
+ * 批量更新
+ */
+ public List saveOrUpdateByIndexBatch(List rows, MaterialTask task) throws Exception {
var list = rows.stream().map(item -> {
try {
- return (T) this.getEntityClass().getConstructor(Row.class).newInstance(item);
+ return (T) this.getEntityClass().getConstructor(Row.class, MaterialTask.class).newInstance(item, task);
} catch (Exception e) {
e.printStackTrace();
return null;
@@ -47,6 +60,9 @@ public abstract class DataService, T> extends ServiceImp
return list;
}
+ /**
+ * 获取实体类
+ */
public Class getEntityClass() {
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
Class clazz = (Class) pt.getActualTypeArguments()[1];
diff --git a/src/main/java/mjkf/xinke/main/service/DataZhejiangService.java b/src/main/java/mjkf/xinke/main/service/DataZhejiangService.java
index e042359..fbb1ec0 100644
--- a/src/main/java/mjkf/xinke/main/service/DataZhejiangService.java
+++ b/src/main/java/mjkf/xinke/main/service/DataZhejiangService.java
@@ -13,7 +13,7 @@ import java.util.Map;
public class DataZhejiangService extends DataService, DataZhejiang>{
- public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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(DataZhejiang::getName, keyWord));
diff --git a/src/main/java/mjkf/xinke/main/service/FujianSurveyService.java b/src/main/java/mjkf/xinke/main/service/FujianSurveyService.java
index 409ff3b..bb8dd7a 100644
--- a/src/main/java/mjkf/xinke/main/service/FujianSurveyService.java
+++ b/src/main/java/mjkf/xinke/main/service/FujianSurveyService.java
@@ -28,7 +28,7 @@ public class FujianSurveyService extends DataService, F
return query;
}
- public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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
diff --git a/src/main/java/mjkf/xinke/main/service/FuzhouHighwayBureauService.java b/src/main/java/mjkf/xinke/main/service/FuzhouHighwayBureauService.java
index 4333501..5b8c5e0 100644
--- a/src/main/java/mjkf/xinke/main/service/FuzhouHighwayBureauService.java
+++ b/src/main/java/mjkf/xinke/main/service/FuzhouHighwayBureauService.java
@@ -29,7 +29,7 @@ public class FuzhouHighwayBureauService extends DataService getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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
diff --git a/src/main/java/mjkf/xinke/main/service/FuzhouTransportationBureauService.java b/src/main/java/mjkf/xinke/main/service/FuzhouTransportationBureauService.java
index 01242ed..2266527 100644
--- a/src/main/java/mjkf/xinke/main/service/FuzhouTransportationBureauService.java
+++ b/src/main/java/mjkf/xinke/main/service/FuzhouTransportationBureauService.java
@@ -30,7 +30,7 @@ public class FuzhouTransportationBureauService extends DataService getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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
diff --git a/src/main/java/mjkf/xinke/main/service/LocalMaterialService.java b/src/main/java/mjkf/xinke/main/service/LocalMaterialService.java
index ec26716..f287168 100644
--- a/src/main/java/mjkf/xinke/main/service/LocalMaterialService.java
+++ b/src/main/java/mjkf/xinke/main/service/LocalMaterialService.java
@@ -29,7 +29,7 @@ public class LocalMaterialService extends DataService,
return query;
}
- public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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
@@ -54,8 +54,8 @@ public class LocalMaterialService extends DataService,
}
- public LambdaQueryWrapper getQuery(Integer year, Integer month, String city, String county, String spec, String name) {
- var query = this.getQuery(null, year, month, null, name);
+ public LambdaQueryWrapper getQuery(Integer year, Integer month, String city, String county, String spec, String name, Integer type) {
+ var query = this.getQuery(null, year, month, null, name, type);
if (city != null) {
query.like(LocalMaterial::getCity, city);
}
diff --git a/src/main/java/mjkf/xinke/main/service/MaterialResultService.java b/src/main/java/mjkf/xinke/main/service/MaterialResultService.java
index 9a4c7d1..3f0f24a 100644
--- a/src/main/java/mjkf/xinke/main/service/MaterialResultService.java
+++ b/src/main/java/mjkf/xinke/main/service/MaterialResultService.java
@@ -45,6 +45,8 @@ public class MaterialResultService {
DataGuangdongService dataGuangdongService;
@Resource
DataFujianService dataFujianService;
+ @Resource
+ DataNetworkService dataNetworkService;
/**
* 基础查询
@@ -67,9 +69,9 @@ public class MaterialResultService {
}
Method getQuery = service.getClass().getMethod(
"getQuery",
- String.class, Integer.class, Integer.class, String.class, String.class
+ String.class, Integer.class, Integer.class, String.class, String.class, Integer.class
);
- query = (LambdaQueryWrapper) getQuery.invoke(service, keyWord, year, month, materialId, name);
+ query = (LambdaQueryWrapper) getQuery.invoke(service, keyWord, year, month, materialId, name, type);
return query;
}
@@ -170,8 +172,10 @@ public class MaterialResultService {
service = oilService;
} else if (MaterialTaskType.isLocalMaterial(type)) {
service = localMaterialService;
+ } else if (MaterialTaskType.isNetworkPrice(type)) {
+ service = dataNetworkService;
} else {
-
+ System.out.println("MaterialResultService.getService | 未找到对应的数据处理 Service | type: " + type);
}
return service;
}
diff --git a/src/main/java/mjkf/xinke/main/service/MaterialTaskService.java b/src/main/java/mjkf/xinke/main/service/MaterialTaskService.java
index 6968027..bb5be8b 100644
--- a/src/main/java/mjkf/xinke/main/service/MaterialTaskService.java
+++ b/src/main/java/mjkf/xinke/main/service/MaterialTaskService.java
@@ -52,6 +52,8 @@ public class MaterialTaskService extends ServiceImpl, M
LocalMaterialService localMaterialService;
@Resource
AsphaltModifierService asphaltModifierService;
+ @Resource
+ DataNetworkService dataNetworkService;
@Override
public boolean save(MaterialTask data) {
@@ -79,6 +81,7 @@ public class MaterialTaskService extends ServiceImpl, M
}
private boolean importData(MaterialTask data) throws Exception {
+ System.out.println("MaterialTaskService.importData | 导入数据 | task_id: " + data.getId());
// 获取文件
DevFile devFile = devFileService.queryEntity(data.getFile());
File file = FileUtil.file(devFile.getStoragePath());
@@ -87,32 +90,35 @@ public class MaterialTaskService extends ServiceImpl, M
// 导入
List list;
if (data.getType().equals(MaterialTaskType.MY_STEEL_REBAR)) {
- list = steelRebarService.saveOrUpdateByIndexBatch(rows);
+ list = steelRebarService.saveOrUpdateByIndexBatch(rows, data);
} else if (data.getType().equals(MaterialTaskType.MY_STEEL_SECTION)) {
- list = steelSectionService.saveOrUpdateByIndexBatch(rows);
+ list = steelSectionService.saveOrUpdateByIndexBatch(rows, data);
} else if (data.getType().equals(MaterialTaskType.MY_STEEL_STRAND)) {
- list = steelStrandService.saveOrUpdateByIndexBatch(rows);
+ list = steelStrandService.saveOrUpdateByIndexBatch(rows, data);
} else if (data.getType().equals(MaterialTaskType.MY_STEEL_PLATE)) {
- list = steelPlateService.saveOrUpdateByIndexBatch(rows);
+ list = steelPlateService.saveOrUpdateByIndexBatch(rows, data);
} else if (data.getType().equals(MaterialTaskType.BAIINFO_ASPHALT_DOMESTIC)) {
- list = asphaltDomesticService.saveOrUpdateByIndexBatch(rows);
+ list = asphaltDomesticService.saveOrUpdateByIndexBatch(rows, data);
} else if (data.getType().equals(MaterialTaskType.BAIINFO_ASPHALT_IMPORTED)) {
- list = asphaltImportedService.saveOrUpdateByIndexBatch(rows);
+ list = asphaltImportedService.saveOrUpdateByIndexBatch(rows, data);
} else if (data.getType().equals(MaterialTaskType.BAIINFO_CEMENT)) {
- list = cementService.saveOrUpdateByIndexBatch(rows);
+ list = cementService.saveOrUpdateByIndexBatch(rows, data);
} else if (data.getType().equals(MaterialTaskType.SANMING_STEEL)) {
- list = sanmingSteelService.saveOrUpdateByIndexBatch(rows);
+ list = sanmingSteelService.saveOrUpdateByIndexBatch(rows, data);
} else if (data.getType().equals(MaterialTaskType.FUZHOU_TRANSPORTATION_BUREAU)) {
- list = fuzhouTransportationBureauService.saveOrUpdateByIndexBatch(rows);
+ list = fuzhouTransportationBureauService.saveOrUpdateByIndexBatch(rows, data);
} else if (data.getType().equals(MaterialTaskType.FUZHOU_HIGHWAY_BUREAU)) {
- list = fuzhouHighwayBureauService.saveOrUpdateByIndexBatch(rows);
+ list = fuzhouHighwayBureauService.saveOrUpdateByIndexBatch(rows, data);
} else if (data.getType().equals(MaterialTaskType.FUZHOU_SURVEY)) {
- list = fujianSurveyService.saveOrUpdateByIndexBatch(rows);
+ list = fujianSurveyService.saveOrUpdateByIndexBatch(rows, data);
} else if (MaterialTaskType.isLocalMaterial(data.getType())) {
- list = localMaterialService.saveOrUpdateByIndexBatch(rows);
+ list = localMaterialService.saveOrUpdateByIndexBatch(rows, data);
} else if (data.getType().equals(MaterialTaskType.ASPHALT_MODIFIER)) {
- list = asphaltModifierService.saveOrUpdateByIndexBatch(rows);
+ list = asphaltModifierService.saveOrUpdateByIndexBatch(rows, data);
+ } else if (MaterialTaskType.isNetworkPrice(data.getType())) {
+ list = dataNetworkService.saveOrUpdateByIndexBatch(rows, data);
} else {
+ System.out.println("MaterialTaskService.importData | 未识别的任务类型");
// todo-3 异常处理:未识别的类型
return false;
}
@@ -127,6 +133,7 @@ public class MaterialTaskService extends ServiceImpl, M
}
private List getTableRows(File file) throws IOException {
+ System.out.println("MaterialTaskService.getTableRows | 解析表格 | " + file.getName());
List result = new ArrayList<>();
try (Workbook workbook = WorkbookFactory.create(file)) {
Sheet sheet = workbook.getSheetAt(0); // 假设文件中只有一个表格
diff --git a/src/main/java/mjkf/xinke/main/service/OilService.java b/src/main/java/mjkf/xinke/main/service/OilService.java
index 1fb345d..95e4d09 100644
--- a/src/main/java/mjkf/xinke/main/service/OilService.java
+++ b/src/main/java/mjkf/xinke/main/service/OilService.java
@@ -27,7 +27,7 @@ public class OilService extends DataService, Oil> {
return query;
}
- public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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
diff --git a/src/main/java/mjkf/xinke/main/service/SanmingSteelService.java b/src/main/java/mjkf/xinke/main/service/SanmingSteelService.java
index 7308edc..dfa5ef2 100644
--- a/src/main/java/mjkf/xinke/main/service/SanmingSteelService.java
+++ b/src/main/java/mjkf/xinke/main/service/SanmingSteelService.java
@@ -30,7 +30,7 @@ public class SanmingSteelService extends DataService, S
return query;
}
- public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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
diff --git a/src/main/java/mjkf/xinke/main/service/SteelPlateService.java b/src/main/java/mjkf/xinke/main/service/SteelPlateService.java
index 586862e..6b7ca18 100644
--- a/src/main/java/mjkf/xinke/main/service/SteelPlateService.java
+++ b/src/main/java/mjkf/xinke/main/service/SteelPlateService.java
@@ -38,7 +38,7 @@ public class SteelPlateService extends DataService, Steel
}
- public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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
diff --git a/src/main/java/mjkf/xinke/main/service/SteelRebarService.java b/src/main/java/mjkf/xinke/main/service/SteelRebarService.java
index 686cf9c..92fba8e 100644
--- a/src/main/java/mjkf/xinke/main/service/SteelRebarService.java
+++ b/src/main/java/mjkf/xinke/main/service/SteelRebarService.java
@@ -34,7 +34,7 @@ public class SteelRebarService extends DataService, Steel
return query;
}
- public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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
diff --git a/src/main/java/mjkf/xinke/main/service/SteelSectionService.java b/src/main/java/mjkf/xinke/main/service/SteelSectionService.java
index e48b1b8..d08d9f3 100644
--- a/src/main/java/mjkf/xinke/main/service/SteelSectionService.java
+++ b/src/main/java/mjkf/xinke/main/service/SteelSectionService.java
@@ -35,7 +35,7 @@ public class SteelSectionService extends DataService, S
return query;
}
- public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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
diff --git a/src/main/java/mjkf/xinke/main/service/SteelStrandService.java b/src/main/java/mjkf/xinke/main/service/SteelStrandService.java
index c5302b7..596987c 100644
--- a/src/main/java/mjkf/xinke/main/service/SteelStrandService.java
+++ b/src/main/java/mjkf/xinke/main/service/SteelStrandService.java
@@ -35,7 +35,7 @@ public class SteelStrandService extends DataService, Ste
return query;
}
- public LambdaQueryWrapper getQuery(String keyWord, Integer year, Integer month, String materialId, String name) {
+ 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
diff --git a/src/main/resources/_sql/init/mysql/v0.1.sql b/src/main/resources/_sql/init/mysql/v0.1.sql
index 8531263..d8b8b0a 100644
--- a/src/main/resources/_sql/init/mysql/v0.1.sql
+++ b/src/main/resources/_sql/init/mysql/v0.1.sql
@@ -1,3 +1,18 @@
ALTER TABLE price_publish ADD PRICE_ZHANGZHOUKFQ decimal(16,4) NULL COMMENT '漳州开发区价格';
ALTER TABLE price_publish
- MODIFY COLUMN PRICE_ZHANGZHOUKFQ decimal(16,4) COMMENT '漳州开发区价格' AFTER PRICE_PINTAN;
\ No newline at end of file
+ MODIFY COLUMN PRICE_ZHANGZHOUKFQ decimal(16,4) COMMENT '漳州开发区价格' AFTER PRICE_PINTAN;
+
+create table DATA_NETWORK (
+ ID int auto_increment primary key,
+ MATERIAL_ID varchar(128) null comment '材料id',
+ SPEC varchar(128) null comment '规格',
+ UNIT varchar(128) null comment '单位',
+ BRAND varchar(128) null comment '品牌',
+ NAME varchar(128) null comment '名称',
+ PRICE decimal(16, 4) null comment '价格',
+ SOURCE varchar(128) null comment '信息来源',
+ REMARK text null comment '备注',
+ DATE date null comment '日期'
+) comment '网络价格';
+
+ALTER TABLE DATA_NETWORK ADD REGION varchar(64) NULL COMMENT '地区';
\ No newline at end of file
diff --git a/src/test/java/mjkf/xinke/LoginTest.java b/src/test/java/mjkf/xinke/LoginTest.java
new file mode 100644
index 0000000..e8c487f
--- /dev/null
+++ b/src/test/java/mjkf/xinke/LoginTest.java
@@ -0,0 +1,38 @@
+
+package mjkf.xinke;
+
+import mjkf.xinke.auth.core.enums.SaClientTypeEnum;
+import mjkf.xinke.auth.modular.login.param.AuthAccountPasswordLoginParam;
+import mjkf.xinke.auth.modular.login.service.AuthService;
+import mjkf.xinke.dev.modular.dict.service.DevDictService;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import javax.annotation.Resource;
+
+/**
+ * TestMain方法
+ *
+ *
+ * @date 2022/9/17 17:10
+ */
+@SpringBootTest(classes = Application.class)
+@RunWith(SpringJUnit4ClassRunner.class)
+public class LoginTest {
+ @Resource
+ DevDictService devDictService;
+ @Resource
+ AuthService authService;
+
+ @org.junit.Test
+ public void test() throws Exception {
+ var param = new AuthAccountPasswordLoginParam();
+ param.setAccount("superAdmin");
+ param.setPassword("3578ea7ec54cf6c870892438b63f30af45096e4c91f3753ae377f369207cc0f7c1fc028bd24464eea8fb9f8e8bc3dd2c9d009351b16f56ee9aee30d6d5c98d1e71e9e9076a3042107eae7edd2666794967d7787b92a1053efc976438db518ee01cd88177a921");
+ var result = authService.doLogin(param, SaClientTypeEnum.B.getValue());
+ System.out.println(result);
+ }
+
+
+}
diff --git a/src/test/java/mjkf/xinke/UploadFileTest.java b/src/test/java/mjkf/xinke/UploadFileTest.java
new file mode 100644
index 0000000..0c90379
--- /dev/null
+++ b/src/test/java/mjkf/xinke/UploadFileTest.java
@@ -0,0 +1,49 @@
+package mjkf.xinke;
+
+import cn.hutool.core.util.ZipUtil;
+import mjkf.xinke.dev.modular.file.enums.DevFileEngineTypeEnum;
+import mjkf.xinke.dev.modular.file.service.DevFileService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.text.MessageFormat;
+
+@SpringBootTest(classes = Application.class)
+@RunWith(SpringJUnit4ClassRunner.class)
+public class UploadFileTest {
+ @Resource
+ DevFileService devFileService;
+
+ @Test
+ public void test() throws Exception {
+ var filePath = "C:\\Users\\Administrator\\Desktop\\材料管理系统模版\\主材\\网络价格.xlsx";
+ var file = new File(filePath);
+ 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);
+ }
+
+ private MultipartFile mockMultipartFile(File file, String fileName, String contentType) {
+ try {
+ // 使用文件内容和文件名创建MockMultipartFile
+ MockMultipartFile mockMultipartFile = new MockMultipartFile(
+ "file", // 参数名,与表单提交时的name属性一致
+ fileName, // 文件名
+ contentType, // 文件内容类型
+ new FileInputStream(file) // 文件内容
+ );
+ return mockMultipartFile;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+}