3.0 KiB
3.0 KiB
目标
- 在同一个 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)
- 遍历
routeList(保序):- 构建
kingdeeBomRows(List<Map<String,Object>>) - 构建
excelDTOList(工艺 ProcessRouteExcelDTO 列表)
- 构建
- 动态映射:
DynamicDataMapping.createOneDataList("KingdeeBomData", kingdeeBomRows)DynamicDataMapping.createOneDataList("ProcessRouteExcelDTO", evoRouteDataList)
- 模板:在同一Sheet中放置两个表格块,分别绑定以上占位名
排序与顺序
- 物料:沿用
routeList的顺序 - 工艺:
processNo升序,null置后
边界情况
- 无工艺:B区为空,但A区仍输出该物料的BOM
- 无BOM:A区不输出该物料;B区正常输出工艺
- 版本查询失败:A区跳过该物料或显示“未查询到”标记
验证
- 用两种物料进行导出测试:一个多工序、一个单工序;核对两区行数与内容
- 对比你提供的示例Excel,确认列头、顺序与格式
请你确认/提供
- 同一Sheet模板文件或示意图:两块区域位置与占位名是否采用
KingdeeBomData和ProcessRouteExcelDTO - BOM“一条数据”的取值方式:直接取第一条还是需要汇总(若后续会出现多子项)
- 是否需要在两区之间加入分隔行/标题行的样式要求
确认后我将按该方案更新导出逻辑并给你可下载的Excel。