引入WMS仓储主数据与关系管理全流程能力
后端实现基于EF Core的库区/库位/容器/物料/关系/历史等模型、服务与RESTful接口,支持多数据库Provider。前端新增类型、API与聚合页面,支持主数据及容器位置/物料关系的增删改查、绑定/解绑、装料/卸料、历史追溯。完善权限、菜单与文档,平台具备完整WMS能力。
This commit is contained in:
@@ -0,0 +1 @@
|
||||
Gl4ghnjUoi2/dEh1Uv4DE5qjuqefIqSpVwg5/ZbIlvdq1g93+vFuwX30N+NRSdzU
|
||||
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"section": "auth",
|
||||
"version": 1,
|
||||
"updatedAt": "2026-06-08T09:43:37.4979022+00:00",
|
||||
"payload": {
|
||||
"roles": [
|
||||
{
|
||||
"id": "role-admin",
|
||||
"name": "\u7BA1\u7406\u5458",
|
||||
"scope": "Platform",
|
||||
"permissions": [
|
||||
"*"
|
||||
],
|
||||
"widgetGrants": []
|
||||
},
|
||||
{
|
||||
"id": "role-ops",
|
||||
"name": "\u8FD0\u8425",
|
||||
"scope": "RCSMonitor",
|
||||
"permissions": [
|
||||
"ops.car.pause",
|
||||
"ops.car.resume",
|
||||
"ops.car.gohome",
|
||||
"ops.task.pause",
|
||||
"ops.task.cancel",
|
||||
"ops.task.reassign",
|
||||
"ops.task.boostPriority",
|
||||
"monitor.note.write"
|
||||
],
|
||||
"widgetGrants": [
|
||||
{
|
||||
"widgetId": "MapEditor",
|
||||
"visibility": "readonly"
|
||||
},
|
||||
{
|
||||
"widgetId": "CadToolbar",
|
||||
"visibility": "hidden"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"users": [
|
||||
{
|
||||
"id": "u-admin",
|
||||
"username": "admin",
|
||||
"roles": [
|
||||
"role-admin"
|
||||
],
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"id": "u-ops",
|
||||
"username": "ops",
|
||||
"roles": [
|
||||
"role-ops"
|
||||
],
|
||||
"enabled": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"section": "charge",
|
||||
"version": 1,
|
||||
"updatedAt": "2026-06-08T09:43:37.4849334+00:00",
|
||||
"payload": {
|
||||
"allowMidTaskCharge": false,
|
||||
"idleChargeAfterSec": 300,
|
||||
"priority": [
|
||||
{
|
||||
"id": "CP1",
|
||||
"condition": "soc\u003C0.2",
|
||||
"weight": 100
|
||||
},
|
||||
{
|
||||
"id": "CP2",
|
||||
"condition": "idle\u003E5min",
|
||||
"weight": 30
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"section": "deployment",
|
||||
"version": 7,
|
||||
"updatedAt": "2026-06-09T01:43:46.9419888+00:00",
|
||||
"payload": {
|
||||
"configured": true,
|
||||
"platformType": "standard",
|
||||
"modules": [
|
||||
"wms"
|
||||
],
|
||||
"navigationKinds": [
|
||||
"qrcode",
|
||||
"laser"
|
||||
],
|
||||
"scenarios": [
|
||||
"tpl-p2p"
|
||||
],
|
||||
"updatedBy": "admin"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"section": "device",
|
||||
"version": 1,
|
||||
"updatedAt": "2026-06-08T09:43:37.5034914+00:00",
|
||||
"payload": {
|
||||
"drivers": [
|
||||
{
|
||||
"id": "drv-elev",
|
||||
"deviceType": "\u7535\u68AF",
|
||||
"driverName": "OpcUaElevatorDriver",
|
||||
"version": "1.2.0"
|
||||
},
|
||||
{
|
||||
"id": "drv-chrg",
|
||||
"deviceType": "\u5145\u7535\u6869",
|
||||
"driverName": "ModbusChargerDriver",
|
||||
"version": "1.0.5"
|
||||
},
|
||||
{
|
||||
"id": "drv-cam",
|
||||
"deviceType": "\u6444\u50CF\u5934",
|
||||
"driverName": "OnvifCameraDriver",
|
||||
"version": "2.1.0"
|
||||
}
|
||||
],
|
||||
"devices": [
|
||||
{
|
||||
"id": "dev-elev-1",
|
||||
"name": "#1 \u7535\u68AF",
|
||||
"deviceType": "\u7535\u68AF",
|
||||
"protocol": "opc-ua",
|
||||
"address": "opc.tcp://10.0.2.20:4840",
|
||||
"driverId": "drv-elev",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"id": "dev-chrg-1",
|
||||
"name": "\u5145\u7535\u6869-A1",
|
||||
"deviceType": "\u5145\u7535\u6869",
|
||||
"protocol": "modbus-tcp",
|
||||
"address": "10.0.2.30:502",
|
||||
"driverId": "drv-chrg",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"healthPolicy": {
|
||||
"heartbeatSec": 5,
|
||||
"offlineSec": 30
|
||||
},
|
||||
"alarmPolicy": {
|
||||
"enabled": true,
|
||||
"rules": [
|
||||
{
|
||||
"level": "warn",
|
||||
"condition": "offline\u003E30s"
|
||||
},
|
||||
{
|
||||
"level": "error",
|
||||
"condition": "driverException"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"section": "fleet",
|
||||
"version": 1,
|
||||
"updatedAt": "2026-06-08T09:43:37.5109848+00:00",
|
||||
"payload": {
|
||||
"groups": [
|
||||
{
|
||||
"id": "G-A",
|
||||
"name": "A \u533A\u8F66\u961F",
|
||||
"floor": "F1",
|
||||
"region": "A",
|
||||
"carIds": [
|
||||
"C01",
|
||||
"C02",
|
||||
"C03"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "G-B",
|
||||
"name": "B \u533A\u8F66\u961F",
|
||||
"floor": "F1",
|
||||
"region": "B",
|
||||
"carIds": [
|
||||
"C04",
|
||||
"C05"
|
||||
]
|
||||
}
|
||||
],
|
||||
"ota": {
|
||||
"enabled": true,
|
||||
"batchSize": 2,
|
||||
"rollbackOnFail": true
|
||||
},
|
||||
"batchOps": {
|
||||
"confirmationRequired": true,
|
||||
"maxBatch": 10
|
||||
},
|
||||
"networkDiag": {
|
||||
"rttThresholdMs": 80,
|
||||
"packetLossThreshold": 0.02
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"section": "integrations",
|
||||
"version": 1,
|
||||
"updatedAt": "2026-06-08T09:43:37.4625787+00:00",
|
||||
"payload": {
|
||||
"mes": [
|
||||
{
|
||||
"id": "mes-1",
|
||||
"name": "MES \u4E3B\u7EBF",
|
||||
"url": "http://mes.lan/api",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"wms": [
|
||||
{
|
||||
"id": "wms-1",
|
||||
"name": "WMS \u4ED3\u50A8",
|
||||
"url": "http://wms.lan/api",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"rcs": [],
|
||||
"ptl": [
|
||||
{
|
||||
"id": "ptl-1",
|
||||
"name": "PTL \u62E3\u9009",
|
||||
"url": "http://ptl.lan/api",
|
||||
"enabled": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"section": "location",
|
||||
"version": 1,
|
||||
"updatedAt": "2026-06-08T09:43:37.5220964+00:00",
|
||||
"payload": {
|
||||
"locations": [
|
||||
{
|
||||
"id": "L01",
|
||||
"code": "A-01",
|
||||
"name": "A \u533A\u8D27\u67B6 1",
|
||||
"siteId": "S001",
|
||||
"capacity": 20,
|
||||
"occupied": 12
|
||||
},
|
||||
{
|
||||
"id": "L02",
|
||||
"code": "A-02",
|
||||
"name": "A \u533A\u8D27\u67B6 2",
|
||||
"siteId": "S002",
|
||||
"capacity": 20,
|
||||
"occupied": 7
|
||||
},
|
||||
{
|
||||
"id": "L03",
|
||||
"code": "B-01",
|
||||
"name": "B \u533A\u7F13\u5B58",
|
||||
"siteId": "S003",
|
||||
"capacity": 30,
|
||||
"occupied": 25
|
||||
}
|
||||
],
|
||||
"inventoryRules": [
|
||||
{
|
||||
"id": "IR1",
|
||||
"itemType": "PalletA",
|
||||
"minQty": 5,
|
||||
"maxQty": 30
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"section": "ops",
|
||||
"version": 1,
|
||||
"updatedAt": "2026-06-08T09:43:37.5273514+00:00",
|
||||
"payload": {
|
||||
"playback": {
|
||||
"retentionDays": 30,
|
||||
"samplingHz": 5
|
||||
},
|
||||
"logRetention": {
|
||||
"hotDays": 7,
|
||||
"coldDays": 180
|
||||
},
|
||||
"version": {
|
||||
"keepReleases": 5
|
||||
},
|
||||
"monitor": {
|
||||
"car": {
|
||||
"propertyKeys": [],
|
||||
"statusKeys": [],
|
||||
"actionKeys": []
|
||||
},
|
||||
"site": {
|
||||
"propertyKeys": [],
|
||||
"statusKeys": [],
|
||||
"actionKeys": []
|
||||
},
|
||||
"track": {
|
||||
"propertyKeys": [],
|
||||
"statusKeys": [],
|
||||
"actionKeys": []
|
||||
},
|
||||
"carActionByType": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"section": "routing",
|
||||
"version": 1,
|
||||
"updatedAt": "2026-06-08T09:43:37.4685445+00:00",
|
||||
"payload": {
|
||||
"algorithm": "astar",
|
||||
"weights": {
|
||||
"distance": 1,
|
||||
"congestion": 0.5,
|
||||
"turnPenalty": 0.2
|
||||
},
|
||||
"avoidance": [
|
||||
{
|
||||
"id": "AV1",
|
||||
"zoneId": "Z-NORTH",
|
||||
"rule": "no-entry-while-loading"
|
||||
}
|
||||
],
|
||||
"zoneSpeedLimits": [
|
||||
{
|
||||
"zoneId": "Z-NARROW",
|
||||
"maxSpeedMps": 0.5
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"section": "scenario",
|
||||
"version": 1,
|
||||
"updatedAt": "2026-06-08T09:43:37.5171692+00:00",
|
||||
"payload": {
|
||||
"templates": [
|
||||
{
|
||||
"id": "tpl-sps",
|
||||
"name": "SPS \u7269\u6599\u914D\u9001",
|
||||
"category": "SPS",
|
||||
"version": "1.0.0",
|
||||
"baselineJson": "{}"
|
||||
},
|
||||
{
|
||||
"id": "tpl-pack",
|
||||
"name": "\u7535\u6C60 Pack \u81EA\u52A8\u5316\u4EA7\u7EBF",
|
||||
"category": "BatteryPack",
|
||||
"version": "1.0.0",
|
||||
"baselineJson": "{}"
|
||||
},
|
||||
{
|
||||
"id": "tpl-loop",
|
||||
"name": "\u73AF\u7EBF\u8FD0\u884C",
|
||||
"category": "Loop",
|
||||
"version": "1.0.0",
|
||||
"baselineJson": "{}"
|
||||
},
|
||||
{
|
||||
"id": "tpl-p2p",
|
||||
"name": "\u70B9\u5BF9\u70B9\u67D4\u6027\u642C\u8FD0",
|
||||
"category": "P2P",
|
||||
"version": "1.0.0",
|
||||
"baselineJson": "{}"
|
||||
}
|
||||
],
|
||||
"dslPolicy": {
|
||||
"enabled": true,
|
||||
"schemaVersion": "1"
|
||||
},
|
||||
"lowCode": {
|
||||
"enabled": false,
|
||||
"editor": "json"
|
||||
},
|
||||
"versionPolicy": {
|
||||
"keepVersions": 10,
|
||||
"allowRollback": true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"section": "system",
|
||||
"version": 1,
|
||||
"updatedAt": "2026-06-08T09:43:37.4470202+00:00",
|
||||
"payload": {
|
||||
"dispatchLoopHz": 50,
|
||||
"log": {
|
||||
"level": "info",
|
||||
"rollDays": 7,
|
||||
"maxSizeMB": 256
|
||||
},
|
||||
"security": {
|
||||
"jwtExpireMin": 1440,
|
||||
"enableSwagger": false,
|
||||
"corsWhitelist": [
|
||||
"http://localhost:5173"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"section": "task",
|
||||
"version": 1,
|
||||
"updatedAt": "2026-06-08T09:43:37.4893595+00:00",
|
||||
"payload": {
|
||||
"mode": "leastLoad",
|
||||
"loadBalance": true,
|
||||
"maxQueuePerCar": 3
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"section": "traffic",
|
||||
"version": 1,
|
||||
"updatedAt": "2026-06-08T09:43:37.4927371+00:00",
|
||||
"payload": {
|
||||
"intersections": [
|
||||
{
|
||||
"id": "IX1",
|
||||
"siteIds": [
|
||||
"S006",
|
||||
"S007"
|
||||
],
|
||||
"mode": "mutex"
|
||||
}
|
||||
],
|
||||
"mutex": [
|
||||
{
|
||||
"id": "MZ1",
|
||||
"zoneIds": [
|
||||
"Z-CROSS"
|
||||
]
|
||||
}
|
||||
],
|
||||
"yields": [
|
||||
{
|
||||
"id": "YD1",
|
||||
"from": "A \u533A",
|
||||
"to": "B \u533A",
|
||||
"condition": "priority\u003Cpeer"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"section": "vehicle",
|
||||
"version": 1,
|
||||
"updatedAt": "2026-06-08T09:43:37.4789283+00:00",
|
||||
"payload": {
|
||||
"lowBatteryThreshold": 0.3,
|
||||
"criticalBatteryThreshold": 0.15,
|
||||
"faultReport": {
|
||||
"enabled": true,
|
||||
"emailTo": [
|
||||
"ops@example.com"
|
||||
]
|
||||
},
|
||||
"autoRepair": {
|
||||
"enabled": false,
|
||||
"cooldownSec": 600
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"section": "widget",
|
||||
"version": 1,
|
||||
"updatedAt": "2026-06-08T09:43:37.5362337+00:00",
|
||||
"payload": {
|
||||
"items": [
|
||||
{
|
||||
"id": "widget-call-button",
|
||||
"name": "\u547C\u53EB\u6309\u94AE",
|
||||
"schemaJson": "{\u0022fields\u0022:[{\u0022name\u0022:\u0022siteId\u0022}]}",
|
||||
"layoutJson": "{\u0022x\u0022:0,\u0022y\u0022:0,\u0022w\u0022:2,\u0022h\u0022:1}",
|
||||
"bindToScopes": [
|
||||
"RCSMonitor"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"version": 1,
|
||||
"roles": [
|
||||
{
|
||||
"id": "role-admin",
|
||||
"name": "\u8D85\u7EA7\u7BA1\u7406\u5458",
|
||||
"description": "\u62E5\u6709\u5168\u90E8\u9875\u9762\u4E0E\u64CD\u4F5C\u6743\u9650\u7684\u5185\u7F6E\u89D2\u8272",
|
||||
"scope": "*",
|
||||
"pages": [
|
||||
"*"
|
||||
],
|
||||
"ops": [
|
||||
"*"
|
||||
],
|
||||
"widgetGrants": [],
|
||||
"system": true
|
||||
},
|
||||
{
|
||||
"id": "role-ops",
|
||||
"name": "\u8FD0\u8425\u4EBA\u5458",
|
||||
"description": "\u8FD0\u8425\u76D1\u63A7\u7AEF\u9ED8\u8BA4\u89D2\u8272\uFF1A\u53EF\u6267\u884C\u8FD0\u7EF4\u64CD\u4F5C\u3001\u67E5\u770B\u76D1\u63A7",
|
||||
"scope": "RCSMonitor",
|
||||
"pages": [
|
||||
"monitor-dashboard",
|
||||
"monitor-map",
|
||||
"monitor-ops",
|
||||
"monitor-notes"
|
||||
],
|
||||
"ops": [
|
||||
"ops.car.pause",
|
||||
"ops.car.resume",
|
||||
"ops.car.gohome",
|
||||
"ops.car.resetSession",
|
||||
"ops.car.manualCharge",
|
||||
"ops.task.pause",
|
||||
"ops.task.cancel",
|
||||
"ops.task.reassign",
|
||||
"ops.task.boostPriority",
|
||||
"monitor.note.write"
|
||||
],
|
||||
"widgetGrants": [
|
||||
{
|
||||
"widgetId": "MapEditor",
|
||||
"visibility": "readonly"
|
||||
},
|
||||
{
|
||||
"widgetId": "CadToolbar",
|
||||
"visibility": "hidden"
|
||||
},
|
||||
{
|
||||
"widgetId": "CarPanel",
|
||||
"visibility": "readonly"
|
||||
},
|
||||
{
|
||||
"widgetId": "MissionEditor",
|
||||
"visibility": "readonly"
|
||||
},
|
||||
{
|
||||
"widgetId": "OpsActionPanel",
|
||||
"visibility": "interactive"
|
||||
},
|
||||
{
|
||||
"widgetId": "ConfigCenter",
|
||||
"visibility": "hidden"
|
||||
}
|
||||
],
|
||||
"system": true
|
||||
}
|
||||
],
|
||||
"users": [
|
||||
{
|
||||
"id": "u-admin",
|
||||
"username": "admin",
|
||||
"displayName": "\u7CFB\u7EDF\u7BA1\u7406\u5458",
|
||||
"enabled": true,
|
||||
"roleIds": [
|
||||
"role-admin"
|
||||
],
|
||||
"salt": "pQlotjtkEe0S5MTxecJd4A==",
|
||||
"passwordHash": "qs6A3I/Y3OwV\u002Bs95orIWvzcUz8bF4ZY9l1jq4SQd1cI="
|
||||
},
|
||||
{
|
||||
"id": "u-ops",
|
||||
"username": "ops",
|
||||
"displayName": "\u8FD0\u8425\u4EBA\u5458",
|
||||
"enabled": true,
|
||||
"roleIds": [
|
||||
"role-ops"
|
||||
],
|
||||
"salt": "G6c5\u002BnLEjf3fEor1LgNjyg==",
|
||||
"passwordHash": "Zb1QiDzHctduFbZGKniTEy4OLJIvIOeoyLfc\u002Bo0y\u002BVg="
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user