From 475b124cc3a9b8daf9c05d228d961ad083d91d8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Sun, 5 Jan 2025 21:53:28 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=88=90=E6=9C=AC=E5=88=86=E6=9E=90):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BB=B7=E6=A0=BC=E8=AE=A1=E7=AE=97=E5=92=8C?= =?UTF-8?q?=E5=8D=95=E5=B1=82=E6=88=90=E6=9C=AC=E6=8E=92=E5=BA=8F=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/technology/pojo/dto/EBomDTO.java | 5 ---- .../pojo/entity/EBomChildEntity.java | 12 ++++----- .../pojo/vo/HighValuePurchasedPartsVO.java | 5 ++++ .../service/BomCostCalculateService.java | 4 +-- .../technology/service/EBomService.java | 27 +++++++++++++------ .../product/technology/util/JsonUtil.java | 3 +++ 6 files changed, 35 insertions(+), 21 deletions(-) diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/dto/EBomDTO.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/dto/EBomDTO.java index 80377d9d..eaa21d50 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/dto/EBomDTO.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/dto/EBomDTO.java @@ -27,11 +27,6 @@ public class EBomDTO { */ private String materialUnit; - /** - * 单重 - */ - private BigDecimal unitWeight; - /** * 最近采购价格 */ diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/EBomChildEntity.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/EBomChildEntity.java index 3fa683c9..22efd98b 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/EBomChildEntity.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/EBomChildEntity.java @@ -78,12 +78,12 @@ public class EBomChildEntity implements Serializable { // @ApiModelProperty(value = "物料分类编码") // private String materialCategoryCode; - /** - * 单重 - */ - @TableField(value = "unit_weight") - @ApiModelProperty(value = "单重") - private BigDecimal unitWeight; + ///** + // * 单重 + // */ + //@TableField(value = "unit_weight") + //@ApiModelProperty(value = "单重") + //private BigDecimal unitWeight; /** * 数量 diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/HighValuePurchasedPartsVO.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/HighValuePurchasedPartsVO.java index cd91ed10..aa32e9b0 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/HighValuePurchasedPartsVO.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/HighValuePurchasedPartsVO.java @@ -1,5 +1,8 @@ package com.nflg.product.technology.pojo.vo; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.nflg.product.base.core.config.BigDecimalSerializer; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -21,6 +24,8 @@ import java.util.List; public class HighValuePurchasedPartsVO implements Serializable { @ApiModelProperty("总金额") + @JsonFormat(pattern = "#.##") + @JsonSerialize(using = BigDecimalSerializer.class) private BigDecimal totalCost = BigDecimal.ZERO; @ApiModelProperty("物料列表") diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/BomCostCalculateService.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/BomCostCalculateService.java index 94d36883..fc103dab 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/BomCostCalculateService.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/BomCostCalculateService.java @@ -205,7 +205,7 @@ public class BomCostCalculateService { private BigDecimal calculatePaintCost(EBomDTO dto) { PaintCostConfigEntity entity = paintCostConfigService.getCost(dto.getGroupName()); if (Objects.nonNull(entity)) { - return NumberUtil.mul(dto.getUnitWeight(), entity.getCost()); + return NumberUtil.mul(dto.getNum(), entity.getCost()); } else { return BigDecimal.ZERO; } @@ -291,7 +291,7 @@ public class BomCostCalculateService { private BigDecimal calculateSteelsCost(EBomDTO dto) { //是钢材 BigDecimal price = Optional.ofNullable(dto.getLastPurchasePrice()).orElse(BigDecimal.ZERO); - BigDecimal unitWeight = Optional.ofNullable(dto.getUnitWeight()).orElse(BigDecimal.ZERO); + BigDecimal unitWeight = Optional.ofNullable(dto.getNum()).orElse(BigDecimal.ZERO); BigDecimal wastage = BigDecimal.ZERO; if (StrUtil.isNotBlank(dto.getGroupName())) { SteelsCostConfigEntity steelsCostConfigEntity = steelsCostConfigService.getCost(dto.getGroupName()); diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/EBomService.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/EBomService.java index 35df7528..25ea5697 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/EBomService.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/EBomService.java @@ -6,15 +6,16 @@ import com.nflg.product.technology.pojo.entity.EBomChildEntity; import com.nflg.product.technology.pojo.entity.EBomParentEntity; import com.nflg.product.technology.util.JsonUtil; import lombok.extern.slf4j.Slf4j; -import org.springframework.data.redis.core.BoundSetOperations; +import org.springframework.dao.DataAccessException; +import org.springframework.data.redis.core.BoundZSetOperations; +import org.springframework.data.redis.core.RedisOperations; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.SessionCallback; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.time.Duration; -import java.util.List; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; @Component @@ -70,7 +71,7 @@ public class EBomService { public List getChildren(long parentRowId) { String key = buildChildCacheKey(parentRowId); - Set kvs = redisTemplate.opsForSet().members(key); + Set kvs = redisTemplate.opsForZSet().range(key, 0, -1); List entities = null; if (CollectionUtil.isEmpty(kvs)) { entities = ebomChildService.lambdaQuery() @@ -78,9 +79,19 @@ public class EBomService { .orderByAsc(EBomChildEntity::getOrderNumber) .list(); if (CollectionUtil.isNotEmpty(entities)) { - BoundSetOperations boundSetOps = redisTemplate.boundSetOps(key); - boundSetOps.add(entities.stream().map(JsonUtil::toJson).toArray(String[]::new)); - boundSetOps.expire(CACHE_DURATION_CHILD); + Map scoreMembers = new HashMap<>(); + for (EBomChildEntity entity : entities) { + scoreMembers.put(JsonUtil.toJson(entity), Double.valueOf(entity.getOrderNumber())); + } + redisTemplate.executePipelined(new SessionCallback() { + @Override + public Object execute(RedisOperations operations) throws DataAccessException { + BoundZSetOperations zSetOps = operations.boundZSetOps(key); + scoreMembers.forEach(zSetOps::add); + zSetOps.expire(CACHE_DURATION_CHILD); + return null; + } + }); } } else { entities = kvs.stream().map((v) -> JsonUtil.fromJson(v, EBomChildEntity.class)).collect(Collectors.toList()); diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/util/JsonUtil.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/util/JsonUtil.java index d2cb2225..7b1a88e3 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/util/JsonUtil.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/util/JsonUtil.java @@ -3,8 +3,10 @@ package com.nflg.product.technology.util; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.nflg.product.base.core.exception.NflgBusinessException; +import lombok.extern.slf4j.Slf4j; import nflg.product.common.constant.STATE; +@Slf4j public class JsonUtil { private static final ObjectMapper objectmapper = new ObjectMapper(); @@ -13,6 +15,7 @@ public class JsonUtil { try { return objectmapper.readValue(json, clazz); } catch (JsonProcessingException e) { + log.error("JSON反序列化失败", e); throw new NflgBusinessException(STATE.BusinessError, "JSON反序列化失败"); } }