diff --git a/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java b/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java index f4ee98e..d364dc0 100644 --- a/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java +++ b/src/main/java/mjkf/xinke/main/constant/MaterialTaskType.java @@ -291,8 +291,6 @@ public class MaterialTaskType { /** * todo-1 数据展示模块 地市暂不切换 * todo-1 趋势图一年每月打点 - * todo-1 项目材料价格预算“最高(低)总金额”携带上价格的月份 - * todo-1 项目材料价格预算计算数值没有小数点 */ } 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 8de522a..4333390 100644 --- a/src/main/java/mjkf/xinke/main/model/db/Budget.java +++ b/src/main/java/mjkf/xinke/main/model/db/Budget.java @@ -43,17 +43,27 @@ public class Budget extends Model { @ApiModelProperty("总数") @TableField("AMOUNT") - private Integer amount; + private Double amount; @ApiModelProperty("最小值") @TableField("MIN_AMOUNT") @JsonProperty(value = "min_amount") - private Integer minAmount; + private Double minAmount; @ApiModelProperty("最大值") @TableField("MAX_AMOUNT") @JsonProperty(value = "max_amount") - private Integer maxAmount; + 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`") @@ -74,19 +84,21 @@ public class Budget extends Model { public Budget() {} - public Budget(BudgetCreateRequest params, SaBaseLoginUser user, Map totalMap) { + public Budget(BudgetCreateRequest params, SaBaseLoginUser user, Map totalMap) { this.update(params, user, totalMap); } - public void update(BudgetCreateRequest params, SaBaseLoginUser user, Map totalMap) { + public void update(BudgetCreateRequest params, SaBaseLoginUser user, Map totalMap) { this.name = params.getName(); - this.amount = params.getItems().stream().mapToInt(item -> item.getTotalPrice()).sum(); + this.amount = params.getItems().stream().mapToDouble(item -> item.getTotalPrice()).sum(); - List> list = new ArrayList(totalMap.entrySet()); - Collections.sort(list, (o1, o2) -> (o1.getValue() - o2.getValue())); + 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(); 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 4d66b59..8ea09fb 100644 --- a/src/main/java/mjkf/xinke/main/model/db/BudgetItem.java +++ b/src/main/java/mjkf/xinke/main/model/db/BudgetItem.java @@ -63,11 +63,11 @@ public class BudgetItem extends Model { @ApiModelProperty("单价") @TableField("UNIT_PRICE") - private Integer unitPrice; + private Double unitPrice; @ApiModelProperty("总价") @TableField("TOTAL_PRICE") - private Integer totalPrice; + private Double totalPrice; @Override public Serializable pkVal() { diff --git a/src/main/java/mjkf/xinke/main/model/db/PricePublish.java b/src/main/java/mjkf/xinke/main/model/db/PricePublish.java index 46cf8a4..e9ddd34 100644 --- a/src/main/java/mjkf/xinke/main/model/db/PricePublish.java +++ b/src/main/java/mjkf/xinke/main/model/db/PricePublish.java @@ -134,7 +134,7 @@ public class PricePublish extends Model { @TableField("PRICE_PINTAN") private BigDecimal pricePintan; - @ApiModelProperty("平潭价格") + @ApiModelProperty("漳州开发区价格") @TableField("PRICE_ZHANGZHOUKFQ") private BigDecimal priceZhangzhouKfq; 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 317469f..e2c2723 100644 --- a/src/main/java/mjkf/xinke/main/model/vo/BudgetCreateRequest.java +++ b/src/main/java/mjkf/xinke/main/model/vo/BudgetCreateRequest.java @@ -42,38 +42,38 @@ public class BudgetCreateRequest { @ApiModelProperty("单价") @JsonProperty(value = "unit_price") - private Integer unitPrice; + private Double unitPrice; @ApiModelProperty("数量") private Integer quantity; @ApiModelProperty("总价") @JsonProperty(value = "total_price") - private Integer totalPrice; + private Double totalPrice; } - public Map getTotalMap(Map priceMap) { + public Map getTotalMap(Map priceMap) { var params = this; - var totalMap = new HashMap(); + 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); - var total = totalMap.getOrDefault(month.toString(), 0); + 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) { + 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); + var price = priceMap.getOrDefault(key, 0.0); meta.add(Map.of( "month", month, "total", price * item.getQuantity(), 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 a18af75..e3f6a87 100644 --- a/src/main/java/mjkf/xinke/main/model/vo/BudgetDetail.java +++ b/src/main/java/mjkf/xinke/main/model/vo/BudgetDetail.java @@ -16,13 +16,13 @@ public class BudgetDetail{ private String name; - private Integer amount; + private Double amount; @JsonProperty(value = "min_amount") - private Integer minAmount; + private Double minAmount; @JsonProperty(value = "max_amount") - private Integer maxAmount; + private Double maxAmount; private LocalDate date; diff --git a/src/main/java/mjkf/xinke/main/service/PricePublishService.java b/src/main/java/mjkf/xinke/main/service/PricePublishService.java index 1e09d55..58b9943 100644 --- a/src/main/java/mjkf/xinke/main/service/PricePublishService.java +++ b/src/main/java/mjkf/xinke/main/service/PricePublishService.java @@ -46,12 +46,12 @@ public class PricePublishService extends ServiceImpl, P return query; } - public Map getPriceMapEntryByMaterialIdAndMonth(LambdaQueryWrapper query) { - var result = new HashMap(); + public Map getPriceMapEntryByMaterialIdAndMonth(LambdaQueryWrapper query) { + var result = new HashMap(); var items = this.list(query); for (PricePublish item: items) { var key = item.getName() + item.getMonth().toString(); - result.put(key, item.getPrice().intValue()); + result.put(key, item.getPrice().doubleValue()); } return result; } diff --git a/src/main/resources/_sql/init/mysql/v0.1.sql b/src/main/resources/_sql/init/mysql/v0.1.sql index 0dad685..8bcb6d4 100644 --- a/src/main/resources/_sql/init/mysql/v0.1.sql +++ b/src/main/resources/_sql/init/mysql/v0.1.sql @@ -26,4 +26,17 @@ CREATE UNIQUE INDEX Idx_key ON FUJIAN_SURVEY (NAME, SPEC, DATE, REGION); DROP INDEX Idx_key ON FUZHOU_HIGHWAY_BUREAU; CREATE UNIQUE INDEX Idx_key ON FUZHOU_HIGHWAY_BUREAU (NAME, SPEC, DATE, REGION); DROP INDEX Idx_key ON FUZHOU_TRANSPORTATION_BUREAU; -CREATE UNIQUE INDEX Idx_key ON FUZHOU_TRANSPORTATION_BUREAU (NAME, SPEC, DATE, REGION); \ No newline at end of file +CREATE UNIQUE INDEX Idx_key ON FUZHOU_TRANSPORTATION_BUREAU (NAME, SPEC, DATE, REGION); + +ALTER TABLE BUDGET_ITEM MODIFY UNIT_PRICE decimal(16,4) COMMENT '单价'; +ALTER TABLE BUDGET_ITEM MODIFY TOTAL_PRICE decimal(16,4) COMMENT '总价'; +ALTER TABLE BUDGET MODIFY AMOUNT decimal(16,4) COMMENT '总数'; +ALTER TABLE BUDGET MODIFY MIN_AMOUNT decimal(16,4) COMMENT '最小值'; +ALTER TABLE BUDGET MODIFY MAX_AMOUNT decimal(16,4) COMMENT '最大值'; + +ALTER TABLE PRICE_PUBLISH ADD PRICE_ZHANGZHOUKFQ decimal(16,4) NULL COMMENT '漳州开发区价格'; +ALTER TABLE PRICE_PUBLISH + MODIFY COLUMN PRICE_ZHANGZHOUKFQ decimal(16,4) COMMENT '漳州开发区价格' AFTER PRICE_PINTAN; + +ALTER TABLE BUDGET ADD MIN_MONTH varchar(16) NULL COMMENT '最小值月份'; +ALTER TABLE BUDGET ADD MAX_MONTH varchar(16) NULL COMMENT '最大值月份'; \ No newline at end of file