From 66f0f84eaf33205971e157878caaf5033a66ab8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 6 Jan 2025 18:30:52 +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=BA=86=E5=87=A0=E4=B8=AA=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 | 2 +- .../technology/pojo/dto/WorkingHourDTO.java | 3 ++- .../pojo/entity/EBomChildEntity.java | 12 +++++----- .../pojo/entity/PaintCostConfigEntity.java | 4 ++++ .../pojo/entity/SteelsCostConfigEntity.java | 4 ++++ .../pojo/query/PaintCostConfig.java | 5 +++++ .../pojo/query/SteelsCostConfig.java | 5 +++++ .../service/BomCostCalculateService.java | 22 ++++++++++--------- .../technology/service/EBomService.java | 3 +++ .../service/PaintCostConfigService.java | 9 ++++---- .../service/ProductCostAnalysisService.java | 8 +++++++ .../service/SteelsCostConfigService.java | 11 +++++++--- .../mapper/master/MaterialMainMapper.xml | 3 +-- 13 files changed, 64 insertions(+), 27 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 eaa21d50..cd106661 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 @@ -65,7 +65,7 @@ public class EBomDTO { /** * 材料分组名称 */ - private String groupName; + private String rawMaterialGroup; /** * 库存 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 index 8b9c5cde..53ce6056 100644 --- 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 @@ -2,10 +2,11 @@ package com.nflg.product.technology.pojo.dto; import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; @Data -public class WorkingHourDTO { +public class WorkingHourDTO implements Serializable { private String materialWork; 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 22efd98b..0d1b789f 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 @@ -57,12 +57,12 @@ public class EBomChildEntity implements Serializable { @ApiModelProperty(value = "物料编码") private String materialNo; - // /** - // * 物料描述 - // */ - // @TableField(value = "material_desc") - // @ApiModelProperty(value = "物料描述") - // private String materialDesc; + /** + * 物料描述 + */ + @TableField(value = "material_desc") + @ApiModelProperty(value = "物料描述") + private String materialDesc; /** * 单位 diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/PaintCostConfigEntity.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/PaintCostConfigEntity.java index dd9af7ee..d9e40bc4 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/PaintCostConfigEntity.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/PaintCostConfigEntity.java @@ -22,6 +22,10 @@ public class PaintCostConfigEntity extends EntityBase implements Serializable { @ApiModelProperty(value = "主键行id") private Integer id; + @TableField(value = "code") + @ApiModelProperty(value = "分类代码") + private String code; + @TableField(value = "name") @ApiModelProperty(value = "标签名称") private String name; diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/SteelsCostConfigEntity.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/SteelsCostConfigEntity.java index cbdb04c9..2c97331c 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/SteelsCostConfigEntity.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/SteelsCostConfigEntity.java @@ -22,6 +22,10 @@ public class SteelsCostConfigEntity extends EntityBase implements Serializable { @ApiModelProperty(value = "主键行id") private Integer id; + @TableField(value = "code") + @ApiModelProperty(value = "分类代码") + private String code; + @TableField(value = "name") @ApiModelProperty(value = "分类名称") private String name; diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/PaintCostConfig.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/PaintCostConfig.java index 6bba0535..8a50c96b 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/PaintCostConfig.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/PaintCostConfig.java @@ -23,6 +23,11 @@ public class PaintCostConfig implements Serializable { @ApiModelProperty(value = "主键行id") private Integer id; + @ApiModelProperty("分类代码") + @NotBlank(message = "分类代码不能为空") + @Length(max = 10, message = "分类代码不能超过10个字") + private String code; + @ApiModelProperty("标签名称") @NotBlank(message = "标签名称不能为空") @Length(max = 10, message = "标签名称不能超过10个字") diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/SteelsCostConfig.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/SteelsCostConfig.java index f4de81ed..50ba6122 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/SteelsCostConfig.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/query/SteelsCostConfig.java @@ -23,6 +23,11 @@ public class SteelsCostConfig implements Serializable { @ApiModelProperty(value = "主键行id") private Integer id; + @ApiModelProperty("分类代码") + @NotBlank(message = "分类代码不能为空") + @Length(max = 10, message = "分类代码不能超过10个字") + private String code; + @ApiModelProperty("分类名称") @NotBlank(message = "分类名称不能为空") @Length(max = 10, message = "分类名称不能超过10个字") 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 2d02355a..191c47e2 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 @@ -15,6 +15,7 @@ import com.nflg.product.technology.pojo.entity.PaintCostConfigEntity; import com.nflg.product.technology.pojo.entity.SteelsCostConfigEntity; import com.nflg.product.technology.pojo.query.VirtualWorkingManday; import com.nflg.product.technology.pojo.vo.VirtualWorkingItemVO; +import com.nflg.product.technology.util.BigDecimalUtil; import com.nflg.product.technology.util.JsonUtil; import com.nflg.product.technology.util.VUtils; import lombok.extern.slf4j.Slf4j; @@ -95,7 +96,8 @@ public class BomCostCalculateService { .filter(d -> StrUtil.equals(d.getParentMaterialNo(), dto.getMaterialNo())) .collect(Collectors.toList()); if (StrUtil.isBlank(cdata)) { - List workingHours = processRouteTaskProcessesService.getWorkingHour(dto.getMaterialNo()); + final List workingHours = processRouteTaskProcessesService.getWorkingHour(dto.getMaterialNo()); + log.debug(StrUtil.format("BOM成本计算 {} 物料工时: {}", dto.getMaterialNo(), JsonUtil.toJson(workingHours))); EBomCostCacheDTO cdto = new EBomCostCacheDTO(); cdto.setMaterialNo(dto.getMaterialNo()); cdto.setCategoryCode(dto.getMaterialCategoryCode()); @@ -204,7 +206,7 @@ public class BomCostCalculateService { } private BigDecimal calculatePaintCost(EBomDTO dto) { - PaintCostConfigEntity entity = paintCostConfigService.getCost(dto.getGroupName()); + PaintCostConfigEntity entity = paintCostConfigService.getCost(dto.getRawMaterialGroup()); if (Objects.nonNull(entity)) { return NumberUtil.mul(dto.getNum(), entity.getCost()); } else { @@ -215,7 +217,7 @@ public class BomCostCalculateService { 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))); + cost = cost.add(BigDecimalUtil.multiply(vw.getWorkshopOfficeFee(), getGsForWorkingType(dto, workHours, vw))); } return cost; } @@ -223,7 +225,7 @@ public class BomCostCalculateService { 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))); + cost = cost.add(BigDecimalUtil.multiply(vw.getAssistantFee(), getGsForWorkingType(dto, workHours, vw))); } return cost; } @@ -231,7 +233,7 @@ public class BomCostCalculateService { 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))); + cost = cost.add(BigDecimalUtil.multiply(vw.getAssistantLaborFee(), getGsForWorkingType(dto, workHours, vw))); } return cost; } @@ -239,7 +241,7 @@ public class BomCostCalculateService { 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))); + cost = cost.add(BigDecimalUtil.multiply(vw.getWorkshopLaborFee(), getGsForWorkingType(dto, workHours, vw))); } return cost; } @@ -247,7 +249,7 @@ public class BomCostCalculateService { 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))); + cost = cost.add(BigDecimalUtil.multiply(vw.getEquipmentDepreciationFee(), getGsForWorkingType(dto, workHours, vw))); } return cost; } @@ -255,7 +257,7 @@ public class BomCostCalculateService { 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))); + cost = cost.add(BigDecimalUtil.multiply(vw.getConsumablesFee(), getGsForWorkingType(dto, workHours, vw))); } return cost; } @@ -294,8 +296,8 @@ public class BomCostCalculateService { BigDecimal price = Optional.ofNullable(dto.getLastPurchasePrice()).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()); + if (StrUtil.isNotBlank(dto.getRawMaterialGroup())) { + SteelsCostConfigEntity steelsCostConfigEntity = steelsCostConfigService.getCost(dto.getRawMaterialGroup()); if (Objects.nonNull(steelsCostConfigEntity)) { price = Optional.ofNullable(steelsCostConfigEntity.getCost()).orElse(BigDecimal.ZERO); wastage = Optional.ofNullable(steelsCostConfigEntity.getWastage()).orElse(BigDecimal.ZERO); 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 25ea5697..67c956ba 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 @@ -63,6 +63,9 @@ public class EBomService { } public List getParents(Set materialNos) { + if (CollectionUtil.isEmpty(materialNos)) { + return Collections.emptyList(); + } return ebomParentService.lambdaQuery() .in(EBomParentEntity::getMaterialNo, materialNos) .ge(EBomParentEntity::getStatus, 4) diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/PaintCostConfigService.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/PaintCostConfigService.java index 8a45f17e..1a7d3956 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/PaintCostConfigService.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/PaintCostConfigService.java @@ -39,7 +39,7 @@ public class PaintCostConfigService extends ServiceImpl { PaintCostConfigEntity entity = new PaintCostConfigEntity(); if (Objects.isNull(c.getId()) || 0 == c.getId()) { - entity.setName(c.getName()); + entity.setCode(c.getCode()); entity.setCreateBy(SessionUtil.getRealName()); entity.setCreateTime(LocalDateTime.now()); forAdd.add(entity); @@ -49,6 +49,7 @@ public class PaintCostConfigService extends ServiceImpl StrUtil.equals(p.getMaterialNo(), child.getMaterialNo())).findFirst().orElse(null); cvo.setVersion(Objects.isNull(parent) ? "A00" : parent.getCurrentVersion()); EBomCostCacheDTO ccost = datas.stream().filter(d -> StrUtil.equals(d.getMaterialNo(), child.getMaterialNo())).findFirst().orElse(null); @@ -141,6 +145,10 @@ public class ProductCostAnalysisService { cvo.setMaterialRowId(cpm.getMaterialRowId()); cvo.setRelCategoryCode(cpm.getRelCategoryCode()); } + if (StrUtil.equals(child.getProjectType(), BomConstant.PROJECT_TYPE_TEMPORARY)) { + //T项 + cvo.setMaterialDesc(child.getMaterialDesc()); + } EBomCostCacheDTO ccost = datas.stream().filter(d -> StrUtil.equals(d.getMaterialNo(), child.getMaterialNo())).findFirst().orElse(null); if (Objects.nonNull(ccost)) { cvo.setPrice(ccost.getTotalCost()); diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/SteelsCostConfigService.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/SteelsCostConfigService.java index 653e0d7d..16c01ba8 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/SteelsCostConfigService.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/SteelsCostConfigService.java @@ -1,6 +1,7 @@ package com.nflg.product.technology.service; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -38,7 +39,7 @@ public class SteelsCostConfigService extends ServiceImpl { SteelsCostConfigEntity entity = new SteelsCostConfigEntity(); if (Objects.isNull(c.getId()) || 0 == c.getId()) { - entity.setName(c.getName()); + entity.setCode(c.getCode()); entity.setCreateBy(SessionUtil.getRealName()); entity.setCreateTime(LocalDateTime.now()); forAdd.add(entity); @@ -48,6 +49,7 @@ public class SteelsCostConfigService extends ServiceImpl