Compare commits

...

10 Commits

Author SHA1 Message Date
han0
5d2770f4de fix: ci
Some checks failed
ci / build (push) Failing after 5s
2025-10-13 17:36:03 +08:00
han0
179a14f26b feat: 新增仅计算半年均价接口 2025-06-05 18:31:06 +08:00
han0
cf954a0a43 feat: 新增材料计算位数显示 2025-05-22 10:15:36 +08:00
han0
62fb1dc3ce fix: 修复编辑小数位数不生效的问题 2025-05-06 15:33:40 +08:00
han0
080a5480b7 fix: 修复数据展示问题 2025-04-24 12:49:32 +08:00
han0
1ac7bbfe4d fix: 更新地材处理 2025-04-22 15:48:20 +08:00
han0
26f02dfa80 feat: 更新计算价计算方式 2025-04-22 15:47:54 +08:00
han0
659bb50ad1 fix: 住建厅上传 2025-04-10 17:46:01 +08:00
han0
8b2c6db242 fix: 修复部分地市无法上传网络价格数据的问题 2025-04-07 09:37:27 +08:00
han0
04e6021156 fix: 修复无法重复上传调查表数据的问题 2025-04-07 09:14:46 +08:00
20 changed files with 552 additions and 38 deletions

41
.gitea/.m2/settings.xml Normal file
View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>.m2/repository</localRepository>
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<mirrors>
<mirror>
<id>maven-public</id>
<mirrorOf>*</mirrorOf>
<name>maven-public</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>jdk-8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>8</jdk>
</activation>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<maven.compiler.compilerVersion>8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>jdk-8</activeProfile>
</activeProfiles>
</settings>

51
.gitea/workflows/ci.yaml Normal file
View File

@@ -0,0 +1,51 @@
name: ci
on:
push:
branches:
- test
env:
MAVEN_OPTS: >-
-Dhttps.protocols=TLSv1.2
-Dmaven.repo.local=${{ github.workspace }}/.m2/repository
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN
-Dorg.slf4j.simpleLogger.showDateTime=true
-Djava.awt.headless=true
MAVEN_CLI_OPTS: >-
--batch-mode --errors --fail-at-end --show-version
--settings ${{ github.workspace }}/.gitea/.m2/settings.xml
-DinstallAtEnd=true -DdeployAtEnd=true
DEPLOY_PATH: /home/opt/app/material-manage-service
DEPLOY_TEST_HOST_IP: 172.17.0.1
jobs:
build:
runs-on: ubuntu-latest
container:
image: python:3.7.16
steps:
- name: Checkout
run: |
git clone --depth 1 "http://test:89085111dd6939710a992d6404bd61a50e420685@8.138.239.222:20300/${GITHUB_REPOSITORY}.git" .
git checkout "${GITHUB_SHA}"
- name: Build
run: |
mvn $MAVEN_CLI_OPTS clean compile package -Dmaven.test.skip=true $MAVEN_OPTS
- name: Deploy
run: |
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh -o StrictHostKeyChecking=no root@$DEPLOY_TEST_HOST_IP "mkdir -p $DEPLOY_PATH"
ssh root@$DEPLOY_TEST_HOST_IP "rm -f $DEPLOY_PATH/*.jar"
scp target/material-manage-service-*-SNAPSHOT.jar root@$DEPLOY_TEST_HOST_IP:$DEPLOY_PATH/
ssh root@$DEPLOY_TEST_HOST_IP "mv $DEPLOY_PATH/material-manage-service-*-SNAPSHOT.jar $DEPLOY_PATH/app.jar"
scp docker-compose.test.yml root@$DEPLOY_TEST_HOST_IP:$DEPLOY_PATH/
ssh root@$DEPLOY_TEST_HOST_IP "mv $DEPLOY_PATH/docker-compose.test.yml $DEPLOY_PATH/docker-compose.yml"
ssh root@$DEPLOY_TEST_HOST_IP "cd $DEPLOY_PATH && docker compose up -d --force-recreate"

View File

@@ -13,4 +13,10 @@ services:
- "19882:9882"
environment:
- TZ="Asia/Shanghai"
entrypoint: java -server -Xms256m -Xmx256m -jar app.jar --spring.profiles.active=test
entrypoint: java -server -Xms256m -Xmx256m -jar app.jar --spring.profiles.active=test
networks:
- server
networks:
server:
external: true

View File

@@ -21,6 +21,7 @@ public interface DataToolApi {
@GET("/data/collect")
Call<NcHttpResponse<String>> collect(
@Query(value = "year") Integer year,
@Query(value = "month") Integer month
@Query(value = "month") Integer month,
@Query(value = "only_avg") Integer onlyAvg
);
}

View File

@@ -32,8 +32,8 @@ public class DataToolService implements ApiService<DataToolApi> {
return response;
}
public NcHttpResponse<String> collect (Integer year, Integer month) throws Exception {
var call = this.api.collect(year, month);
public NcHttpResponse<String> collect (Integer year, Integer month, Integer onlyAvg) throws Exception {
var call = this.api.collect(year, month, onlyAvg);
var response = this.getResponse(call).body();
return response;
}

View File

@@ -237,14 +237,17 @@ public class MaterialTaskType {
*/
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
FUZHOU_NETWORK,
LONGYAN_NETWORK,
NANPING_NETWORK,
NINGDE_NETWORK,
PINTAN_NETWORK,
PUTIAN_NETWORK,
QUANZHOU_NETWORK,
SANMING_NETWORK,
XIAMEN_NETWORK,
ZHANGZHOU_NETWORK,
ZHANGZHOUKFQ_NETWORK
);
return types.contains(type);
}

View File

@@ -1,5 +1,6 @@
package mjkf.xinke.main.controller;
import cn.hutool.core.util.ObjectUtil;
import com.jgy.xxs.core.http.resp.HttpResponse;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -11,9 +12,11 @@ import mjkf.xinke.main.service.data.DataAdjacentService;
import mjkf.xinke.main.service.data.LocalMaterialService;
import mjkf.xinke.main.service.PricePublishService;
import mjkf.xinke.main.service.PriceResultService;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@@ -33,13 +36,20 @@ public class DataShowingController {
@Resource
DataAdjacentService dataAdjacentService;
@ApiOperation("钢材")
@GetMapping("/steel")
public HttpResponse steel (
@ApiParam(value = "材料编号") @RequestParam(value="materialId", required = false) String materialId
@ApiParam(value = "材料编号") @RequestParam(value="materialId", required = false) String materialId,
@ApiParam(value = "起始日期") @RequestParam(value="startDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@ApiParam(value = "结束日期") @RequestParam(value="endDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate
) throws Exception {
var query = priceResultService.getQueryByMaterialId(materialId);
query = priceResultService.queryLastYear(query);
if (ObjectUtil.isNotEmpty(startDate) || ObjectUtil.isNotEmpty(endDate)) {
} else {
query = priceResultService.queryLastYear(query);
}
var result = priceResultService.list(query);
return FuHttpResponse.Builder().dataResponse(result).build();
}

View File

@@ -1,5 +1,6 @@
package mjkf.xinke.main.controller;
import cn.hutool.core.util.ObjectUtil;
import com.jgy.xxs.core.http.exp.NcHttpException;
import com.jgy.xxs.core.http.resp.HttpResponse;
import io.swagger.annotations.ApiOperation;
@@ -12,6 +13,7 @@ import mjkf.xinke.main.constant.HttpErrorResponseEnum;
import mjkf.xinke.main.constant.PricePublishStatus;
import mjkf.xinke.main.model.db.PricePublish;
import mjkf.xinke.main.model.vo.PricePublishEditRequest;
import mjkf.xinke.main.service.MaterialService;
import mjkf.xinke.main.service.PricePublishService;
import org.springframework.web.bind.annotation.*;
@@ -32,6 +34,8 @@ public class PricePublishController {
@Resource
PricePublishService pricePublishService;
@Resource
MaterialService materialService;
@ApiOperation("获取发布价格数据列表")
@GetMapping("/")
@@ -52,9 +56,15 @@ public class PricePublishController {
year = date.getYear();
month = date.getMonthValue();
}
var query = pricePublishService.getQuery(year, month, materialId, name, spec, type);
var materialMap = materialService.mapCode();
var result = pricePublishService.list(query);
for (var item: result) {
var meterial = materialMap.get(item.getMaterialId());
if (ObjectUtil.isNotEmpty(meterial)) {
item.setRoundBit(meterial.getRoundBit());
}
}
return FuHttpResponse.Builder().dataResponse(result).build();
}
@@ -148,9 +158,10 @@ public class PricePublishController {
@GetMapping("/collect")
public HttpResponse collect(
@ApiParam("年份") @RequestParam("year") Integer year,
@ApiParam("月份") @RequestParam(value = "month") Integer month
@ApiParam("月份") @RequestParam(value = "month") Integer month,
@ApiParam("仅计算半年均价") @RequestParam(value = "onlyAvg", required = false, defaultValue = "0") Integer onlyAvg
) throws Exception {
var result = dataToolService.collect(year, month);
var result = dataToolService.collect(year, month, onlyAvg);
return FuHttpResponse.Builder().dataResponse(result).build();
}
}

View File

@@ -91,6 +91,9 @@ public class DataFujian extends Model<DataFujian> {
public DataFujian (Row row, MaterialTask task) {
var policy = Row.MissingCellPolicy.CREATE_NULL_AS_BLANK;
row.getCell(0, policy).setCellType(CellType.STRING);
row.getCell(1, policy).setCellType(CellType.STRING);
row.getCell(2, policy).setCellType(CellType.STRING);
row.getCell(3, 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(" ", ""));

View File

@@ -102,6 +102,10 @@ public class LocalMaterial extends Model<LocalMaterial> {
public LocalMaterial (Row row, MaterialTask task) {
var policy = Row.MissingCellPolicy.CREATE_NULL_AS_BLANK;
row.getCell(0).setCellType(CellType.STRING);
row.getCell(6).setCellType(CellType.NUMERIC);
row.getCell(7).setCellType(CellType.NUMERIC);
row.getCell(8).setCellType(CellType.STRING);
row.getCell(9).setCellType(CellType.STRING);
this.setMaterialId(row.getCell(0, policy).getStringCellValue());
this.setCity(row.getCell(1, policy).getStringCellValue());
this.setCounty(row.getCell(2, policy).getStringCellValue());
@@ -109,13 +113,16 @@ public class LocalMaterial extends Model<LocalMaterial> {
this.setSpec(row.getCell(4, policy).getStringCellValue().replace(" ", ""));
this.setUnit(row.getCell(5, policy).getStringCellValue());
this.setPrice(BigDecimal.valueOf(row.getCell(6, policy).getNumericCellValue()));
this.setPriceWithoutTax(BigDecimal.valueOf(row.getCell(7, policy).getNumericCellValue()));
this.setPriceWithoutTax(BigDecimal.valueOf(row.getCell(7, policy).getNumericCellValue()));
this.setPosition(row.getCell(8, policy).getStringCellValue());
this.setRemark(row.getCell(9, policy).getStringCellValue());
this.setRemark(row.getCell(9, policy).getStringCellValue());
this.setDate(LocalDate.of(task.getYear(), task.getMonth(), 1)); // 从任务获取日期
if (this.getMaterialId().isEmpty()) {
throw new IllegalArgumentException("材料编码为空");
}
if (ObjectUtil.isEmpty(this.getCounty())) {
throw new IllegalArgumentException("缺少区县");
}
if (ObjectUtil.isEmpty(this.getPrice())) {
throw new IllegalArgumentException("缺少价格");
}

View File

@@ -196,6 +196,10 @@ public class PricePublish extends Model<PricePublish> {
@TableField("DISPLAY_DIGIT")
private Integer displayDigit;
@ApiModelProperty("计算小数位数")
@TableField(exist = false)
private Integer roundBit;
@Override
public Serializable pkVal() {
return this.id;

View File

@@ -193,15 +193,20 @@ public class PriceResult extends Model<PriceResult> {
}
public void refreshWeight() {
// 浮动
var fluctuatingSum = fluctuatingFtb * weightFtb + fluctuatingSs * weightSs + fluctuatingFhb * weightFhb + fluctuatingNetwork * weightNetwork + fluctuatingSurvey * weightSurvey;
var weight = weightFtb + weightSs + weightFhb + weightNetwork + weightSurvey;
var fluctuatingWeightedMean = fluctuatingSum / weight;
fluctuatingRecommend = fluctuatingWeightedMean;
// 计算价
var priceSum = priceFtb * weightFtb + priceSs * weightSs + priceFhb * weightFhb + priceNetwork * weightNetwork + priceSurvey * weightSurvey;
var priceWeightedMean = priceSum / weight;
this.priceCalculate = priceWeightedMean;
// 推荐价
this.fluctuatingRecommend = fluctuatingWeightedMean;
if (priceLastMonth.equals(0f) || ObjectUtil.isEmpty(priceLastMonth)) {
priceRecommend = priceCalculate + fluctuatingRecommend;
this.priceRecommend = priceCalculate + fluctuatingRecommend;
} else {
priceRecommend = priceLastMonth + fluctuatingRecommend;
this.priceRecommend = priceLastMonth + fluctuatingRecommend;
}
}
}

View File

@@ -1,9 +1,12 @@
package mjkf.xinke.main.model.vo;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class MaterialEditRequest {
// @ApiModelProperty("分类1")

View File

@@ -6,6 +6,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class MaterialService extends ServiceImpl<BaseMapper<Material>, Material> {
@Deprecated
@@ -49,5 +52,11 @@ public class MaterialService extends ServiceImpl<BaseMapper<Material>, Material>
query.eq(Material::getCode, code);
return this.getOne(query, false);
}
public Map<String, Material> mapCode() {
var list = this.list();
var result = list.stream().collect(Collectors.toMap(i->i.getCode(), i->i));
return result;
}
}

View File

@@ -49,7 +49,7 @@ public class DataNetworkService extends DataService<BaseMapper<DataNetwork>, Dat
public DataNetwork getMapGroupingBy(Map item) {
var o = new DataNetwork();
o.setMaterialId(item.get("Material_id").toString());
o.setMaterialId(item.get("material_id").toString());
return o;
}

View File

@@ -35,8 +35,7 @@ public class LocalMaterialService extends DataService<BaseMapper<LocalMaterial>,
public LambdaQueryWrapper<LocalMaterial> indexQuery(LocalMaterial data) {
LambdaQueryWrapper<LocalMaterial> query = new LambdaQueryWrapper<>();
query.eq(LocalMaterial::getName, data.getName());
query.eq(LocalMaterial::getSpec, data.getSpec());
query.eq(LocalMaterial::getMaterialId, data.getMaterialId());
query.eq(LocalMaterial::getCity, data.getCity());
query.eq(LocalMaterial::getCounty, data.getCounty());
query.eq(LocalMaterial::getDate, data.getDate());
@@ -46,8 +45,7 @@ public class LocalMaterialService extends DataService<BaseMapper<LocalMaterial>,
public LambdaQueryWrapper<LocalMaterial> trendQuery(Object obj, Integer year, Integer month) {
var data = (LocalMaterial) obj;
LambdaQueryWrapper<LocalMaterial> query = new LambdaQueryWrapper<>();
query.eq(LocalMaterial::getName, data.getName());
query.eq(LocalMaterial::getSpec, data.getSpec());
query.eq(LocalMaterial::getMaterialId, data.getMaterialId());
query.eq(LocalMaterial::getCounty, data.getCounty());
var date = LocalDate.of(year, month, 1);
query.between(LocalMaterial::getDate, date.minusYears(1), date.plusMonths(1));

View File

@@ -0,0 +1,357 @@
CREATE TABLE material_manage.asphalt_domestic
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
PRICE decimal(16,4) COMMENT '价格',
DATE date COMMENT '日期',
`FROM` date COMMENT '数据来源'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.asphalt_domestic (NAME, DATE, `FROM`);
CREATE TABLE material_manage.asphalt_imported
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
PRICE decimal(16,4) COMMENT '价格',
DATE date COMMENT '日期'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.asphalt_imported (NAME, DATE);
CREATE TABLE material_manage.asphalt_modifier
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
SPEC varchar(128) COMMENT '规格',
PRICE decimal(16,4) COMMENT '价格',
DATE date COMMENT '日期'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.asphalt_modifier (NAME, SPEC, DATE);
CREATE TABLE material_manage.budget
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
AMOUNT int(11) COMMENT '总数',
MIN_AMOUNT int(11) COMMENT '最小值',
MAX_AMOUNT int(11) COMMENT '最大值',
YEAR int(11) COMMENT '年份',
MONTHS text COMMENT '月份',
DATE date COMMENT '日期'
);
CREATE TABLE material_manage.budget_item
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
BUDGET_ID int(11) COMMENT '预算id',
NAME varchar(128) COMMENT '名称',
META text COMMENT '数据',
QUANTITY int(11) COMMENT '数量',
UNIT text COMMENT '单位',
UNIT_PRICE int(11) COMMENT '单价',
TOTAL_PRICE int(11) COMMENT '总价'
);
CREATE TABLE material_manage.cement
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
SPEC varchar(128) COMMENT '规格',
PACK varchar(64) COMMENT '包装',
SOURCE varchar(64) COMMENT '产地',
PRICE decimal(16,4) COMMENT '价格',
FLUCTUATING decimal(16,4) COMMENT '浮动',
DATE date COMMENT '日期'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.cement (NAME, SPEC, PACK, SOURCE, DATE);
CREATE TABLE material_manage.data_fujian
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NUMBER varchar(128) COMMENT '编码',
NAME varchar(128) COMMENT '名称',
SPEC varchar(128) COMMENT '规格',
UNIT varchar(128) COMMENT '单位',
PRICE_WITHOUT_TAX decimal(16,4) COMMENT '除价格',
PRICE decimal(16,4) COMMENT '含税价',
CATEGORY varchar(128) COMMENT '分类',
YEAR int(11) COMMENT '年份',
MONTH int(11) COMMENT '月份',
CITY varchar(128) COMMENT '地市',
DATE date COMMENT '日期'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.data_fujian (YEAR, MONTH, CITY, NAME, SPEC);
CREATE TABLE material_manage.data_guangdong
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
URL varchar(512) COMMENT '下载地址',
NAME varchar(128) COMMENT '名称',
SOURCE varchar(128) COMMENT '来源',
DATE date COMMENT '日期'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.data_guangdong (NAME, DATE);
CREATE TABLE material_manage.data_network
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
MATERIAL_ID varchar(128),
SPEC varchar(128),
UNIT varchar(128),
BRAND varchar(128),
NAME varchar(128),
PRICE decimal(16,4),
SOURCE varchar(128),
REMARK text,
DATE date,
REGION varchar(64)
);
CREATE UNIQUE INDEX Idx_key ON material_manage.data_network (NAME, SPEC, REGION, DATE);
CREATE TABLE material_manage.data_zhejiang
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
URL varchar(512) COMMENT '下载地址',
NAME varchar(128) COMMENT '名称',
SOURCE varchar(128) COMMENT '来源',
DATE date COMMENT '日期'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.data_zhejiang (NAME, DATE);
CREATE TABLE material_manage.fujian_survey
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
SPEC varchar(128) COMMENT '规格',
PRICE decimal(16,4) COMMENT '价格',
DATE date COMMENT '日期',
MATERIAL_ID varchar(128) COMMENT '材料id',
UNIT varchar(128) COMMENT '单位',
BRAND varchar(128) COMMENT '品牌',
TAX int(11) COMMENT '税率',
REGION varchar(128) COMMENT '地区'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.fujian_survey (NAME, SPEC, DATE, REGION);
CREATE TABLE material_manage.fuzhou_highway_bureau
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
SPEC varchar(128) COMMENT '规格',
PRICE decimal(16,4) COMMENT '价格',
DATE date COMMENT '日期',
MATERIAL_ID varchar(128) COMMENT '材料id',
UNIT varchar(128) COMMENT '单位',
BRAND varchar(128) COMMENT '品牌',
REGION varchar(128) COMMENT '地区'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.fuzhou_highway_bureau (NAME, SPEC, DATE, REGION);
CREATE TABLE material_manage.fuzhou_transportation_bureau
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
SPEC varchar(128) COMMENT '规格',
PRICE decimal(16,4) COMMENT '价格',
DATE date COMMENT '日期',
MATERIAL_ID varchar(128) COMMENT '材料id',
UNIT varchar(128) COMMENT '单位',
BRAND varchar(128) COMMENT '品牌',
REGION varchar(128) COMMENT '地区'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.fuzhou_transportation_bureau (NAME, SPEC, DATE, REGION);
CREATE TABLE material_manage.local_material
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
CITY varchar(128) COMMENT '地市',
COUNTY varchar(128) COMMENT '区县',
MATERIAL_ID varchar(128) COMMENT '材料id',
SPEC varchar(128) COMMENT '规格',
UNIT varchar(128) COMMENT '单位',
PRICE decimal(16,4) COMMENT '价格',
PRICE_WITHOUT_TAX decimal(16,4) COMMENT '除税价',
DATE date COMMENT '日期',
POSITION varchar(256) COMMENT '位置',
REMARK text COMMENT '备注'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.local_material (NAME, SPEC, CITY, COUNTY, DATE);
CREATE TABLE material_manage.material
(
ID varchar(128) PRIMARY KEY NOT NULL,
PARENT_ID varchar(128),
CATEGORY1 varchar(128) COMMENT '分类1',
CATEGORY2 varchar(128) COMMENT '分类2',
CATEGORY3 varchar(128) COMMENT '分类3',
CATEGORY4 varchar(128) COMMENT '分类4',
NAME varchar(128) COMMENT '名称',
UNIT varchar(128) COMMENT '单位',
SPEC varchar(128) COMMENT '规格',
TAX int(11) COMMENT '税率(%',
IS_BUILTIN int(11) COMMENT '是否初始内建类型(不允许删除)',
TYPE int(11) COMMENT '材料类别(主材、地材)',
IS_TREE int(11) COMMENT '是否树',
SORT int(11) COMMENT '排序',
CODE varchar(20) COMMENT '材料编码',
ROUND_BIT int(11) COMMENT '保留小数位数',
ROUND_METHOD varchar(20) COMMENT '保留小数具体方法',
update_user_id varchar(64) COMMENT '最后更新人id',
update_user_name varchar(64) COMMENT '最后更新人名称',
update_time datetime COMMENT '最后更新时间',
create_user_id varchar(64) COMMENT '创建人id',
create_user_name varchar(64) COMMENT '创建人名称',
create_time datetime COMMENT '创建时间',
delete_user_id varchar(64) COMMENT '删除人id',
delete_user_name varchar(64) COMMENT '删除人名称',
delete_time datetime COMMENT '删除时间'
);
CREATE TABLE material_manage.material_task
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '任务名称',
STATUS int(11) COMMENT '状态(待采集、已采集、采集中)',
FILE varchar(256) COMMENT '文件路径',
TYPE int(11) COMMENT '类型(网络爬取、文件上传)',
YEAR int(11) COMMENT '采集年份',
MONTH int(11) COMMENT '采集月份',
CONTENT mediumtext COMMENT '数据内容',
update_user_id varchar(64) COMMENT '最后更新人id',
update_user_name varchar(64) COMMENT '最后更新人名称',
update_time datetime COMMENT '最后更新时间',
create_user_id varchar(64) COMMENT '创建人id',
create_user_name varchar(64) COMMENT '创建人名称',
create_time datetime COMMENT '创建时间',
delete_user_id varchar(64) COMMENT '删除人id',
delete_user_name varchar(64) COMMENT '删除人名称',
delete_time datetime COMMENT '删除时间'
);
CREATE TABLE material_manage.oil
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
PRICE decimal(16,4) COMMENT '价格',
DATE date COMMENT '日期'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.oil (NAME, DATE);
CREATE TABLE material_manage.price_publish
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
YEAR int(11) COMMENT '统计年份',
MONTH int(11) COMMENT '统计月份',
MATERIAL_ID varchar(128) COMMENT '编号',
NAME varchar(128) COMMENT '材料名称',
SPEC varchar(128) COMMENT '规格',
PRICE decimal(16,4) COMMENT '价格',
PRICE_FUZHOU decimal(16,4) COMMENT '福州价格',
PRICE_XIAMEN decimal(16,4) COMMENT '厦门价格',
PRICE_PUTIAN decimal(16,4) COMMENT '莆田价格',
PRICE_SANMING decimal(16,4) COMMENT '三明价格',
PRICE_QUANZHOU decimal(16,4) COMMENT '泉州价格',
PRICE_ZHANGZHOU decimal(16,4) COMMENT '漳州价格',
PRICE_NANPIN decimal(16,4) COMMENT '南平价格',
PRICE_LONGYAN decimal(16,4) COMMENT '龙岩价格',
PRICE_NINGDE decimal(16,4) COMMENT '宁德价格',
PRICE_PINTAN decimal(16,4) COMMENT '平潭价格',
PRICE_ZHANGZHOUKFQ decimal(16,4) COMMENT '漳州开发区价格',
TAX decimal(4,2) COMMENT '税率',
STATUS int(11) COMMENT '状态',
TYPE int(11) COMMENT '类型',
UNIT varchar(128) COMMENT '单位',
DISPLAY_DIGIT int(11) COMMENT '显示小数位数',
update_user_id varchar(64) COMMENT '最后更新人id',
update_user_name varchar(64) COMMENT '最后更新人名称',
update_time datetime COMMENT '最后更新时间',
create_user_id varchar(64) COMMENT '创建人id',
create_user_name varchar(64) COMMENT '创建人名称',
create_time datetime COMMENT '创建时间',
delete_user_id varchar(64) COMMENT '删除人id',
delete_user_name varchar(64) COMMENT '删除人名称',
delete_time datetime COMMENT '删除时间'
);
CREATE TABLE material_manage.price_result
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
MATERIAL_ID varchar(128) COMMENT '编号',
NAME varchar(128) COMMENT '材料名称',
YEAR int(11) COMMENT '统计年份',
MONTH int(11) COMMENT '统计月份',
PRICE_FTB decimal(16,4) COMMENT '福州交通局价格',
FLUCTUATING_FTB decimal(16,4) COMMENT '福州交通局浮动',
PRICE_SS decimal(16,4) COMMENT '三明钢铁价格',
FLUCTUATING_SS decimal(16,4) COMMENT '三明钢铁浮动',
PRICE_FHB decimal(16,4) COMMENT '福州公路局价格',
FLUCTUATING_FHB decimal(16,4) COMMENT '福州公路局浮动',
PRICE_NETWORK decimal(16,4) COMMENT '网络价格',
FLUCTUATING_NETWORK decimal(16,4) COMMENT '网络浮动',
PRICE_SURVEY decimal(16,4) COMMENT '调查价格',
FLUCTUATING_SURVEY decimal(16,4) COMMENT '调查浮动',
PRICE_LAST_MONTH decimal(16,4) COMMENT '上月发布价格',
PRICE_CALCULATE decimal(16,4) COMMENT '计算价格',
PRICE_RECOMMEND decimal(16,4) COMMENT '推荐价格',
FLUCTUATING_RECOMMEND decimal(16,4) COMMENT '推荐浮动',
PRICE_FUJIAN decimal(16,4) COMMENT '住建厅价格',
FLUCTUATING_FUJIAN decimal(16,4) COMMENT '住建厅浮动',
WEIGHT_FTB decimal(16,4),
WEIGHT_SS decimal(16,4),
WEIGHT_FHB decimal(16,4),
WEIGHT_NETWORK decimal(16,4),
WEIGHT_SURVEY decimal(16,4),
SPEC varchar(128) COMMENT '规格',
UNIT varchar(128) COMMENT '单位',
DISPLAY_DIGIT int(11) COMMENT '显示小数位数',
update_user_id varchar(64) COMMENT '最后更新人id',
update_user_name varchar(64) COMMENT '最后更新人名称',
update_time datetime COMMENT '最后更新时间',
create_user_id varchar(64) COMMENT '创建人id',
create_user_name varchar(64) COMMENT '创建人名称',
create_time datetime COMMENT '创建时间',
delete_user_id varchar(64) COMMENT '删除人id',
delete_user_name varchar(64) COMMENT '删除人名称',
delete_time datetime COMMENT '删除时间'
);
CREATE TABLE material_manage.sanming_steel
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
SPEC varchar(128) COMMENT '规格',
MATERIAL varchar(64) COMMENT '材质',
PRICE decimal(16,4) COMMENT '价格',
FLUCTUATING decimal(16,4) COMMENT '浮动',
DATE date COMMENT '日期'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.sanming_steel (NAME, SPEC, DATE);
CREATE TABLE material_manage.steel_plate
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
SPEC varchar(128) COMMENT '规格',
MATERIAL varchar(64) COMMENT '材质',
SOURCE varchar(64) COMMENT '产地',
PRICE decimal(16,4) COMMENT '价格',
FLUCTUATING decimal(16,4) COMMENT '浮动',
DATE date COMMENT '日期'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.steel_plate (NAME, SPEC, MATERIAL, SOURCE, DATE);
CREATE TABLE material_manage.steel_rebar
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
SPEC varchar(128) COMMENT '规格',
MATERIAL varchar(64) COMMENT '材质',
SOURCE varchar(64) COMMENT '产地',
PRICE decimal(16,4) COMMENT '价格',
FLUCTUATING decimal(16,4) COMMENT '浮动',
DATE date COMMENT '日期'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.steel_rebar (NAME, SPEC, MATERIAL, SOURCE, DATE);
CREATE TABLE material_manage.steel_section
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
SPEC varchar(128) COMMENT '规格',
MATERIAL varchar(64) COMMENT '材质',
SOURCE varchar(64) COMMENT '产地',
PRICE decimal(16,4) COMMENT '价格',
FLUCTUATING decimal(16,4) COMMENT '浮动',
DATE date COMMENT '日期'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.steel_section (NAME, SPEC, MATERIAL, SOURCE, DATE);
CREATE TABLE material_manage.steel_strand
(
ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME varchar(128) COMMENT '名称',
SPEC varchar(128) COMMENT '规格',
MATERIAL varchar(64) COMMENT '材质',
SOURCE varchar(64) COMMENT '产地',
PRICE decimal(16,4) COMMENT '价格',
FLUCTUATING decimal(16,4) COMMENT '浮动',
DATE date COMMENT '日期'
);
CREATE UNIQUE INDEX Idx_key ON material_manage.steel_strand (NAME, SPEC, MATERIAL, SOURCE, DATE);

View File

@@ -3,4 +3,7 @@ UPDATE MATERIAL SET ROUND_BIT = 2, ROUND_METHOD = 'none' WHERE ID IN ('300300200
UPDATE MATERIAL SET ROUND_BIT = 1, ROUND_METHOD = 'none' WHERE ID IN ('2005002', '2009028', '2009033', '5005001', '5005002', '5005003', '5005006', '5005007', '5005009', '5006001', '5006002', '5009002', '6001002', '6001003');
DROP INDEX Idx_key ON data_fujian;
DROP INDEX Idx_key ON fuzhou_highway_bureau;
DROP INDEX Idx_key ON fuzhou_highway_bureau;
DROP INDEX Idx_key ON fujian_survey;
ALTER TABLE material ALTER COLUMN ROUND_BIT SET DEFAULT 1;
ALTER TABLE material ALTER COLUMN ROUND_METHOD SET DEFAULT 'normal';

View File

@@ -4,17 +4,18 @@ spring:
datasource:
master:
driver-class-name: com.mysql.cj.jdbc.Driver
password: Xxs123456
url: jdbc:mysql://192.168.1.3:4306/material_manage?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=true
username: root
# password: XKKFB123456!
# url: jdbc:mysql://60.204.172.162:9306/material_manage?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=true
# password: Xxs123456
# url: jdbc:mysql://192.168.1.3:4306/material_manage?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=true
# username: root
password: XKKFB123456!
url: jdbc:mysql://8.138.239.222:20306/material_manage?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=true
username: root
redis:
database: 4
host: 127.0.0.1
password: ''
host: 192.168.1.3
password: Xxs123456
port: 6379
timeout: 10s
server:
port: 19882
@@ -25,7 +26,8 @@ main:
api:
host:
data-tool: http://localhost:7778
data-tool: http://localhost:17778
stirling-pdf: http://localhost:20081
path:
predict-file-dir: C:\Users\Administrator\Documents\WeChat Files\wslshanlin\FileStorage\File\2024-07

View File

@@ -19,7 +19,7 @@ main:
api:
host:
data-tool: http://material_api:7072
data-tool: http://material-api:7778
stirling-pdf: http://stirling-pdf:8080
path: