From 41303ff3b8f764ffb5c97d49da454764829f3cd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 31 Dec 2024 09:25:46 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix(=E6=88=90=E6=9C=AC=E5=88=86=E6=9E=90):?= =?UTF-8?q?=20=E4=BF=AE=E5=A4=8D=E8=AE=A1=E7=AE=97=E6=88=90=E6=9C=AC?= =?UTF-8?q?=E6=97=B6=E8=8E=B7=E5=8F=96=E7=89=A9=E6=96=99=E5=B7=A5=E6=97=B6?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProcessRouteTaskProcessesMapper.java | 9 ++---- .../technology/pojo/dto/WorkingHourDTO.java | 13 ++++++++ .../service/BomCostCalculateService.java | 32 +++++++++++-------- .../ProcessRouteTaskProcessesService.java | 15 +++------ .../src/main/resources/bootstrap-dev.yaml | 6 ++-- .../ProcessRouteTaskProcessesMapper.xml | 19 +---------- 6 files changed, 44 insertions(+), 50 deletions(-) create mode 100644 nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/dto/WorkingHourDTO.java diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/mapper/master/ProcessRouteTaskProcessesMapper.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/mapper/master/ProcessRouteTaskProcessesMapper.java index e75f5d3f..832e0b30 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/mapper/master/ProcessRouteTaskProcessesMapper.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/mapper/master/ProcessRouteTaskProcessesMapper.java @@ -1,11 +1,10 @@ package com.nflg.product.technology.mapper.master; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.product.technology.pojo.dto.WorkingHourDTO; import com.nflg.product.technology.pojo.entity.ProcessRouteTaskProcessesEntity; -import java.math.BigDecimal; -import java.util.Map; -import java.util.Set; +import java.util.List; /** *

@@ -17,7 +16,5 @@ import java.util.Set; */ public interface ProcessRouteTaskProcessesMapper extends BaseMapper { - Map getWorkingHours(Set materialNos); - - Map getWorkingHour(String materialNo); + List getWorkingHour(String materialNo); } diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/dto/WorkingHourDTO.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/dto/WorkingHourDTO.java new file mode 100644 index 00000000..8b9c5cde --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/dto/WorkingHourDTO.java @@ -0,0 +1,13 @@ +package com.nflg.product.technology.pojo.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class WorkingHourDTO { + + private String materialWork; + + private BigDecimal workHours = BigDecimal.ZERO; +} 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 7fe28e07..94d36883 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 @@ -8,6 +8,7 @@ import com.nflg.product.technology.pojo.BomCostCalculateConfig; import com.nflg.product.technology.pojo.dto.EBomCostCacheDTO; import com.nflg.product.technology.pojo.dto.EBomDTO; import com.nflg.product.technology.pojo.dto.ProductionCostDTO; +import com.nflg.product.technology.pojo.dto.WorkingHourDTO; import com.nflg.product.technology.pojo.entity.EBomChildEntity; import com.nflg.product.technology.pojo.entity.EBomParentEntity; import com.nflg.product.technology.pojo.entity.PaintCostConfigEntity; @@ -93,7 +94,7 @@ public class BomCostCalculateService { .filter(d -> StrUtil.equals(d.getParentMaterialNo(), dto.getMaterialNo())) .collect(Collectors.toList()); if (StrUtil.isBlank(cdata)) { - Map workingHours = processRouteTaskProcessesService.getWorkingHour(dto.getMaterialNo()); + List workingHours = processRouteTaskProcessesService.getWorkingHour(dto.getMaterialNo()); EBomCostCacheDTO cdto = new EBomCostCacheDTO(); cdto.setMaterialNo(dto.getMaterialNo()); cdto.setCategoryCode(dto.getMaterialCategoryCode()); @@ -171,7 +172,7 @@ public class BomCostCalculateService { } } - private List calculateProductionCosts(EBomDTO d, BomCostCalculateConfig config, Map workHours) { + private List calculateProductionCosts(EBomDTO d, BomCostCalculateConfig config, List workHours) { List productionCosts = new ArrayList<>(); BigDecimal hourlyWages; BigDecimal benefit; @@ -210,7 +211,7 @@ public class BomCostCalculateService { } } - private BigDecimal calculateWorkshopOfficeExpenses(EBomDTO dto, BomCostCalculateConfig config, Map workHours) { + private BigDecimal calculateWorkshopOfficeExpenses(EBomDTO dto, BomCostCalculateConfig config, List workHours) { BigDecimal cost = BigDecimal.ZERO; for (VirtualWorkingItemVO vw : config.getVirtualWorkings()) { cost = cost.add(vw.getWorkshopOfficeFee().multiply(getGsForWorkingType(dto, workHours, vw))); @@ -218,7 +219,7 @@ public class BomCostCalculateService { return cost; } - private BigDecimal calculateAuxiliaryDepartmentExpenses(EBomDTO dto, BomCostCalculateConfig config, Map workHours) { + private BigDecimal calculateAuxiliaryDepartmentExpenses(EBomDTO dto, BomCostCalculateConfig config, List workHours) { BigDecimal cost = BigDecimal.ZERO; for (VirtualWorkingItemVO vw : config.getVirtualWorkings()) { cost = cost.add(vw.getAssistantFee().multiply(getGsForWorkingType(dto, workHours, vw))); @@ -226,7 +227,7 @@ public class BomCostCalculateService { return cost; } - private BigDecimal calculateAuxiliaryDepartmentLaborCost(EBomDTO dto, BomCostCalculateConfig config, Map workHours) { + private BigDecimal calculateAuxiliaryDepartmentLaborCost(EBomDTO dto, BomCostCalculateConfig config, List workHours) { BigDecimal cost = BigDecimal.ZERO; for (VirtualWorkingItemVO vw : config.getVirtualWorkings()) { cost = cost.add(vw.getAssistantLaborFee().multiply(getGsForWorkingType(dto, workHours, vw))); @@ -234,7 +235,7 @@ public class BomCostCalculateService { return cost; } - private BigDecimal calculateWorkshopManagementLaborCost(EBomDTO dto, BomCostCalculateConfig config, Map workHours) { + private BigDecimal calculateWorkshopManagementLaborCost(EBomDTO dto, BomCostCalculateConfig config, List workHours) { BigDecimal cost = BigDecimal.ZERO; for (VirtualWorkingItemVO vw : config.getVirtualWorkings()) { cost = cost.add(vw.getWorkshopLaborFee().multiply(getGsForWorkingType(dto, workHours, vw))); @@ -242,7 +243,7 @@ public class BomCostCalculateService { return cost; } - private BigDecimal calculateDepreciationCost(EBomDTO dto, BomCostCalculateConfig config, Map workHours) { + private BigDecimal calculateDepreciationCost(EBomDTO dto, BomCostCalculateConfig config, List workHours) { BigDecimal cost = BigDecimal.ZERO; for (VirtualWorkingItemVO vw : config.getVirtualWorkings()) { cost = cost.add(vw.getEquipmentDepreciationFee().multiply(getGsForWorkingType(dto, workHours, vw))); @@ -250,7 +251,7 @@ public class BomCostCalculateService { return cost; } - private BigDecimal calculateHydropowerCost(EBomDTO dto, BomCostCalculateConfig config, Map workHours) { + private BigDecimal calculateHydropowerCost(EBomDTO dto, BomCostCalculateConfig config, List workHours) { BigDecimal cost = BigDecimal.ZERO; for (VirtualWorkingItemVO vw : config.getVirtualWorkings()) { cost = cost.add(vw.getConsumablesFee().multiply(getGsForWorkingType(dto, workHours, vw))); @@ -258,19 +259,24 @@ public class BomCostCalculateService { return cost; } - private BigDecimal getGsForWorkingType(EBomDTO dto, Map workHours, VirtualWorkingItemVO vw) { - return workHours.getOrDefault(dto.getMaterialNo() + '-' + vw.getWorkingTypeName(), BigDecimal.ZERO); + private BigDecimal getGsForWorkingType(EBomDTO dto, List workHours, VirtualWorkingItemVO vw) { + String key = dto.getMaterialNo() + '-' + StrUtil.trim(vw.getWorkingTypeName()); + return workHours.stream() + .filter(wh -> wh.getMaterialWork().equals(key)) + .findFirst() + .orElse(new WorkingHourDTO()) + .getWorkHours(); } - private BigDecimal calculateWelfareExpenses(EBomDTO dto, BomCostCalculateConfig config, Map workHours) { + private BigDecimal calculateWelfareExpenses(EBomDTO dto, BomCostCalculateConfig config, List workHours) { return getTGS(dto, config, workHours).multiply(Optional.ofNullable(config.getManday().getBenefit()).orElse(BigDecimal.ZERO)); } - private BigDecimal calculatePieceRateSalary(EBomDTO dto, BomCostCalculateConfig config, Map workHours) { + private BigDecimal calculatePieceRateSalary(EBomDTO dto, BomCostCalculateConfig config, List workHours) { return getTGS(dto, config, workHours).multiply(Optional.ofNullable(config.getManday().getHourlyWages()).orElse(BigDecimal.ZERO)); } - private BigDecimal getTGS(EBomDTO dto, BomCostCalculateConfig config, Map workHours) { + private BigDecimal getTGS(EBomDTO dto, BomCostCalculateConfig config, List workHours) { BigDecimal gs = BigDecimal.ZERO; for (VirtualWorkingItemVO vw : config.getVirtualWorkings()) { gs = gs.add(getGsForWorkingType(dto, workHours, vw)); diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProcessRouteTaskProcessesService.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProcessRouteTaskProcessesService.java index 48d3a080..7f0d6fdb 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProcessRouteTaskProcessesService.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProcessRouteTaskProcessesService.java @@ -2,14 +2,13 @@ package com.nflg.product.technology.service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nflg.product.technology.mapper.master.ProcessRouteTaskProcessesMapper; +import com.nflg.product.technology.pojo.dto.WorkingHourDTO; import com.nflg.product.technology.pojo.entity.ProcessRouteTaskProcessesEntity; import org.springframework.stereotype.Service; -import java.math.BigDecimal; -import java.util.HashMap; -import java.util.Map; +import java.util.Collections; +import java.util.List; import java.util.Optional; -import java.util.Set; /** *

@@ -22,11 +21,7 @@ import java.util.Set; @Service public class ProcessRouteTaskProcessesService extends ServiceImpl { - public Map getWorkingHours(Set materialNos) { - return Optional.ofNullable(this.baseMapper.getWorkingHours(materialNos)).orElse(new HashMap<>()); - } - - public Map getWorkingHour(String materialNo) { - return Optional.ofNullable(this.baseMapper.getWorkingHour(materialNo)).orElse(new HashMap<>()); + public List getWorkingHour(String materialNo) { + return Optional.ofNullable(this.baseMapper.getWorkingHour(materialNo)).orElse(Collections.emptyList()); } } diff --git a/nflg_project_dev/nflg-technology/src/main/resources/bootstrap-dev.yaml b/nflg_project_dev/nflg-technology/src/main/resources/bootstrap-dev.yaml index 5d58a6b2..4dc1edd1 100644 --- a/nflg_project_dev/nflg-technology/src/main/resources/bootstrap-dev.yaml +++ b/nflg_project_dev/nflg-technology/src/main/resources/bootstrap-dev.yaml @@ -2,7 +2,7 @@ nacos: server-addr: 192.168.0.194:8848 spring: redis: - database: 2 + database: 3 host: 192.168.0.194 password: port: 6379 @@ -11,8 +11,8 @@ spring: lettuce: pool: max-wait: -1ms - max-active: 8 - max-idle: 8 + max-active: 100 + max-idle: 100 min-idle: 0 logging: config: classpath:logback-sit.xml \ No newline at end of file diff --git a/nflg_project_dev/nflg-technology/src/main/resources/mapper/master/ProcessRouteTaskProcessesMapper.xml b/nflg_project_dev/nflg-technology/src/main/resources/mapper/master/ProcessRouteTaskProcessesMapper.xml index 4c230766..d9414d3c 100644 --- a/nflg_project_dev/nflg-technology/src/main/resources/mapper/master/ProcessRouteTaskProcessesMapper.xml +++ b/nflg_project_dev/nflg-technology/src/main/resources/mapper/master/ProcessRouteTaskProcessesMapper.xml @@ -2,24 +2,7 @@ - - SELECT CONCAT_WS('-', rt.material_no, t.`name`) AS 'material_work', SUM(IFNULL(r.two_work_hours, 0)) work_hours FROM t_technology_working_type t From 83d886d1e141637f648b8602a9120b8842436320 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 31 Dec 2024 11:12:30 +0800 Subject: [PATCH 2/4] =?UTF-8?q?perf(core=E6=A8=A1=E5=9D=97):=20=E4=B8=8D?= =?UTF-8?q?=E4=BD=BF=E7=94=A8lettuce=EF=BC=8C=E4=BD=BF=E7=94=A8jedis?= =?UTF-8?q?=EF=BC=8C=E5=8E=9F=E6=9D=A5=E5=B0=B1=E5=BC=95=E5=85=A5=E4=BA=86?= =?UTF-8?q?jedis=EF=BC=8C=E4=BD=86=E6=98=AF=E6=B2=A1=E6=9C=89=E6=8A=8Alett?= =?UTF-8?q?uce=E6=8E=92=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nflg_project_dev/nflg-boot-base/nflg-boot-core/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/nflg_project_dev/nflg-boot-base/nflg-boot-core/pom.xml b/nflg_project_dev/nflg-boot-base/nflg-boot-core/pom.xml index 91a6c68c..d428c7d4 100644 --- a/nflg_project_dev/nflg-boot-base/nflg-boot-core/pom.xml +++ b/nflg_project_dev/nflg-boot-base/nflg-boot-core/pom.xml @@ -62,6 +62,12 @@ org.springframework.boot spring-boot-starter-data-redis + + + io.lettuce + lettuce-core + + From c47d47d62ebc8cc67e2b5ae702fb87d6b5361bc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 31 Dec 2024 11:14:15 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix(=E6=88=90=E6=9C=AC=E5=88=86=E6=9E=90):?= =?UTF-8?q?=20=E8=AE=A1=E7=AE=97=E9=AB=98=E4=BB=B7=E5=80=BC=E5=A4=96?= =?UTF-8?q?=E8=B4=AD=E4=BB=B6=E6=B7=BB=E5=8A=A0null=E5=88=A4=E6=96=AD?= =?UTF-8?q?=EF=BC=8C=E5=9B=A0=E4=B8=BA=E5=A6=82=E6=9E=9C=E6=98=AFT?= =?UTF-8?q?=E9=A1=B9=E7=9A=84=E8=AF=9D=E6=98=AF=E6=B2=A1=E6=9C=89=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E6=95=B0=E6=8D=AE=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ProductCostAnalysisService.java | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProductCostAnalysisService.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProductCostAnalysisService.java index b591e08e..58847955 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProductCostAnalysisService.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProductCostAnalysisService.java @@ -192,25 +192,29 @@ public class ProductCostAnalysisService { private void buildHighValuePurchasedParts(Long parentRowId, HighValuePurchasedPartsVO pvo, BigDecimal num, BigDecimal price, List datas) { List children = ebomService.getChildren(parentRowId); - children.parallelStream().forEach(child -> { + children.forEach(child -> { EBomCostCacheDTO ccost = datas.stream().filter(d -> StrUtil.equals(d.getMaterialNo(), child.getMaterialNo())).findFirst().orElse(null); BigDecimal tnum = child.getNum().multiply(num); - if (ccost.isPurchasedParts() && ccost.getTotalCost().compareTo(price) >= 0) { - MaterialCostVO cvo; - cvo = pvo.getCosts().stream().filter(v -> StrUtil.equals(v.getMaterialNo(), child.getMaterialNo())).findFirst().orElse(null); - if (Objects.isNull(cvo)) { - cvo = new MaterialCostVO(); - cvo.setMaterialNo(child.getMaterialNo()); - cvo.setPrice(ccost.getTotalCost()); - cvo.setNum(tnum); - pvo.getCosts().add(cvo); - } else { - cvo.setNum(cvo.getNum().add(tnum)); + if (Objects.isNull(ccost)) { + log.error("没有找到{}的缓存数据", child.getMaterialNo()); + } else { + if (ccost.isPurchasedParts() && ccost.getTotalCost().compareTo(price) >= 0) { + MaterialCostVO cvo; + cvo = pvo.getCosts().stream().filter(v -> StrUtil.equals(v.getMaterialNo(), child.getMaterialNo())).findFirst().orElse(null); + if (Objects.isNull(cvo)) { + cvo = new MaterialCostVO(); + cvo.setMaterialNo(child.getMaterialNo()); + cvo.setPrice(ccost.getTotalCost()); + cvo.setNum(tnum); + pvo.getCosts().add(cvo); + } else { + cvo.setNum(cvo.getNum().add(tnum)); + } + } + EBomParentEntity cparent = ebomService.getParent(child.getMaterialNo()); + if (Objects.nonNull(cparent)) { + buildHighValuePurchasedParts(cparent.getRowId(), pvo, tnum, price, datas); } - } - EBomParentEntity cparent = ebomService.getParent(child.getMaterialNo()); - if (Objects.nonNull(cparent)) { - buildHighValuePurchasedParts(cparent.getRowId(), pvo, tnum, price, datas); } }); } 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 4/4] =?UTF-8?q?fix(=E6=88=90=E6=9C=AC=E5=88=86=E6=9E=90):?= =?UTF-8?q?=20=E4=BF=AE=E5=A4=8D=E4=BB=B7=E6=A0=BC=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E5=92=8C=E5=8D=95=E5=B1=82=E6=88=90=E6=9C=AC=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E9=97=AE=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反序列化失败"); } }