新结构使用 {@code toolPath.id},旧结构则直接以字符串或数字返回 ID。
+ */ + private String shapeOffsetToolPathId(JsonNode toolPath) { + if (toolPath == null || toolPath.isNull()) { + return null; + } + JsonNode id = toolPath.isObject() ? toolPath.get("id") : toolPath; + return id == null || id.isNull() ? null : id.asText(); + } + /** * 合并 partsItems 与 partsList,并按柜体 ID 汇总待入库配件。 */ @@ -946,23 +960,21 @@ public class ProducingOrderConverter { ? SEAL_PART_GROUP : part.getGroup()); target.setModel(empty(material.getModel())); boolean sealPart = SEAL_PART_GROUP.equals(part.getGroup()); - target.setSpec(sealPart - ? empty(material.getSpec()) - : String.join("|", empty(material.getSpec()), - empty(material.getMaterial()), empty(material.getColor()))); + target.setSpec(empty(material.getSpec())); // 对方 width/length/height 对应原导入结构的宽/长/厚。 target.setWidth(partDimension(part.getWidth())); target.setHeight(partDimension(part.getLength())); target.setThickness(partDimension(part.getHeight())); - target.setMaterial(empty(material.getMaterial())); + target.setMaterial(partMaterial(material)); + target.setColor(partColor(material)); target.setBrand(empty(material.getBrand())); target.setFactory(empty(material.getFactory())); target.setUnit("0"); target.setNum(part.getQuantity() == null ? 1D : part.getQuantity()); int partType = defaultPartType(part.getType()); target.setIsComposite(partType == 1 || partType == 2); - // 配件备注与板件一致,只取实例级 partsItems.remarks。 - target.setRemark(remarksText(item.getRemarks())); + // 实例级备注优先;对方暂未在 partsItems 返回 remarks 时,兼容读取配件定义备注。 + target.setRemark(remarksText(effectivePartRemarks(item, part))); target.setObjectId(partCadViewId(context, part.getId())); target.setGroupIds(parseIds(item.getProcessGroupIds(), "process group")); target.setComponentIds(isNoComponent(item.getComponentGroupId()) @@ -974,8 +986,8 @@ public class ProducingOrderConverter { new ProducingImportPart.GroupData(); groupData.setSize(0); groupData.setThickness(0); - groupData.setMaterial(empty(material.getMaterial())); - groupData.setColor(empty(material.getColor())); + groupData.setMaterial(target.getMaterial()); + groupData.setColor(sealPartColor(material)); groupData.setBoardName(material.getName()); target.setGroupData(groupData); } @@ -1048,6 +1060,60 @@ public class ProducingOrderConverter { .collect(Collectors.joining(",")); } + /** + * 获取配件业务备注:优先使用物理项备注,物理项未返回时兼容配件定义备注。 + */ + private Map新报文返回包含 {@code id/pts/buls/depths} 的对象,旧报文可能直接返回刀路 ID, + * 因此保留为 JSON 节点并由转换层统一提取 ID。
+ */ + private JsonNode toolPath; } }