diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/producing/ProducingPlanOrderClient.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/producing/ProducingPlanOrderClient.java index 6550fe0c9..0651193a3 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/producing/ProducingPlanOrderClient.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/producing/ProducingPlanOrderClient.java @@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.io.IOException; +import java.math.BigDecimal; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; @@ -44,6 +45,7 @@ public class ProducingPlanOrderClient { public Long create(String token, Long workflowSchemeId, List blockIds, List customMaterialGroupList) { + normalizeBoardDimensions(customMaterialGroupList); CreateRequest request = new CreateRequest( blockIds, workflowSchemeId, customMaterialGroupList); if (httpLogProperties.isHttpLogEnabled()) { @@ -170,6 +172,31 @@ public class ProducingPlanOrderClient { return properties.getBaseUrl() + "/" + planOrderId + "/" + action; } + /** + * 组件接口以 {@code null} 表示未设置板材尺寸,不能传入 0。 + * 仅处理本次请求使用的 DTO,不影响本地板材数据。 + */ + private void normalizeBoardDimensions( + List customMaterialGroupList) { + if (customMaterialGroupList == null) { + return; + } + customMaterialGroupList.stream() + .filter(java.util.Objects::nonNull) + .forEach(materialGroup -> { + if (isZero(materialGroup.getWidth())) { + materialGroup.setWidth(null); + } + if (isZero(materialGroup.getLength())) { + materialGroup.setLength(null); + } + }); + } + + private boolean isZero(BigDecimal value) { + return value != null && value.compareTo(BigDecimal.ZERO) == 0; + } + private String workflowSchemeListUrl(Integer page, Integer type, Long parentId, Integer pageSize, Boolean isPaging) { StringBuilder url = new StringBuilder(workflowSchemeBaseUrl()) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/producing/ProducingPlanOrderMaterialGroup.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/producing/ProducingPlanOrderMaterialGroup.java index d8a12f299..19a80afac 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/producing/ProducingPlanOrderMaterialGroup.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/producing/ProducingPlanOrderMaterialGroup.java @@ -29,9 +29,11 @@ public class ProducingPlanOrderMaterialGroup { private Integer type; /** 板材宽度。 */ + @JsonInclude(JsonInclude.Include.ALWAYS) private BigDecimal width; /** 板材长度。 */ + @JsonInclude(JsonInclude.Include.ALWAYS) private BigDecimal length; /** 板材厚度。 */ diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/test/java/com/cf/imes/module/executor/service/plan/producing/ProducingPlanOrderClientTest.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/test/java/com/cf/imes/module/executor/service/plan/producing/ProducingPlanOrderClientTest.java index 1cd420a59..7d003b098 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/test/java/com/cf/imes/module/executor/service/plan/producing/ProducingPlanOrderClientTest.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/test/java/com/cf/imes/module/executor/service/plan/producing/ProducingPlanOrderClientTest.java @@ -49,6 +49,8 @@ class ProducingPlanOrderClientTest { .id("goods-1") .name("颗粒板-白色-18") .type(4) + .width(java.math.BigDecimal.ZERO) + .length(java.math.BigDecimal.ZERO) .thickness(new java.math.BigDecimal("18")) .hasWave(true) .materialIds(List.of("source-material-2366", "source-material-2367")) @@ -84,6 +86,8 @@ class ProducingPlanOrderClientTest { assertThat(materialBody.get("id").textValue()).isEqualTo("goods-1"); assertThat(materialBody.get("name").textValue()).isEqualTo("颗粒板-白色-18"); assertThat(materialBody.get("type").intValue()).isEqualTo(4); + assertThat(materialBody.get("width").isNull()).isTrue(); + assertThat(materialBody.get("length").isNull()).isTrue(); assertThat(materialBody.get("materialIds").isArray()).isTrue(); assertThat(materialBody.get("materialIds").toString()) .isEqualTo("[\"source-material-2366\",\"source-material-2367\"]");