diff --git a/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java b/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java index 4bd736d..0d9ca22 100644 --- a/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java +++ b/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java @@ -308,5 +308,25 @@ public class MaterialTaskType { ); return types.contains(type); } + + /** + * 是否住建厅 + */ + public static boolean isDepartment(Integer type) { + var types = List.of( + FUJIAN_DEPARTMENT_FUZHOU, + FUJIAN_DEPARTMENT_LONGYAN, + FUJIAN_DEPARTMENT_NANPING, + FUJIAN_DEPARTMENT_NINGDE, + FUJIAN_DEPARTMENT_PINTAN, + FUJIAN_DEPARTMENT_PUTIAN, + FUJIAN_DEPARTMENT_QUANZHOU, + FUJIAN_DEPARTMENT_SANMING, + FUJIAN_DEPARTMENT_XIAMEN, + FUJIAN_DEPARTMENT_ZHANGZHOU, + FUJIAN_DEPARTMENT_ZHANGZHOUKFQ + ); + return types.contains(type); + } } diff --git a/src/main/java/mjkf/xinke/main/model/db/DataFujian.java b/src/main/java/mjkf/xinke/main/model/db/DataFujian.java index 846bce2..79fe3e6 100644 --- a/src/main/java/mjkf/xinke/main/model/db/DataFujian.java +++ b/src/main/java/mjkf/xinke/main/model/db/DataFujian.java @@ -1,5 +1,6 @@ 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; @@ -12,6 +13,9 @@ 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; /** *

@@ -80,4 +84,37 @@ public class DataFujian extends Model { public Serializable pkVal() { return this.id; } + + + public DataFujian () {} + + public DataFujian (Row row, MaterialTask task) { + var policy = Row.MissingCellPolicy.CREATE_NULL_AS_BLANK; + row.getCell(0, policy).setCellType(CellType.STRING); + row.getCell(5, policy).setCellType(CellType.NUMERIC); + this.setNumber(row.getCell(0, policy).getStringCellValue()); + this.setName(row.getCell(1, policy).getStringCellValue().replace(" ", "")); + this.setSpec(row.getCell(2, policy).getStringCellValue().replace(" ", "")); + this.setUnit(row.getCell(3, policy).getStringCellValue()); + this.setPrice(BigDecimal.valueOf(row.getCell(5, policy).getNumericCellValue())); + this.setDate(LocalDate.of(task.getYear(), task.getMonth(), 1)); // 从任务获取日期 + this.setCity(MaterialTaskType.getRegion(task.getType())); + if (ObjectUtil.isEmpty(this.getNumber())) { + throw new IllegalArgumentException("缺少材料编号"); + } + if (ObjectUtil.isEmpty(this.getPrice())) { + throw new IllegalArgumentException("缺少价格"); + } + } + + public DataFujian update(DataFujian item) { + this.setNumber(item.getNumber()); + this.setSpec(item.getSpec()); + this.setUnit(item.getUnit()); + this.setName(item.getName()); + this.setPrice(item.getPrice()); + this.setCity(item.getCity()); + this.setDate(item.getDate()); + return this; + } } diff --git a/src/main/java/mjkf/xinke/main/service/DataFujianService.java b/src/main/java/mjkf/xinke/main/service/DataFujianService.java index 095c5d5..0567f4f 100644 --- a/src/main/java/mjkf/xinke/main/service/DataFujianService.java +++ b/src/main/java/mjkf/xinke/main/service/DataFujianService.java @@ -3,6 +3,7 @@ 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 mjkf.xinke.main.model.db.DataNetwork; import org.springframework.stereotype.Service; import java.time.LocalDate; @@ -34,11 +35,9 @@ public class DataFujianService extends DataService, DataF public LambdaQueryWrapper indexQuery(DataFujian data) { LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(DataFujian::getYear, data.getYear()); - query.eq(DataFujian::getMonth, data.getMonth()); + query.eq(DataFujian::getDate, data.getDate()); query.eq(DataFujian::getCity, data.getCity()); - query.eq(DataFujian::getName, data.getName()); - query.eq(DataFujian::getSpec, data.getSpec()); + query.eq(DataFujian::getNumber, data.getNumber()); return query; } @@ -48,11 +47,10 @@ public class DataFujianService extends DataService, DataF 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()); +// o.setYear(Integer.valueOf(item.get("year").toString())); +// o.setMonth(Integer.valueOf(item.get("month").toString())); +// o.setCity(item.get("city").toString()); + o.setNumber(item.get("number").toString()); return o; } @@ -62,15 +60,9 @@ public class DataFujianService extends DataService, DataF query.eq(DataFujian::getName, data.getName()); query.eq(DataFujian::getCity, data.getCity()); query.eq(DataFujian::getSpec, data.getSpec()); - var endDate = LocalDate.of(year, month, 1).plusMonths(1); - var startDate = endDate.minusYears(1); - query.and(e -> e - .eq(DataFujian::getYear, startDate.getYear()) - .between(DataFujian::getMonth, startDate.getMonth(), 12).or() - .eq(DataFujian::getYear, endDate.getYear()) - .between(DataFujian::getMonth, 1, endDate.getMonth()) - ); - query.orderByAsc(DataFujian::getYear, DataFujian::getMonth); + var date = LocalDate.of(year, month, 1); + query.between(DataFujian::getDate, date.minusYears(1), date.plusMonths(1)); + query.orderByAsc(DataFujian::getDate); 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 e5a1f11..9d609d4 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 DataNetworkService dataNetworkService; @Resource DataAdjacentService dataAdjacentService; + @Resource + DataFujianService dataFujianService; @Override public boolean save(MaterialTask data) { @@ -74,11 +76,13 @@ public class MaterialTaskService extends ServiceImpl, M // 解析 List rows = this.getTableRows(file); // 导入 - List list; + List list = List.of(); if (data.getType().equals(MaterialTaskType.SANMING_STEEL)) { list = sanmingSteelService.saveOrUpdateByIndexBatch(rows, data); } else if (MaterialTaskType.isLocalMaterial(data.getType())) { list = localMaterialService.saveOrUpdateByIndexBatch(rows, data); + } else if (MaterialTaskType.isDepartment(data.getType())) { + list = dataFujianService.saveOrUpdateByIndexBatch(rows, data); } else if (data.getType().equals(MaterialTaskType.ASPHALT_MODIFIER)) { list = asphaltModifierService.saveOrUpdateByIndexBatch(rows, data); } else if (MaterialTaskType.isNetworkPrice(data.getType())) {