evoToK3Cloud/script/postman/nd3-phased-product
2026-08-11 14:29:31 +08:00
..
README.md 更新,工序计划 2026-08-11 14:29:31 +08:00

ND3 阶段性产品报表 — 前端对接说明

一、基础约定

说明
服务地址 本系统(若依) http://{host}:8033context-path: /
统一响应 { code, msg, data }code === 200 为成功
鉴权 须登录;请求头 Authorization: Bearer {token}
模块前缀 /system/nd3/phased-product

勿用 http://xxx:8081/api/login:那是配置里的 PLM 外部接口 地址,不是本后端登录;字段也不是 UserName/Password


〇、登录(调 ND3 接口前必做)

0.1 验证码(若后台开启)

GET http://{host}:8033/captchaImage

data.captchaEnabled === true 时,记下 data.uuid,按图片算出 code(数学验证码为算式结果)。

0.2 登录

POST /login(无 /api 前缀)

BodyJSON小写字段名

{
  "username": "admin",
  "password": "admin123",
  "code": "8",
  "uuid": "从 captchaImage 返回的 uuid"
}

验证码关闭时 codeuuid 可省略。

成功示例

{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
  }
}

后续 ND3 请求头:

Authorization: Bearer {data.token}

Apifox 正确示例

POST http://192.168.31.195:8033/login
Content-Type: application/json

{"username":"叮叮","password":"123456","code":"","uuid":""}

(用户名须为系统 sys_user 里的 user_name,不是昵称;密码与库中一致。)


二、接口列表

1. 检索 ND 项目(选令号 / 切换项目)

GET /system/nd3/phased-product/search

参数 类型 必填 说明
keyword string 物料编码、BOM 父项或 ND3 生产令号关键字

示例

GET http://localhost:8033/system/nd3/phased-product/search?keyword=LTBZE

data 结构

interface Nd3PhasedProductProjectVo {
  productionOrderNo: string;  // 生产令号,切换项目用
  productCode: string;        // 默认主产品图号,可传给 report
  productName: string;
}

2. 报表(页面主数据)

GET /system/nd3/phased-product/report

参数 类型 必填 说明
productionOrderNo string 否* ND3 生产令号;有令号时发货/在途可按令号过滤
materialCode string 否* 主产品物料编码;只填此项可查金蝶 BOM + 库存/在途
inputQty number 计划投产量;大于 0 时返回 deployRows

* productionOrderNomaterialCode 至少填一项(二选一或都填)。

示例

# 只填物料号(不必填令号)
GET .../report?materialCode=LTBZE/L.01.0-MP

# 按令号查(可再指定主产品)
GET .../report?productionOrderNo=ND3-26-009-LT
GET .../report?productionOrderNo=ND3-26-009-LT&materialCode=KP14E(B)-45C-180B-42T-R

# 带投产量试算
GET .../report?materialCode=LTBZE/L.01.0-MP&inputQty=10

data 结构

interface Nd3PhasedProductReportVo {
  productionOrderNo: string;
  bomHeader: Nd3BomHeaderVo;
  mainProduct: Nd3MainProductVo;
  subItems: { selfMade: Nd3SubMaterialRowVo[]; purchase: Nd3SubMaterialRowVo[] };
  deployRows: Nd3DeployRowVo[];    // 仅传 inputQty 时有数据
}

interface Nd3SubMaterialRowVo {
  materialCode: string;
  materialName: string;
  materialType: string;          // 自制 | 外购
  requiredQty: number;           // 单台用量
  stockQty: number;
  noPickedQty: number;
  transitMoQty: number;
  transitPoQty: number;
  expectedAvailableQty: number;  // 库存 + 在途  未领料
  transitMoRows: Nd3TransitMoRowVo[];  // productionOrderNo / sclh, planFinishDate
  transitPoRows: Nd3TransitPoRowVo[];  // productionOrderNo / projectOrderNo, deliveryDate到货日期
}

interface Nd3MainProductVo {
  productCode: string;
  productName: string;
  stockQty: number;
  deliverQty: number;
  transitQty: number;            // 在途合计
  stockDrillRows: Nd3QuantityDrillRowVo[];
  deliverDrillRows: Nd3QuantityDrillRowVo[];
  transitDrillRows: Nd3QuantityDrillRowVo[];
  transitMoRows: Nd3TransitMoRowVo[];
}

interface Nd3DeployRowVo {
  materialCode: string;
  materialName: string;
  needQty: number;               // 单台用量 × inputQty
  remainDeployQty: number;       // max(0, 需投  可用)
}

三、页面流程(建议)

1. 产品检索框 [keyword] → 调 /search → 列表展示(可能有令号,也可能只有 productCode
2. 用户选中一条 → 记录 productCode有 productionOrderNo 则一并带上
3. 调 /report**至少传 materialCode 或 productionOrderNo**(只搜到 BOM 时只传 materialCode 即可)
4. 用户切换项目 → 有令号则改 productionOrderNo 重查;无令号则改 materialCode 重查
5. 用户改投产量 → 带上 inputQty 再调 /report → 展示 deployRows

四、界面布局建议

4.1 顶部筛选区

控件 绑定 行为
项目产品检索 keyword 失焦/搜索按钮 → /search
当前生产令号 productionOrderNo 来自 search 选中项,只读或可下拉切换
主产品图号 materialCode 可选;默认用 search 返回的 productCode 作为 materialCode
投产量 inputQty 数字输入;变更后重新 /report

4.2 主产品卡片

展示 data.mainProduct

列名 字段 交互
主产品编码 productCode 文本
主产品名称 productName 文本
库存数量 stockQty 可点击 → 弹窗/展开 stockDrillRows
发货数量 deliverQty 可点击 → deliverDrillRows
在途数量 transitQty 可点击 → transitDrillRows / transitMoRows

下钻表列:sclh | orderNo | qty | planStartDate | planFinishDate | instockQty | notInstockQty

4.3 BOM 子项表(主体)

数据源:data.subItems.selfMade + data.subItems.purchase

列名 字段 说明
物料编码 materialCode
物料名称 materialName
类型 materialType 自制 / 外购
单台用量 requiredQty
库存 stockQty
未领料 noPickedQty
在途(MO) transitMoQty
在途(PO) transitPoQty
预计可用 expectedAvailableQty 库存 + 在途 未领料
操作 MO → transitMoRowsPO → transitPoRows

采购在途明细弹窗(数据源:row.transitPoRows,不要用 MO 的 sclh / planFinishDate 列名)

列名 字段 说明
采购单号 billNo
生产令号 productionOrderNo 或 projectOrderNo 金蝶 F_UCHN_Text2
到货日期 deliveryDate 金蝶 FDeliveryDate展示时建议 slice(0,10)
订单日期 orderDate
订单数量 orderQty
剩余未入库 remainStockInQty

生产在途明细弹窗(数据源:row.transitMoRows

列名 字段
生产单号 billNo
生产令号 productionOrderNo 或 sclh
计划完工 planFinishDate
未入库数量 notInstockQty

在途扁平列表row.transitDrillRows,含 MO+PO 混合):按 sourceType 分列——采购在途productionOrderNo + deliveryDate生产在途productionOrderNo + planFinishDate

4.4 投产量区(可选)

inputQty > 0 且重新请求后,展示 data.deployRows

列名 字段
物料编码 materialCode
物料名称 materialName
需投数量 needQty
剩余投放 remainDeployQty

五、前端注意点(联调必读)

  1. 不必填令号:只传 materialCode 即可查 BOM 及指标。
  2. 有令号时:传 productionOrderNo 可把发货/在途按该令号收窄。
  3. 在途下钻MO/PO 明细中可能出现其它令号QB 等),勿假设全部等于当前令号。
  4. deployRows:未传 inputQty 时恒为 []
  5. 图号特殊字符materialCode/() 等须 URL 编码。

六、错误处理

code / msg 处理
非 200 展示 msg
请输入物料编码或生产令号 search 未填 keyword
请填写物料编码或生产令号 report 两个参数都未填
401 重新登录拿 Token