计量单位原先只有 type(类型)字段,取值被限制为 48千克 / 100千克 / 吨 三种,无法录入实际重量。
实际业务中大量单位名称携带重量,例如「新塔棉7号大田用种**25公斤**」「新塔7号大田用种**10公斤**」,
这些单位的重量目前只能写进名称,无法单独维护。
本次在计量单位上新增可输入的「重量(kg)」字段,重量与名称解耦,可独立录入、修改、展示。
表 mdm_unit_measure 新增字段:
| 字段 | 类型 | 可空 | 说明 |
|---|---|---|---|
weight |
decimal(24,6) | 是 | 重量(kg) |
type 字段之后。weight 均为空,需业务在页面上按实际重量补录。sql/mysql/mdm_unit_measure_add_weight.sql本轮无新增接口、无接口路径调整,仅在既有接口的请求/响应中增加 weight 字段。
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /mdm/unit/create | 新增计量单位 |
| PUT | /mdm/unit/update | 修改计量单位 |
| GET | /mdm/unit/get | 查询计量单位详情 |
| GET | /mdm/unit/page | 查询计量单位分页 |
| GET | /mdm/unit/list | 查询计量单位列表 |
| GET | /mdm/unit/list-by-ids | 根据编号列表查询计量单位 |
请求参数新增:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| weight | Number | 否 | 重量(kg),单位千克,可传小数 |
响应字段新增:
| 字段 | 类型 | 说明 |
|---|---|---|
| weight | Number | 重量(kg),未录入时返回 null |
响应示例(/mdm/unit/get):
{
"code": 0,
"data": {
"id": 1,
"code": "3",
"name": "新塔棉7号大田用种25公斤",
"type": "48千克",
"weight": 25,
"primaryFlag": false,
"primaryId": null,
"changeRate": 1.0,
"status": 0,
"remark": null
},
"msg": ""
}
| 字段 | 展示位置 | 说明 |
|---|---|---|
| weight | 计量单位列表 | 列标题「重量(kg)」,为空时展示 -,不参与排序 |
| weight | 计量单位新增/修改弹窗 | 数字输入框,标签「重量(kg)」,非必填,最小值 0,建议精度 2 |
| weight | 计量单位选择器悬浮详情 | 在「名称」下方追加一行「重量:{weight} kg」,weight 为空时不展示该行 |
| 场景 | 规则 |
|---|---|
| 新增/修改 | 重量非必填;允许留空表示尚未维护 |
| 重量取值 | 单位固定为千克(kg),只存数值,不存单位文本 |
| 类型校验 | type 已**由必填改为非必填**,只填名称+重量即可保存成功 |
| 与 type 的关系 | type 保留不删;袋码生成逻辑仍读取 type,本次不受影响 |
| 与名称的关系 | 重量独立于名称,名称中的「25公斤」等字样不再作为重量来源 |
type 字段已放开必填限制。
此前后端 MdmUnitMeasureSaveReqVO 对 type 有 @NotBlank 校验,而前端新增/修改弹窗并未提交该字段,
导致从页面新增计量单位固定返回「类型不能为空」。本次已去掉该校验,该问题一并修复。
type 为空会导致无法生成袋码。
MES 袋码生成仍依赖 type 解析每托袋数(48千克 → 每托 48 袋),type 为空或不在
48千克 / 100千克 / 吨 范围内时会报「品种主计量单位未配置类型」。
因此:仅维护重量、不维护类型的计量单位,不可用于需要生成袋码的品种。
重量为**每单位(袋)的重量**,不是整批重量,请勿与库存数量相乘后回填。
历史数据 weight 为空,前端展示需做空值兜底,避免出现 null kg 或 NaN。
decimal(24,6) 精度较高,前端建议按 2 位小数展示,避免出现 25.000000 这类多余尾数。
计量单位存在删除保护:被物料引用的单位不允许删除,重量字段的增改不影响该规则。