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); 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; package mjkf.xinke.main.model.db;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
@@ -12,6 +13,9 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import mjkf.xinke.main.constant.MaterialTaskType;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
/** /**
* <p> * <p>
@@ -80,4 +84,37 @@ public class DataFujian extends Model<DataFujian> {
public Serializable pkVal() { public Serializable pkVal() {
return this.id; 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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import mjkf.xinke.main.model.db.DataFujian; import mjkf.xinke.main.model.db.DataFujian;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import mjkf.xinke.main.model.db.DataNetwork;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate; import java.time.LocalDate;
@@ -34,11 +35,9 @@ public class DataFujianService extends DataService<BaseMapper<DataFujian>, DataF
public LambdaQueryWrapper<DataFujian> indexQuery(DataFujian data) { public LambdaQueryWrapper<DataFujian> indexQuery(DataFujian data) {
LambdaQueryWrapper<DataFujian> query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DataFujian> query = new LambdaQueryWrapper<>();
query.eq(DataFujian::getYear, data.getYear()); query.eq(DataFujian::getDate, data.getDate());
query.eq(DataFujian::getMonth, data.getMonth());
query.eq(DataFujian::getCity, data.getCity()); query.eq(DataFujian::getCity, data.getCity());
query.eq(DataFujian::getName, data.getName()); query.eq(DataFujian::getNumber, data.getNumber());
query.eq(DataFujian::getSpec, data.getSpec());
return query; return query;
} }
@@ -48,11 +47,10 @@ public class DataFujianService extends DataService<BaseMapper<DataFujian>, DataF
public DataFujian getMapGroupingBy(Map item) { public DataFujian getMapGroupingBy(Map item) {
var o = new DataFujian(); var o = new DataFujian();
o.setYear(Integer.valueOf(item.get("year").toString())); // o.setYear(Integer.valueOf(item.get("year").toString()));
o.setMonth(Integer.valueOf(item.get("month").toString())); // o.setMonth(Integer.valueOf(item.get("month").toString()));
o.setCity(item.get("city").toString()); // o.setCity(item.get("city").toString());
o.setName(item.get("name").toString()); o.setNumber(item.get("number").toString());
o.setSpec(item.get("spec").toString());
return o; return o;
} }
@@ -62,15 +60,9 @@ public class DataFujianService extends DataService<BaseMapper<DataFujian>, DataF
query.eq(DataFujian::getName, data.getName()); query.eq(DataFujian::getName, data.getName());
query.eq(DataFujian::getCity, data.getCity()); query.eq(DataFujian::getCity, data.getCity());
query.eq(DataFujian::getSpec, data.getSpec()); query.eq(DataFujian::getSpec, data.getSpec());
var endDate = LocalDate.of(year, month, 1).plusMonths(1); var date = LocalDate.of(year, month, 1);
var startDate = endDate.minusYears(1); query.between(DataFujian::getDate, date.minusYears(1), date.plusMonths(1));
query.and(e -> e query.orderByAsc(DataFujian::getDate);
.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);
return query; return query;
} }

View File

@@ -40,6 +40,8 @@ public class MaterialTaskService extends ServiceImpl<BaseMapper<MaterialTask>, M
DataNetworkService dataNetworkService; DataNetworkService dataNetworkService;
@Resource @Resource
DataAdjacentService dataAdjacentService; DataAdjacentService dataAdjacentService;
@Resource
DataFujianService dataFujianService;
@Override @Override
public boolean save(MaterialTask data) { public boolean save(MaterialTask data) {
@@ -74,11 +76,13 @@ public class MaterialTaskService extends ServiceImpl<BaseMapper<MaterialTask>, M
// 解析 // 解析
List<Row> rows = this.getTableRows(file); List<Row> rows = this.getTableRows(file);
// 导入 // 导入
List list; List list = List.of();
if (data.getType().equals(MaterialTaskType.SANMING_STEEL)) { if (data.getType().equals(MaterialTaskType.SANMING_STEEL)) {
list = sanmingSteelService.saveOrUpdateByIndexBatch(rows, data); list = sanmingSteelService.saveOrUpdateByIndexBatch(rows, data);
} else if (MaterialTaskType.isLocalMaterial(data.getType())) { } else if (MaterialTaskType.isLocalMaterial(data.getType())) {
list = localMaterialService.saveOrUpdateByIndexBatch(rows, data); list = localMaterialService.saveOrUpdateByIndexBatch(rows, data);
} else if (MaterialTaskType.isDepartment(data.getType())) {
list = dataFujianService.saveOrUpdateByIndexBatch(rows, data);
} else if (data.getType().equals(MaterialTaskType.ASPHALT_MODIFIER)) { } else if (data.getType().equals(MaterialTaskType.ASPHALT_MODIFIER)) {
list = asphaltModifierService.saveOrUpdateByIndexBatch(rows, data); list = asphaltModifierService.saveOrUpdateByIndexBatch(rows, data);
} else if (MaterialTaskType.isNetworkPrice(data.getType())) { } else if (MaterialTaskType.isNetworkPrice(data.getType())) {