From 2092a45a8766d8baeaa8f9df4704de4519296091 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Wed, 5 Aug 2026 16:45:19 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E7=BB=84=E4=BB=B6=E6=8B=86=E5=8D=95?= =?UTF-8?q?=E5=8F=8D=E5=90=8C=E6=AD=A5=E6=9D=90=E8=B4=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=B0=83=E6=95=B4=EF=BC=9B2=E3=80=81=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=8E=92=E5=8D=95=E5=AE=9E=E9=99=85=E6=9D=BF?= =?UTF-8?q?=E6=9D=90=E5=90=8C=E6=AD=A5=E6=95=B0=E6=8D=AE=E8=B0=83=E6=95=B4?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/plan/vo/SavePlanPlateList.java | 8 ++ .../dal/dataobject/goods/GoodsDO.java | 8 +- .../service/plan/PlanServiceImpl.java | 85 +++++++++++++++---- .../ProducingPlanOrderMaterialGroup.java | 4 +- .../ProducingPlanOrderClientTest.java | 8 +- .../plan/dal/dataobject/goods/GoodsDO.java | 14 ++- .../factory/ProducingOrderImportFactory.java | 45 +++++++++- .../dto/ProducingOrderExtraSyncRequest.java | 7 +- ...oducingOrderItemSerialNoUpdateRequest.java | 7 +- 9 files changed, 153 insertions(+), 33 deletions(-) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/SavePlanPlateList.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/SavePlanPlateList.java index 78437ed5d..b7fc71b16 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/SavePlanPlateList.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/SavePlanPlateList.java @@ -86,6 +86,14 @@ public class SavePlanPlateList { @Schema(description = "纹理") private Boolean texture; + /** + * 组件生产系统来源材料 ID 列表。 + * + *

创建排单时由后端根据 {@code order_goods.id}重新加载,不信任前端传值。

+ */ + @Schema(description = "组件生产系统materials[type=1].id列表", accessMode = Schema.AccessMode.READ_ONLY) + private List sourceMaterialIds; + } } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/GoodsDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/GoodsDO.java index d5a3347d5..5483cbeb5 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/GoodsDO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/GoodsDO.java @@ -1,17 +1,19 @@ package com.cf.imes.module.executor.dal.dataobject.goods; import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.cf.imes.framework.mybatis.core.dataobject.BaseDO; import lombok.*; import java.math.BigDecimal; +import java.util.List; /** * 订单商品 DO * * @author 晨丰科技 */ -@TableName("order_goods") +@TableName(value = "order_goods", autoResultMap = true) @KeySequence("order_goods_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) @@ -41,6 +43,10 @@ public class GoodsDO extends BaseDO { * 商品 ID */ private String goodsId; + + /** 组件生产系统 {@code materials[type=1].id} 列表。 */ + @TableField(value = "source_material_ids", typeHandler = JacksonTypeHandler.class) + private List sourceMaterialIds; /** * 排单 ID */ diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java index 21f6252fd..e20d7a972 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java @@ -192,16 +192,20 @@ public class PlanServiceImpl implements PlanService { SavePlanPlateList savePlanPlateList = Optional.ofNullable(createReqVO.getSavePlanPlateList()).orElseThrow(()-> new ServiceException(PLAN_PLATE_DATA_ERROR)); + List plateItemList = Optional.ofNullable( + savePlanPlateList.getPlateItemList()).orElseThrow( + () -> new ServiceException(PLAN_PLATE_DATA_ERROR)); + List goodsItemList = Optional.ofNullable( + savePlanPlateList.getGoodsItemList()).orElseThrow( + () -> new ServiceException(PLAN_PLATE_DATA_ERROR)); + loadSourceMaterialIds(goodsItemList); + if (savePlanPlateList.getMixConfig() != null && Boolean.TRUE.equals(savePlanPlateList.getMixConfig().getIsMixed())) { // 混单时走的逻辑 Integer mixedType = Optional.ofNullable(savePlanPlateList.getMixConfig().getMixedType()).orElse(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.getType()); - List plateItemList = Optional.ofNullable(savePlanPlateList.getPlateItemList()).orElseThrow(()-> new ServiceException(PLAN_PLATE_DATA_ERROR)); - - List goodsItemList = Optional.ofNullable(savePlanPlateList.getGoodsItemList()).orElseThrow(()-> new ServiceException(PLAN_PLATE_DATA_ERROR)); - List planActualGoodsLists = Optional.ofNullable(createReqVO.getPlanActualGoodsListList()).orElse(new ArrayList<>()); // 混单时判断是否进行板材对应并创建排单 @@ -212,9 +216,6 @@ public class PlanServiceImpl implements PlanService { } else { // 非混单 - List plateItemList = Optional.ofNullable(savePlanPlateList.getPlateItemList()).orElseThrow(()-> new ServiceException(PLAN_PLATE_DATA_ERROR)); - - List goodsItemList = Optional.ofNullable(savePlanPlateList.getGoodsItemList()).orElseThrow(()-> new ServiceException(PLAN_PLATE_DATA_ERROR)); // 查找材质和厚度和颜色相同的大板 Map> grouped = groupByMaterialAndThicknessAndColorAndBrand(goodsItemList); @@ -1673,7 +1674,7 @@ public class PlanServiceImpl implements PlanService { if(CollUtil.isNotEmpty(planActualGoodsLists)) { // 有选实际大板的小板加大板创建排单 - getCreatePlanMultipleGoodsList(planActualGoodsLists, plateItemList, planDOS, + getCreatePlanMultipleGoodsList(planActualGoodsLists, plateItemList, goodsItemList, planDOS, producingMaterialGroupByPlanId, processId, processName, loginUser); @@ -1758,6 +1759,7 @@ public class PlanServiceImpl implements PlanService { private void getCreatePlanMultipleGoodsList(List planActualGoodsLists, List plateItemList, + List goodsItemList, List planDOS, Map producingMaterialGroupByPlanId, Long processId, @@ -1822,7 +1824,8 @@ public class PlanServiceImpl implements PlanService { planDOS.add(planDO); producingMaterialGroupByPlanId.put(planId, - toProducingMaterialGroup(planId, f.getPlanActualGoodsModelDO())); + toProducingMaterialGroup(planId, f.getPlanActualGoodsModelDO(), + collectSourceMaterialIds(goodsItemList, f.getIds()))); } // 统计更新order_goods的数量和面积 computePlatePlanAndComputeOrderGoodsInfo(allGoodsIds); @@ -1902,7 +1905,8 @@ public class PlanServiceImpl implements PlanService { .filter(goods -> value.contains(goods.getId())) .findFirst() .ifPresent(goods -> producingMaterialGroupByPlanId.put(planId, - toProducingMaterialGroup(planId, goods))); + toProducingMaterialGroup(planId, goods, + collectSourceMaterialIds(goodsItemList, value)))); } // 统计更新order_goods的数量和面积 computePlatePlanAndComputeOrderGoodsInfo(allGoodsIds); @@ -2057,15 +2061,16 @@ public class PlanServiceImpl implements PlanService { * 根据普通排单使用的材质属性构建组件生产系统自定义材质分组。 */ private ProducingPlanOrderMaterialGroup toProducingMaterialGroup( - Long planId, SavePlanPlateList.GoodsItemList goods) { + Long planId, SavePlanPlateList.GoodsItemList goods, + List sourceMaterialIds) { return ProducingPlanOrderMaterialGroup.builder() .id(goods.getGoodsId()) .name(buildProducingMaterialGroupName( planId, null, goods.getMaterial(), goods.getColor(), goods.getThickness())) - .type(1) + .type(4) .thickness(goods.getThickness()) .hasWave(goods.getTexture()) - .materialIds(Collections.emptyList()) + .materialIds(sourceMaterialIds) .brand(goods.getBrand()) .material(goods.getMaterial()) .color(goods.getColor()) @@ -2076,21 +2081,69 @@ public class PlanServiceImpl implements PlanService { * 根据混单选择的实际大板属性构建组件生产系统自定义材质分组。 */ private ProducingPlanOrderMaterialGroup toProducingMaterialGroup( - Long planId, PlanActualGoodsModelDO goods) { + Long planId, PlanActualGoodsModelDO goods, + List sourceMaterialIds) { return ProducingPlanOrderMaterialGroup.builder() .id(goods.getGoodsId()) .name(buildProducingMaterialGroupName( planId, goods.getGoodsName(), goods.getMaterial(), goods.getColor(), goods.getThickness())) - .type(1) + .type(4) .thickness(goods.getThickness()) - .materialIds(Collections.emptyList()) + .materialIds(sourceMaterialIds) .brand(goods.getBrand()) .material(goods.getMaterial()) .color(goods.getColor()) .build(); } + /** + * 根据本次排单提交的订单商品 ID 一次性加载来源材料数组。 + * + *

来源材料关系以数据库为准,避免前端遗漏或伪造对方材料 ID。

+ */ + private void loadSourceMaterialIds(List goodsItems) { + if (CollUtil.isEmpty(goodsItems)) { + return; + } + List goodsIds = goodsItems.stream() + .map(SavePlanPlateList.GoodsItemList::getId) + .filter(Objects::nonNull) + .distinct() + .toList(); + if (CollUtil.isEmpty(goodsIds)) { + return; + } + Map> sourceMaterialIdsByGoodsId = goodsMapper.selectBatchIds(goodsIds) + .stream() + .collect(Collectors.toMap(GoodsDO::getId, + goods -> Optional.ofNullable(goods.getSourceMaterialIds()) + .orElseGet(Collections::emptyList))); + goodsItems.forEach(goods -> goods.setSourceMaterialIds( + new ArrayList<>(sourceMaterialIdsByGoodsId.getOrDefault( + goods.getId(), Collections.emptyList())))); + } + + /** + * 汇总一个排单材质组内所有订单板材的对方材料 ID,并保持首次出现顺序。 + */ + private List collectSourceMaterialIds( + List goodsItems, + Collection selectedGoodsIds) { + if (CollUtil.isEmpty(goodsItems) || CollUtil.isEmpty(selectedGoodsIds)) { + return Collections.emptyList(); + } + Set selected = new HashSet<>(selectedGoodsIds); + return goodsItems.stream() + .filter(goods -> selected.contains(goods.getId())) + .map(SavePlanPlateList.GoodsItemList::getSourceMaterialIds) + .filter(CollUtil::isNotEmpty) + .flatMap(Collection::stream) + .filter(StringUtils::isNotBlank) + .distinct() + .toList(); + } + /** * 生成对方接口必填的材质分组名称。 */ 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 0415f796d..d8a12f299 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 @@ -25,7 +25,7 @@ public class ProducingPlanOrderMaterialGroup { /** 物料名称。 */ private String name; - /** 物料类型,1 表示板材。 */ + /** 自定义材质分组类型,组件生产排单固定传4。 */ private Integer type; /** 板材宽度。 */ @@ -40,7 +40,7 @@ public class ProducingPlanOrderMaterialGroup { /** 是否有纹路。 */ private Boolean hasWave; - /** 分组下的物料 ID 列表,当前按接口约定暂不填充。 */ + /** 分组所包含的对方 {@code materials[type=1].id} 去重列表。 */ private List materialIds; /** 备注。 */ 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 99d273646..00f655b42 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 @@ -47,10 +47,10 @@ class ProducingPlanOrderClientTest { ProducingPlanOrderMaterialGroup.builder() .id("goods-1") .name("颗粒板-白色-18") - .type(1) + .type(4) .thickness(new java.math.BigDecimal("18")) .hasWave(true) - .materialIds(List.of()) + .materialIds(List.of("source-material-2366", "source-material-2367")) .brand("测试品牌") .material("颗粒板") .color("白色") @@ -82,8 +82,10 @@ class ProducingPlanOrderClientTest { JsonNode materialBody = createBody.get("customMaterialGroupList").get(0); 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("materialIds").isArray()).isTrue(); - assertThat(materialBody.get("materialIds").isEmpty()).isTrue(); + assertThat(materialBody.get("materialIds").toString()) + .isEqualTo("[\"source-material-2366\",\"source-material-2367\"]"); assertThat(materialBody.get("material").textValue()).isEqualTo("颗粒板"); assertThat(objectMapper.readTree(requests.get(1).body()) .get("appendBlockIds").get(0).textValue()).isEqualTo("source-3"); diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/goods/GoodsDO.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/goods/GoodsDO.java index dcdc9096d..55b058e1d 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/goods/GoodsDO.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/goods/GoodsDO.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.cf.imes.framework.mybatis.core.dataobject.BaseDO; import lombok.AllArgsConstructor; import lombok.Builder; @@ -14,13 +15,14 @@ import lombok.NoArgsConstructor; import lombok.ToString; import java.math.BigDecimal; +import java.util.List; /** * 订单商品 DO * * @author 晨丰科技 */ -@TableName("order_goods") +@TableName(value = "order_goods", autoResultMap = true) @KeySequence("order_goods_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) @@ -50,6 +52,14 @@ public class GoodsDO extends BaseDO { * 商品 ID */ private String goodsId; + + /** + * 组件生产系统材料 ID 列表。 + * + *

多个对方 {@code materials[type=1].id} 可以映射并复用同一条订单板材。

+ */ + @TableField(value = "source_material_ids", typeHandler = JacksonTypeHandler.class) + private List sourceMaterialIds; /** * 排单 ID */ @@ -137,4 +147,4 @@ public class GoodsDO extends BaseDO { */ @TableField(exist = false) private boolean exist; -} \ No newline at end of file +} diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/ProducingOrderImportFactory.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/ProducingOrderImportFactory.java index 74ddef0d8..cf7377426 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/ProducingOrderImportFactory.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/ProducingOrderImportFactory.java @@ -614,6 +614,20 @@ public class ProducingOrderImportFactory { } )); + // selectMaps 的聚合结果不会应用 JSON 类型处理器,再按选中的 order_goods.id + // 加载已有来源材料数组,确保重复导入及多来源材料映射时只追加、不覆盖。 + if (MapUtil.isNotEmpty(materialMap)) { + Map> sourceMaterialIdsByGoodsId = goodsMapper.selectBatchIds( + materialMap.values().stream().map(GoodsDO::getId).toList()) + .stream() + .collect(Collectors.toMap(GoodsDO::getId, + goods -> goods.getSourceMaterialIds() == null + ? new ArrayList<>() + : new ArrayList<>(goods.getSourceMaterialIds()))); + materialMap.values().forEach(goods -> goods.setSourceMaterialIds( + sourceMaterialIdsByGoodsId.getOrDefault(goods.getId(), new ArrayList<>()))); + } + for (ProducingImportMaterial materialReqVO : materialReqVOS) { String plateGoodsGoodsId = materialReqVO.getGoodsId(); @@ -629,6 +643,7 @@ public class ProducingOrderImportFactory { .orderId(orderId) .rawGoodsId(String.valueOf(rawGoodsId)) .goodsId(plateGoodsGoodsId) + .sourceMaterialIds(new ArrayList<>()) .goodsName(materialReqVO.getName()) .material(materialReqVO.getMaterial()) .texture(materialReqVO.getTexture()) @@ -657,14 +672,36 @@ public class ProducingOrderImportFactory { // 缓存goodCode和orderGoodsId的对应关系 materialMap.put(plateGoodsGoodsId, goodsDO); } - if (StringUtils.isNotEmpty(plateGoodsGoodsId)) { + GoodsDO orderGoods = materialMap.get(plateGoodsGoodsId); + mergeSourceMaterialId(orderGoods, materialReqVO.getSourceMaterialId()); + if (StringUtils.isNotEmpty(materialReqVO.getSourceMaterialId())) { externalMaterialMap.putIfAbsent( - plateGoodsGoodsId, + materialReqVO.getSourceMaterialId(), toExternalBlockMaterial(materialReqVO)); } } } + /** + * 将本次对方板材 ID 去重追加到订单板材的来源材料数组。 + * + * @param orderGoods 本次生成或复用的订单板材 + * @param sourceMaterialId 对方 {@code materials[type=1].id} + */ + private void mergeSourceMaterialId(GoodsDO orderGoods, String sourceMaterialId) { + if (orderGoods == null || StringUtils.isEmpty(sourceMaterialId)) { + return; + } + List sourceMaterialIds = orderGoods.getSourceMaterialIds(); + if (sourceMaterialIds == null) { + sourceMaterialIds = new ArrayList<>(); + orderGoods.setSourceMaterialIds(sourceMaterialIds); + } + if (!sourceMaterialIds.contains(sourceMaterialId)) { + sourceMaterialIds.add(sourceMaterialId); + } + } + /** * 缓存加工组类型 * @@ -2257,7 +2294,7 @@ public class ProducingOrderImportFactory { private ProducingExternalMaterial toExternalBlockMaterial( ProducingImportMaterial material) { return ProducingExternalMaterial.builder() - .id(material.getId()) + .id(material.getGoodsId()) .type(1) .name(material.getName()) .remark(getEmpty(material.getRemark())) @@ -3125,6 +3162,8 @@ public class ProducingOrderImportFactory { .eq(GoodsDO::getOrganId, organId) .eq(GoodsDO::getVersion, updateDo.getVersion()) .set(GoodsDO::getPlateNum, updateDo.getPlateNum()) + .setSql("source_material_ids = {0}", + JsonUtils.toJsonString(updateDo.getSourceMaterialIds())) .set(GoodsDO::getVersion, updateDo.getVersion() + 1)); if (updated == 0) { throw new ServiceException(ErrorCodeConstants.WEBCAD_ORDER_IMPORT_GOODS_UPDATE_CONCURRENCY_ERROR, updateDo.getId()); diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/producing/dto/ProducingOrderExtraSyncRequest.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/producing/dto/ProducingOrderExtraSyncRequest.java index d01113efa..cede112b4 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/producing/dto/ProducingOrderExtraSyncRequest.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/producing/dto/ProducingOrderExtraSyncRequest.java @@ -32,9 +32,10 @@ public class ProducingOrderExtraSyncRequest { private Map parts = new LinkedHashMap<>(); /** - * iMES 物料标识到板材库/配件物料对象的映射。板材(type=1)使用 - * {@code order_goods.goods_id} 作为 key,配件和封边条(type=2/3)使用对方 - * {@code materials.id} 作为 key。 + * 对方 {@code materials.id} 到 iMES 板材库/配件物料对象的映射。 + * + *

type=1 对象的 {@code id} 使用 iMES 板材库商品编号;type=2/3 对象的 + * {@code id} 使用本次生成或复用的 iMES 配件 ID。

*/ @Builder.Default private Map externalMaterialMapping = diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/producing/dto/ProducingOrderItemSerialNoUpdateRequest.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/producing/dto/ProducingOrderItemSerialNoUpdateRequest.java index 99dbf2687..398d51777 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/producing/dto/ProducingOrderItemSerialNoUpdateRequest.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/producing/dto/ProducingOrderItemSerialNoUpdateRequest.java @@ -29,9 +29,10 @@ public class ProducingOrderItemSerialNoUpdateRequest { private Map parts = new LinkedHashMap<>(); /** - * iMES 物料标识到板材库/配件物料对象的映射。板材(type=1)使用 - * {@code order_goods.goods_id} 作为 key,配件和封边条(type=2/3)使用对方 - * {@code materials.id} 作为 key。 + * 对方 {@code materials.id} 到 iMES 板材库/配件物料对象的映射。 + * + *

type=1 对象的 {@code id} 使用 iMES 板材库商品编号;type=2/3 对象的 + * {@code id} 使用本次生成或复用的 iMES 配件 ID。

*/ private Map externalMaterialMapping = new LinkedHashMap<>();