From 5361de770bfce6d4073c3dd8d1fc8a6bf0a0b075 Mon Sep 17 00:00:00 2001 From: han0 Date: Mon, 11 Nov 2024 16:54:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=87=8D=E5=86=99=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=A2=84=E7=AE=97=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/controller/BudgetController.java | 175 +++++++++--------- .../controller/PricePublishController.java | 7 + .../java/mjkf/xinke/main/model/db/Budget.java | 104 ++++++----- .../mjkf/xinke/main/model/db/BudgetItem.java | 71 +++++-- .../main/model/vo/BudgetCreateRequest.java | 119 ++++++++---- .../xinke/main/model/vo/BudgetDetail.java | 18 +- .../main/service/PricePublishService.java | 13 +- src/main/resources/_sql/init/mysql/tools.sql | 23 +++ src/main/resources/_sql/init/mysql/v0.3.sql | 14 -- src/main/resources/_sql/init/mysql/v0.4.sql | 19 ++ 10 files changed, 348 insertions(+), 215 deletions(-) create mode 100644 src/main/resources/_sql/init/mysql/tools.sql create mode 100644 src/main/resources/_sql/init/mysql/v0.4.sql diff --git a/src/main/java/mjkf/xinke/main/controller/BudgetController.java b/src/main/java/mjkf/xinke/main/controller/BudgetController.java index 8a2aa90..315dacd 100644 --- a/src/main/java/mjkf/xinke/main/controller/BudgetController.java +++ b/src/main/java/mjkf/xinke/main/controller/BudgetController.java @@ -55,104 +55,95 @@ public class BudgetController { ) throws Exception { params.check(); var user = StpLoginUserUtil.getLoginUser(); - - // 查询各月份材料价格 - LambdaQueryWrapper query = pricePublishService.getQuery(params); - // 转换查询结果为键值对 材料id,月份 => 价格 - var priceMap = pricePublishService.getPriceMapEntryByMaterialIdAndMonth(query); - // 各月份求和 - var totalMap = params.getTotalMap(priceMap); - var budgetItemList = params.getBudgetItemList(priceMap); // 入库 - var budget = new Budget(params, user, totalMap); + var budget = new Budget(params, user); budgetService.save(budget); - for (var budgetItem: budgetItemList) { - budgetItem.setBudgetId(budget.getId()); - budgetItemService.save(budgetItem); + for (var item: params.getItems()) { + budgetItemService.save(new BudgetItem(budget.getId(), item)); } - return FuHttpResponse.Builder().dataResponse(budgetItemList).build(); + return FuHttpResponse.Builder().dataResponse(budget).build(); } - @ApiOperation("查询预算") - @GetMapping("/") - public HttpResponse list ( - @ApiParam(value = "每页数量") @RequestParam(name = "size", required = false, defaultValue = "10") Integer size, - @ApiParam(value = "页码") @RequestParam(name = "current", required = false, defaultValue = "1") Integer current, - @ApiParam(value = "名称") @RequestParam(value="name", required = false) String name - ) throws Exception { - var query = new LambdaQueryWrapper(); - if (!ObjectUtils.isEmpty(name)) { - query.like(Budget::getName, name); - } - var result = budgetService.page(new Page<>(current, size), query); - return FuHttpResponse.Builder().dataResponse(result).build(); - } - - @ApiOperation("删除预算") - @CommonLog("删除预算") - @DeleteMapping("/") - public HttpResponse delete ( - @ApiParam(value = "id列表:1,2,3") @RequestParam(value="ids") String ids - ) throws Exception { - var idList = Arrays.asList(ids.split(",")); - var query = new LambdaQueryWrapper(); - query.in(Budget::getId, idList); - budgetService.remove(query); - return FuHttpResponse.Builder().dataResponse().build(); - } - - @ApiOperation("预算详情") - @GetMapping("/{id}") - public HttpResponse detail ( - @ApiParam(value = "id") @PathVariable("id") Integer id - ) throws Exception { - var budget = budgetService.getById(id); - if (budget == null) { - throw new NcHttpException(HttpErrorResponseEnum.BUDGET_NOT_FOUND); - } - - var query = new LambdaQueryWrapper(); - query.eq(BudgetItem::getBudgetId, id); - var list = budgetItemService.list(query); - - var result = new BudgetDetail(budget, list); - return FuHttpResponse.Builder().dataResponse(result).build(); - } - - @ApiOperation("预算编辑") - @CommonLog("预算编辑") - @PutMapping("/{id}") - public HttpResponse edit ( - @ApiParam("id") @PathVariable String id, - @ApiParam("参数") @RequestBody BudgetCreateRequest params - ) throws Exception { - params.check(); - var user = StpLoginUserUtil.getLoginUser(); - - var budget = budgetService.getById(id); - if (budget == null) { - throw new NcHttpException(HttpErrorResponseEnum.BUDGET_NOT_FOUND); - } - - // 查询各月份材料价格 - LambdaQueryWrapper query = pricePublishService.getQuery(params); - // 转换查询结果为键值对 材料id,月份 => 价格 - var priceMap = pricePublishService.getPriceMapEntryByMaterialIdAndMonth(query); - // 各月份求和 - var totalMap = params.getTotalMap(priceMap); - var budgetItemList = params.getBudgetItemList(priceMap); - // 入库 - budget.update(params, user, totalMap); - budgetService.updateById(budget); - budgetItemService.remove(new LambdaQueryWrapper().eq(BudgetItem::getBudgetId, id)); - for (var budgetItem: budgetItemList) { - budgetItem.setBudgetId(budget.getId()); - budgetItemService.save(budgetItem); - } - - return FuHttpResponse.Builder().dataResponse(budgetItemList).build(); - } +// @ApiOperation("查询预算") +// @GetMapping("/") +// public HttpResponse list ( +// @ApiParam(value = "每页数量") @RequestParam(name = "size", required = false, defaultValue = "10") Integer size, +// @ApiParam(value = "页码") @RequestParam(name = "current", required = false, defaultValue = "1") Integer current, +// @ApiParam(value = "名称") @RequestParam(value="name", required = false) String name +// ) throws Exception { +// var query = new LambdaQueryWrapper(); +// if (!ObjectUtils.isEmpty(name)) { +// query.like(Budget::getName, name); +// } +// var result = budgetService.page(new Page<>(current, size), query); +// return FuHttpResponse.Builder().dataResponse(result).build(); +// } +// +// @ApiOperation("删除预算") +// @CommonLog("删除预算") +// @DeleteMapping("/") +// public HttpResponse delete ( +// @ApiParam(value = "id列表:1,2,3") @RequestParam(value="ids") String ids +// ) throws Exception { +// var idList = Arrays.asList(ids.split(",")); +// var query = new LambdaQueryWrapper(); +// query.in(Budget::getId, idList); +// budgetService.remove(query); +// return FuHttpResponse.Builder().dataResponse().build(); +// } +// +// @ApiOperation("预算详情") +// @GetMapping("/{id}") +// public HttpResponse detail ( +// @ApiParam(value = "id") @PathVariable("id") Integer id +// ) throws Exception { +// var budget = budgetService.getById(id); +// if (budget == null) { +// throw new NcHttpException(HttpErrorResponseEnum.BUDGET_NOT_FOUND); +// } +// +// var query = new LambdaQueryWrapper(); +// query.eq(BudgetItem::getBudgetId, id); +// var list = budgetItemService.list(query); +// +// var result = new BudgetDetail(budget, list); +// return FuHttpResponse.Builder().dataResponse(result).build(); +// } +// +// @ApiOperation("预算编辑") +// @CommonLog("预算编辑") +// @PutMapping("/{id}") +// public HttpResponse edit ( +// @ApiParam("id") @PathVariable String id, +// @ApiParam("参数") @RequestBody BudgetCreateRequest params +// ) throws Exception { +// params.check(); +// var user = StpLoginUserUtil.getLoginUser(); +// +// var budget = budgetService.getById(id); +// if (budget == null) { +// throw new NcHttpException(HttpErrorResponseEnum.BUDGET_NOT_FOUND); +// } +// +// // 查询各月份材料价格 +// LambdaQueryWrapper query = pricePublishService.getQuery(params); +// // 转换查询结果为键值对 材料id,月份 => 价格 +// var priceMap = pricePublishService.getPriceMapEntryByMaterialIdAndMonth(query); +// // 各月份求和 +// var totalMap = params.getTotalMap(priceMap); +// var budgetItemList = params.getBudgetItemList(priceMap); +// // 入库 +// budget.update(params, user, totalMap); +// budgetService.updateById(budget); +// budgetItemService.remove(new LambdaQueryWrapper().eq(BudgetItem::getBudgetId, id)); +// for (var budgetItem: budgetItemList) { +// budgetItem.setBudgetId(budget.getId()); +// budgetItemService.save(budgetItem); +// } +// +// return FuHttpResponse.Builder().dataResponse(budgetItemList).build(); +// } // todo-1 地图里程数据 // todo-2 外省数据上传 diff --git a/src/main/java/mjkf/xinke/main/controller/PricePublishController.java b/src/main/java/mjkf/xinke/main/controller/PricePublishController.java index 6fe6d62..946ddfb 100644 --- a/src/main/java/mjkf/xinke/main/controller/PricePublishController.java +++ b/src/main/java/mjkf/xinke/main/controller/PricePublishController.java @@ -47,6 +47,13 @@ public class PricePublishController { if (year == null || month == null) { throw new NcHttpException(HttpErrorResponseEnum.PRICE_PUBLISH_YEAR_MONTH_NEEDED); } + // 获取最新数据 + if (month < 0 || year < 0) { + var date = pricePublishService.getLatestDate(); + year = date.getYear(); + month = date.getMonth(); + } + var query = pricePublishService.getQuery(year, month, materialId, name, spec, type); query.orderByAsc(PricePublish::getMaterialId); var result = pricePublishService.list(query); diff --git a/src/main/java/mjkf/xinke/main/model/db/Budget.java b/src/main/java/mjkf/xinke/main/model/db/Budget.java index 4333390..3c471f9 100644 --- a/src/main/java/mjkf/xinke/main/model/db/Budget.java +++ b/src/main/java/mjkf/xinke/main/model/db/Budget.java @@ -41,41 +41,49 @@ public class Budget extends Model { @TableField("`NAME`") private String name; - @ApiModelProperty("总数") + @ApiModelProperty("当期总价") @TableField("AMOUNT") private Double amount; - @ApiModelProperty("最小值") - @TableField("MIN_AMOUNT") - @JsonProperty(value = "min_amount") - private Double minAmount; + @ApiModelProperty("基期总价") + @TableField("BASE_AMOUNT") + private Double baseAmount; - @ApiModelProperty("最大值") - @TableField("MAX_AMOUNT") - @JsonProperty(value = "max_amount") - private Double maxAmount; + @ApiModelProperty("调差金额") + @TableField("DIFF") + private Double diff; - @ApiModelProperty("最小值月份") - @TableField("MIN_MONTH") - @JsonProperty(value = "min_month") - private String minMonth; - - @ApiModelProperty("最大值月份") - @TableField("MAX_MONTH") - @JsonProperty(value = "max_month") - private String maxMonth; +// @ApiModelProperty("最小值") +// @TableField("MIN_AMOUNT") +// @JsonProperty(value = "min_amount") +// private Double minAmount; +// +// @ApiModelProperty("最大值") +// @TableField("MAX_AMOUNT") +// @JsonProperty(value = "max_amount") +// private Double maxAmount; +// +// @ApiModelProperty("最小值月份") +// @TableField("MIN_MONTH") +// @JsonProperty(value = "min_month") +// private String minMonth; +// +// @ApiModelProperty("最大值月份") +// @TableField("MAX_MONTH") +// @JsonProperty(value = "max_month") +// private String maxMonth; @ApiModelProperty("日期") @TableField("`DATE`") private LocalDate date; - - @ApiModelProperty("年份") - @TableField("`YEAR`") - private Integer year; - - @ApiModelProperty("月份") - @TableField(value="`MONTHS`", typeHandler = FastjsonArrayHandler.class) - private List months; +// +// @ApiModelProperty("年份") +// @TableField("`YEAR`") +// private Integer year; +// +// @ApiModelProperty("月份") +// @TableField(value="`MONTHS`", typeHandler = FastjsonArrayHandler.class) +// private List months; @Override public Serializable pkVal() { @@ -84,26 +92,36 @@ public class Budget extends Model { public Budget() {} - public Budget(BudgetCreateRequest params, SaBaseLoginUser user, Map totalMap) { - this.update(params, user, totalMap); + public Budget(BudgetCreateRequest params, SaBaseLoginUser user) { + this.update(params, user); } +// public Budget(BudgetCreateRequest params, SaBaseLoginUser user, Map totalMap) { +// this.update(params, user, totalMap); +// } - public void update(BudgetCreateRequest params, SaBaseLoginUser user, Map totalMap) { - this.name = params.getName(); - this.amount = params.getItems().stream().mapToDouble(item -> item.getTotalPrice()).sum(); - - List> list = new ArrayList(totalMap.entrySet()); - Collections.sort(list, (o1, o2) -> (o1.getValue().compareTo(o2.getValue()))); - - this.minAmount = list.get(0).getValue(); - this.maxAmount = list.get(list.size() -1).getValue(); - this.minMonth = list.get(0).getKey(); - this.maxMonth = list.get(list.size() -1).getKey(); -// list.get(0).getKey(); -// list.get(list.size() -1 ).getKey(); +// public void update(BudgetCreateRequest params, SaBaseLoginUser user, Map totalMap) { +// this.name = params.getName(); +// this.amount = params.getItems().stream().mapToDouble(item -> item.getTotalPrice()).sum(); +// +// List> list = new ArrayList(totalMap.entrySet()); +// Collections.sort(list, (o1, o2) -> (o1.getValue().compareTo(o2.getValue()))); +// +// this.minAmount = list.get(0).getValue(); +// this.maxAmount = list.get(list.size() -1).getValue(); +// this.minMonth = list.get(0).getKey(); +// this.maxMonth = list.get(list.size() -1).getKey(); +//// list.get(0).getKey(); +//// list.get(list.size() -1 ).getKey(); +// this.date = LocalDate.now(); +// this.year = params.getYear(); +// this.months = params.getMonths(); +// } + public void update(BudgetCreateRequest param, SaBaseLoginUser user) { + this.name = param.getName(); + this.baseAmount = param.getTotalBaseAmount(); // 基期总价 + this.diff = param.getTotalDiff(); // 调差金额 + this.amount = baseAmount + diff; // 当期总价 this.date = LocalDate.now(); - this.year = params.getYear(); - this.months = params.getMonths(); } } diff --git a/src/main/java/mjkf/xinke/main/model/db/BudgetItem.java b/src/main/java/mjkf/xinke/main/model/db/BudgetItem.java index 8ea09fb..410a1af 100644 --- a/src/main/java/mjkf/xinke/main/model/db/BudgetItem.java +++ b/src/main/java/mjkf/xinke/main/model/db/BudgetItem.java @@ -49,25 +49,58 @@ public class BudgetItem extends Model { @TableField("`NAME`") private String name; - @ApiModelProperty("总数") - @TableField("QUANTITY") - private Integer quantity; +// @ApiModelProperty("总数") +// @TableField("QUANTITY") +// private Integer quantity; - @ApiModelProperty("数据") - @TableField(value="`META`", typeHandler = FastjsonArrayHandler.class) - private List> meta; +// @ApiModelProperty("数据") +// @TableField(value="`META`", typeHandler = FastjsonArrayHandler.class) +// private List> meta; @ApiModelProperty("单位") @TableField("UNIT") private String unit; - @ApiModelProperty("单价") - @TableField("UNIT_PRICE") - private Double unitPrice; +// @ApiModelProperty("单价") +// @TableField("UNIT_PRICE") +// private Double unitPrice; +// +// @ApiModelProperty("总价") +// @TableField("TOTAL_PRICE") +// private Double totalPrice; - @ApiModelProperty("总价") - @TableField("TOTAL_PRICE") - private Double totalPrice; + @ApiModelProperty("单价") + @JsonProperty(value = "price") + @TableField("PRICE") + private Double price; + + @ApiModelProperty("基期单价") + @JsonProperty(value = "base_price") + @TableField("BASE_PRICE") + private Double basePrice; + + @ApiModelProperty("涨跌幅") + @JsonProperty(value = "chg") + @TableField("CHG") + private Double chg; + + @ApiModelProperty("幅度差") + @JsonProperty(value = "chg_diff") + @TableField("CHG_DIFF") + private Double chgDiff; + + @ApiModelProperty("项目金额") + @TableField("AMOUNT") + private Double amount; + + @ApiModelProperty("材料占比") + @TableField("RATIO") + private Double ratio; + + @ApiModelProperty("调差金额") + @TableField("AMOUNT_DIFF") + @JsonProperty(value = "amount_diff") + private Double amountDiff; @Override public Serializable pkVal() { @@ -76,12 +109,16 @@ public class BudgetItem extends Model { public BudgetItem() {} - public BudgetItem(BudgetCreateRequest.BudgetMaterial item, ArrayList> meta) { - this.meta = meta; + public BudgetItem(Integer budgetId, BudgetCreateRequest.BudgetMaterial item) { + this.budgetId = budgetId; this.name = item.getName(); - this.quantity = item.getQuantity(); this.unit = item.getUnit(); - this.unitPrice = item.getUnitPrice(); - this.totalPrice = item.getTotalPrice(); + this.price = item.getPrice(); + this.basePrice = item.getBasePrice(); + this.chg = item.getChg(); + this.chgDiff = item.getChgDiff(); + this.amount = item.getAmount(); + this.ratio = item.getRatio(); + this.amountDiff = item.getAmountDiff(); } } diff --git a/src/main/java/mjkf/xinke/main/model/vo/BudgetCreateRequest.java b/src/main/java/mjkf/xinke/main/model/vo/BudgetCreateRequest.java index e2c2723..c522f9b 100644 --- a/src/main/java/mjkf/xinke/main/model/vo/BudgetCreateRequest.java +++ b/src/main/java/mjkf/xinke/main/model/vo/BudgetCreateRequest.java @@ -1,5 +1,6 @@ package mjkf.xinke.main.model.vo; +import cn.hutool.core.util.ObjectUtil; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -21,7 +22,15 @@ public class BudgetCreateRequest { private Integer year; @ApiModelProperty("月份") - private List months; + private Integer month; + + @ApiModelProperty("基期年份") + @JsonProperty(value = "base_year") + private Integer baseYear; + + @ApiModelProperty("基期月份") + @JsonProperty(value = "base_month") + private Integer baseMonth; @ApiModelProperty("材料") private List items; @@ -41,49 +50,81 @@ public class BudgetCreateRequest { private String unit; @ApiModelProperty("单价") - @JsonProperty(value = "unit_price") - private Double unitPrice; + @JsonProperty(value = "price") + private Double price; - @ApiModelProperty("数量") - private Integer quantity; + @ApiModelProperty("基期单价") + @JsonProperty(value = "base_price") + private Double basePrice; - @ApiModelProperty("总价") - @JsonProperty(value = "total_price") - private Double totalPrice; + @ApiModelProperty("涨跌幅") + @JsonProperty(value = "chg") + private Double chg; + + @ApiModelProperty("幅度差") + @JsonProperty(value = "chg_diff") + private Double chgDiff; + + @ApiModelProperty("项目金额") + private Double amount; + + @ApiModelProperty("材料占比") + private Double ratio; + + @ApiModelProperty("调差金额") + @JsonProperty(value = "amount_diff") + private Double amountDiff; + +// @ApiModelProperty("总价") +// @JsonProperty(value = "total_price") +// private Double totalPrice; } - public Map getTotalMap(Map priceMap) { - var params = this; - var totalMap = new HashMap(); - for (var item: params.getItems()) { - for (var month: params.getMonths()) { - var key = item.getName() + month.toString(); - var price = priceMap.getOrDefault(key, 0.0); - var total = totalMap.getOrDefault(month.toString(), 0.0); - totalMap.put(month.toString(), total + price * item.getQuantity()); - } - } - return totalMap; +// public Map getTotalMap(Map priceMap) { +// var params = this; +// var totalMap = new HashMap(); +// for (var item: params.getItems()) { +// for (var month: params.getMonths()) { +// var key = item.getName() + month.toString(); +// var price = priceMap.getOrDefault(key, 0.0); +// var total = totalMap.getOrDefault(month.toString(), 0.0); +// totalMap.put(month.toString(), total + price * item.getQuantity()); +// } +// } +// return totalMap; +// } + +// public List getBudgetItemList(Map priceMap) { +// var params = this; +// var budgetItemList = new ArrayList(); +// for (var item: params.getItems()) { +// var meta = new ArrayList>(); +// for (var month: params.getMonths()) { +// var key = item.getName() + month.toString(); +// var price = priceMap.getOrDefault(key, 0.0); +// meta.add(Map.of( +// "month", month, +// "total", price * item.getQuantity(), +// "price", price +// ) +// ); +// } +// var budgetItem = new BudgetItem(item, meta); +// budgetItemList.add(budgetItem); +// } +// return budgetItemList; +// } + + public Double getTotalBaseAmount() { + var result = this.items.stream() + .filter(i-> ObjectUtil.isNotEmpty(i.getAmount()) && ObjectUtil.isNotEmpty(i.getRatio())) + .mapToDouble(i->i.getAmount() * i.getRatio() / 100) + .sum(); + return result; } - public List getBudgetItemList(Map priceMap) { - var params = this; - var budgetItemList = new ArrayList(); - for (var item: params.getItems()) { - var meta = new ArrayList>(); - for (var month: params.getMonths()) { - var key = item.getName() + month.toString(); - var price = priceMap.getOrDefault(key, 0.0); - meta.add(Map.of( - "month", month, - "total", price * item.getQuantity(), - "price", price - ) - ); - } - var budgetItem = new BudgetItem(item, meta); - budgetItemList.add(budgetItem); - } - return budgetItemList; + public Double getTotalDiff() { + var result = this.items.stream().filter(i-> ObjectUtil.isNotEmpty(i.getAmountDiff())).mapToDouble(i->i.getAmountDiff()).sum(); + return result; } } diff --git a/src/main/java/mjkf/xinke/main/model/vo/BudgetDetail.java b/src/main/java/mjkf/xinke/main/model/vo/BudgetDetail.java index e3f6a87..69b6fbb 100644 --- a/src/main/java/mjkf/xinke/main/model/vo/BudgetDetail.java +++ b/src/main/java/mjkf/xinke/main/model/vo/BudgetDetail.java @@ -35,14 +35,14 @@ public class BudgetDetail{ public BudgetDetail() {} public BudgetDetail(Budget data, List list) { - this.id = data.getId(); - this.name = data.getName(); - this.amount = data.getAmount(); - this.minAmount = data.getMinAmount(); - this.maxAmount = data.getMaxAmount(); - this.date = data.getDate(); - this.year = data.getYear(); - this.months = data.getMonths(); - this.list = list; +// this.id = data.getId(); +// this.name = data.getName(); +// this.amount = data.getAmount(); +// this.minAmount = data.getMinAmount(); +// this.maxAmount = data.getMaxAmount(); +// this.date = data.getDate(); +// this.year = data.getYear(); +// this.months = data.getMonths(); +// this.list = list; } } diff --git a/src/main/java/mjkf/xinke/main/service/PricePublishService.java b/src/main/java/mjkf/xinke/main/service/PricePublishService.java index f8cd3da..6b23f03 100644 --- a/src/main/java/mjkf/xinke/main/service/PricePublishService.java +++ b/src/main/java/mjkf/xinke/main/service/PricePublishService.java @@ -7,7 +7,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import mjkf.xinke.main.model.vo.BudgetCreateRequest; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -40,7 +42,7 @@ public class PricePublishService extends ServiceImpl, P public LambdaQueryWrapper getQuery(BudgetCreateRequest params) { var query = new LambdaQueryWrapper(); query.eq(PricePublish::getYear, params.getYear()); - query.in(PricePublish::getMonth, params.getMonths()); + query.in(PricePublish::getMonth, List.of(params.getMonth(), params.getBaseMonth())); query.in(PricePublish::getName, params.getItems().stream().map(item -> item.getName()).collect(Collectors.toList())); // query.in(PricePublish::getMaterialId, params.getItems().stream().map(item -> item.getId()).collect(Collectors.toList())); return query; @@ -55,5 +57,14 @@ public class PricePublishService extends ServiceImpl, P } return result; } + + public Date getLatestDate() { + var query = new LambdaQueryWrapper(); + query.orderByDesc(PricePublish::getYear); + query.orderByDesc(PricePublish::getMonth); + var data = this.getOne(query, false); + var result = new Date(data.getYear(), data.getMonth(), 1); + return result; + } } diff --git a/src/main/resources/_sql/init/mysql/tools.sql b/src/main/resources/_sql/init/mysql/tools.sql new file mode 100644 index 0000000..7e9c89a --- /dev/null +++ b/src/main/resources/_sql/init/mysql/tools.sql @@ -0,0 +1,23 @@ +-- 删除6月份至今数据 +select * from PRICE_PUBLISH where year = 2024 and month >= 6; +select * from PRICE_RESULT where year = 2024 and month >= 6; +select * from DATA_FUJIAN where year = 2024 and month >= 6; +select * from DATA_ADJACENT where year = 2024 and month >= 6; +select * from DATA_NETWORK where date >= '2024-6-1'; +select * from SANMING_STEEL where date >= '2024-6-1'; +select * from FUZHOU_HIGHWAY_BUREAU where date >= '2024-6-1'; +select * from FUZHOU_TRANSPORTATION_BUREAU where date >= '2024-6-1'; +select * from FUJIAN_SURVEY where date >= '2024-6-1'; +# Guangzhou +# Meizhou +# Chaozhou +# Nanchang +# Fuzhou +# Ganzhou +# Shangrao +# Yingtan +# Hangzhou +# Lishui +# Quzhou +# Wenzhou +# Kunming diff --git a/src/main/resources/_sql/init/mysql/v0.3.sql b/src/main/resources/_sql/init/mysql/v0.3.sql index 9e16445..9bc3068 100644 --- a/src/main/resources/_sql/init/mysql/v0.3.sql +++ b/src/main/resources/_sql/init/mysql/v0.3.sql @@ -49,20 +49,6 @@ create table DATA_ADJACENT ( -Guangzhou -Meizhou -Chaozhou -Nanchang -Fuzhou -Ganzhou -Shangrao -Yingtan -Hangzhou -Lishui -Quzhou -Wenzhou -Kunming - diff --git a/src/main/resources/_sql/init/mysql/v0.4.sql b/src/main/resources/_sql/init/mysql/v0.4.sql new file mode 100644 index 0000000..959384a --- /dev/null +++ b/src/main/resources/_sql/init/mysql/v0.4.sql @@ -0,0 +1,19 @@ +# ALTER TABLE BUDGET ADD AMOUNT decimal(16,4) default 0 comment '当期总价'; +ALTER TABLE BUDGET ADD BASE_AMOUNT decimal(16,4) default 0 comment '基期总价'; +ALTER TABLE BUDGET ADD DIFF decimal(16,4) default 0 comment '调差金额'; + + +ALTER TABLE BUDGET_ITEM ADD PRICE decimal(16,4) default 0 comment '单价'; +ALTER TABLE BUDGET_ITEM ADD BASE_PRICE decimal(16,4) default 0 comment '基期单价'; +ALTER TABLE BUDGET_ITEM ADD CHG decimal(16,4) default 0 comment '涨跌幅'; +ALTER TABLE BUDGET_ITEM ADD CHG_DIFF decimal(16,4) default 0 comment '幅度差'; +ALTER TABLE BUDGET_ITEM ADD AMOUNT decimal(16,4) default 0 comment '项目金额'; +ALTER TABLE BUDGET_ITEM ADD RATIO decimal(16,4) default 0 comment '材料占比'; +ALTER TABLE BUDGET_ITEM ADD AMOUNT_DIFF decimal(16,4) default 0 comment '调差金额'; + + + + + + +