feat: 新增住建厅导入的功能

This commit is contained in:
han0
2025-03-21 08:29:16 +08:00
parent bc336ea47b
commit 67ed98a813
4 changed files with 72 additions and 19 deletions

View File

@@ -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);
}
}

View File

@@ -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;
/**
* <p>
@@ -80,4 +84,37 @@ public class DataFujian extends Model<DataFujian> {
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;
}
}

View File

@@ -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<BaseMapper<DataFujian>, DataF
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::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<BaseMapper<DataFujian>, 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<BaseMapper<DataFujian>, 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;
}

View File

@@ -40,6 +40,8 @@ public class MaterialTaskService extends ServiceImpl<BaseMapper<MaterialTask>, M
DataNetworkService dataNetworkService;
@Resource
DataAdjacentService dataAdjacentService;
@Resource
DataFujianService dataFujianService;
@Override
public boolean save(MaterialTask data) {
@@ -74,11 +76,13 @@ public class MaterialTaskService extends ServiceImpl<BaseMapper<MaterialTask>, M
// 解析
List<Row> 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())) {