73 lines
3.0 KiB
Markdown
73 lines
3.0 KiB
Markdown
## 目标
|
||
- 在同一个 Sheet 中导出两块数据:
|
||
- 区域A:材料BOM(每物料1条)
|
||
- 区域B:工艺路线(每工序1条,完整展示所有步骤)
|
||
- 保持原始物料顺序;工艺按 `processNo` 升序。
|
||
|
||
## 布局设计(同一Sheet)
|
||
- 区域A(上方):占位名 `KingdeeBomData`
|
||
- 列建议:
|
||
- 生产令号 `routeDescription`
|
||
- 物料编码 `materialCode`
|
||
- 名称 `materialName`
|
||
- 材质 `material`
|
||
- 单重KG `discWeight`
|
||
- 材料BOM物料编码 `rawMaterialCode`
|
||
- 材料BOM物料名称 `rawMaterialName`
|
||
- BOM材质 `bomMaterial`
|
||
- 材料单重KG `bomDanZhong`
|
||
- 用量 `discUsage`
|
||
- 单位 `bomUnit`
|
||
- 区域B(下方,留若干空行与A区分):占位名 `ProcessRouteExcelDTO`
|
||
- 列建议:
|
||
- 生产令号 `routeDescription`
|
||
- 物料编码 `materialCode`
|
||
- 名称 `materialName`
|
||
- 材质 `material`
|
||
- 单重KG `discWeight`
|
||
- 工序号 `processNo`
|
||
- 工作中心 `workCenter`
|
||
- 工序名称 `processName`
|
||
- 工序说明 `processDescription`
|
||
- 工序控制 `processControl`
|
||
- 活动时长 `activityDuration`
|
||
- 活动单位 `activityUnit`
|
||
- 单台数量 `unitQuantity`
|
||
- 本批数量 `batchQuantity`
|
||
|
||
## 数据生成逻辑
|
||
- BOM区(每物料1条):
|
||
- 取最新版本:`readGetTheLatestVersion(materialCode)`
|
||
- 取 `getMaterialUseXByVer(version)` 的第一条(或按你后续指定规则汇总)作为该物料的BOM条目
|
||
- 工艺区(每工序1条):
|
||
- 取 `getRouteGuDing(materialCode)` 全量,按 `processNo` 升序展开;不写入任何BOM字段
|
||
- 两区均附带物料基础字段(生产令号、编码、名称、材质、单重、数量等)
|
||
|
||
## 控制器改造要点(exportRoute2)
|
||
1. 遍历 `routeList`(保序):
|
||
- 构建 `kingdeeBomRows`(List<Map<String,Object>>)
|
||
- 构建 `excelDTOList`(工艺 ProcessRouteExcelDTO 列表)
|
||
2. 动态映射:
|
||
- `DynamicDataMapping.createOneDataList("KingdeeBomData", kingdeeBomRows)`
|
||
- `DynamicDataMapping.createOneDataList("ProcessRouteExcelDTO", evoRouteDataList)`
|
||
3. 模板:在同一Sheet中放置两个表格块,分别绑定以上占位名
|
||
|
||
## 排序与顺序
|
||
- 物料:沿用 `routeList` 的顺序
|
||
- 工艺:`processNo` 升序,`null` 置后
|
||
|
||
## 边界情况
|
||
- 无工艺:B区为空,但A区仍输出该物料的BOM
|
||
- 无BOM:A区不输出该物料;B区正常输出工艺
|
||
- 版本查询失败:A区跳过该物料或显示“未查询到”标记
|
||
|
||
## 验证
|
||
- 用两种物料进行导出测试:一个多工序、一个单工序;核对两区行数与内容
|
||
- 对比你提供的示例Excel,确认列头、顺序与格式
|
||
|
||
## 请你确认/提供
|
||
- 同一Sheet模板文件或示意图:两块区域位置与占位名是否采用 `KingdeeBomData` 和 `ProcessRouteExcelDTO`
|
||
- BOM“一条数据”的取值方式:直接取第一条还是需要汇总(若后续会出现多子项)
|
||
- 是否需要在两区之间加入分隔行/标题行的样式要求
|
||
|
||
确认后我将按该方案更新导出逻辑并给你可下载的Excel。 |