Skip to content

船图对接文档

中控模块接口

获取场内托盘

  • 接口路径:/cPallet/getAllPallets
  • Method:GET
  • 请求参数:
参数名位置类型必填含义
voyageIdqueryString航次ID,不传则查询当前作业航次的数据
  • 响应示例:
json
{
  "code": 0,
  "message": "请求成功",
  "data": [
    {
      "id": "PALLET-001",
      "name": "20GP标准托盘",
      "length": 12.5,
      "width": 2.8,
      "height": 1.6,
      "updatedOn": "2026-05-08T10:30:00+08:00",
      "createdOn": "2026-05-08T10:00:00+08:00",
      "createdBy": "admin",
      "updatedBy": "admin",
      "quantity": 3,
      "remark": "标准作业托盘",
      "weight": 2.3,
      "palletSize": 20
    }
  ]
}
  • 响应字段说明:
字段类型含义
data[].idString托盘主键
data[].nameString托盘名称
data[].lengthBigDecimal托盘长度
data[].widthBigDecimal托盘宽度
data[].heightBigDecimal托盘高度
data[].updatedOnDate/String更新时间
data[].createdOnDate/String创建时间
data[].createdByString创建人
data[].updatedByString更新人
data[].quantityInteger托盘数量
data[].remarkString备注
data[].weightBigDecimal托盘重量
data[].palletSizeInteger托盘尺寸,主要用于前端校验是否允许放箱

获取等待装船列表

  • 接口路径:/centralControl/getWaitingForShipmentList
  • Method:GET
  • 请求参数:
参数名位置类型必填含义
voyageIdqueryString航次ID,不传则查询当前作业航次
  • 响应示例:
json
{
  "code": 0,
  "message": "请求成功",
  "data": [
    {
      "palletTypeId": "PALLET-TYPE-001",
      "internalTrailerNo": "IT-001",
      "palletInfo": {
        "id": "PALLET-001",
        "name": "40GP-2",
        "length": 12.192,
        "width": 2.438,
        "height": 2.591
      },
      "length": 14.0
    }
  ]
}
  • 响应字段说明:
    • palletTypeId:托盘类型ID
    • internalTrailerNo:内拖车号
    • palletInfo:托盘信息对象
    • length:托盘或托盘加箱的总长度(用于显示)

添加直装船托盘到盘型池

  • 接口路径:/centralControl/addPalletToPool
  • Method:GET
  • 请求参数:
参数名位置类型必填含义
palletTypequeryString盘型名称
palletWorkTypequeryString托盘作业类型,仅支持 SHIPMENT(表示直装船)
  • 接口说明:将指定的托盘类型添加到盘型池中,用于直装船作业场景。新增成功后会向所有叉车终端(terminalType=FORKLIFT)推送一条 WebSocket 消息,提示刷新托盘池列表。新增时会自动绑定当前作业航次。

  • 响应示例:

json
{
  "code": 0,
  "message": "请求成功",
  "data": "2f50d4c1-8792-4b71-a1a3-7344327b6b7e"
}
  • 响应字段说明:
字段类型含义
dataString新加入盘型池后生成的 palletTypeId

中控手动配载完成接口

  • 接口路径:/centralControl/completeManualLoading
  • Method:POST
  • 请求参数:
参数名位置类型必填含义
palletTypeIdbodyString托盘类型 ID
coordinateXbodyBigDecimal作业位置 X 坐标
coordinateYbodyBigDecimal作业位置 Y 坐标
coordinateZbodyBigDecimal作业位置 Z 坐标
lengthbodyBigDecimal长度
widthbodyBigDecimal宽度
laneIdbodyString车道 ID
  • 请求示例:
json
{
  "palletTypeId": "PALLET-TYPE-001",
  "coordinateX": 1.2,
  "coordinateY": 3.4,
  "coordinateZ": 1,
  "length": 12.2,
  "width": 2.44,
  "laneId": "LANE-A01"
}
  • 响应示例:
json
{
  "code": 0,
  "message": "请求成功",
  "data": [
    {
      "coordX": 1.2,
      "coordY": 3.4,
      "coordZ": 1,
      "workStatus": "PENDING",
      "palletTypeId": "PALLET-TYPE-001",
      "length": 12.2,
      "width": 2.44,
      "containers": [...]
    }
  ]
}
  • 响应字段说明:
字段类型含义
dataArray船上放箱详情列表,元素结构同 getShipPlacementDetailByDeck 接口响应

中控取消配载接口

  • 接口路径:/centralControl/cancelManualLoading
  • Method:GET
  • 请求参数:
参数名位置类型必填含义
palletTypeIdqueryString托盘池ID
  • 备注:
    • 该接口是 completeManualLoading 接口的逆向操作。
    • 前置条件:托盘必须已完成配载(即存在对应的 C_LANE_CNTR 记录),否则接口会直接报错:该托盘未进行配载,无法取消
    • 作业状态检查:如果配载数据的作业状态为 DONE(已完成),则无法取消配载,接口会报错:作业已完成,无法取消配载
    • 接口会删除配载时插入的 C_LANE_CNTR 记录,恢复托盘池和内拖车的状态为 WAITING_FOR_SHIPMENT(等待装船),并发送消息通知相关终端。
  • 响应示例:
json
{
  "code": 0,
  "message": "请求成功",
  "data": null
}
  • 响应字段说明:
字段类型含义
datanull无业务返回值,表示取消配载成功

中控移箱

  • 接口路径:/centralControl/moveContainer
  • Method:POST
  • 请求参数:
参数名位置类型必填含义
palletTypeIdbodyString托盘池 ID,用于定位需要移位的托盘及其放箱记录
coordinateXbodyBigDecimal目标位置 X 坐标
coordinateYbodyBigDecimal目标位置 Y 坐标
coordinateZbodyBigDecimal目标位置 Z 坐标
trailerNobodyString拖车号,hasDone 为 true 时优先使用此字段通知拖车
sendNotificationbodyString是否发送通知,仅当值为 "Y" 时发送通知
laneIdbodyString车道 ID
  • 接口说明:

    • 通过 palletTypeId 获取托盘池信息,并根据当前最新作业航次定位该托盘对应的 C_LANE_CNTR 放箱记录。
    • 当放箱记录为 workStatus=PENDING 时,仅更新 C_LANE_CNTR 的目标坐标,并通知该记录绑定的内拖车作业位置已调整。
    • 当放箱记录为 workStatus=DONE 时:
      • 如果请求参数中提供了 trailerNo,则优先使用该拖车号进行通知;
      • 如果未提供 trailerNo,则使用托盘池已绑定的内拖车号(若托盘池未绑定内拖车则报错);
      • 系统会将放箱记录重置为 PENDING 并绑定到指定的内拖车,同时按航次+箱号把 C_YARD_CNTR.workStatus 重置为 PENDING,并通过 WebSocket 下发新的移箱任务。
    • 不支持同时移位 PENDINGDONE 的记录(需要分批操作)。
  • WebSocket 推送(内拖车,示例):

    • 进行中移箱(记录含 workStatus=PENDING):description="作业位置已调整,请按新位置执行作业"
    • 已完成移箱(记录均为 workStatus=DONE,会下发移箱任务):description="中控已下发移箱任务,请按新位置执行作业"
json
{
  "eventType": "MOVE_CONTAINER",
  "description": "作业位置已调整,请按新位置执行作业",
  "data": {
    "palletTypeId": "PALLET-TYPE-001",
    "cLaneCntrIdList": ["f3e1b8f2-53b1-4b1f-a43f-72e2f7e7f6df"],
    "coordinateX": 2.5,
    "coordinateY": 6.8,
    "coordinateZ": 1
  }
}
  • 请求示例:
json
{
  "palletTypeId": "PALLET-TYPE-001",
  "coordinateX": 2.5,
  "coordinateY": 6.8,
  "coordinateZ": 1,
  "laneId": "LANE-A01"
}
  • 响应示例:
json
{
  "code": 0,
  "message": "请求成功",
  "data": null
}
  • 响应字段说明:
字段类型含义
datanull无业务返回值,表示移箱处理成功

按甲板查询船上放箱详情

  • 接口路径:/centralControl/getShipPlacementDetailByDeck
  • Method:GET
  • 请求参数:
参数名位置类型必填含义
deckListqueryList甲板层级集合,常见值:1/3/5;不传、传 null 或空数组则查询所有甲板
voyageIdqueryString航次ID,不传则查询当前作业航次
  • 响应示例:
json
{
  "code": 0,
  "message": "请求成功",
  "data": [
    {
      "coordX": 1.2,
      "coordY": 3.4,
      "coordZ": 1,
      "workStatus": "PENDING",
      "palletTypeId": "PALLET-TYPE-001",
      "length": 12.2,
      "width": 2.44,
      "containers": [
        {
          "id": "f3e1b8f2-53b1-4b1f-a43f-72e2f7e7f6df",
          "laneId": "LANE-A01",
          "coordX": 1.2,
          "coordY": 3.4,
          "coordZ": 1,
          "cntr": "MSCU1234567",
          "updatedOn": "2026-05-08T10:30:00+08:00",
          "createdOn": "2026-05-08T10:00:00+08:00",
          "createdBy": "admin",
          "updatedBy": "admin",
          "remark": null,
          "actCoordX": null,
          "actCoordY": null,
          "actCoordZ": null,
          "workMode": "DRIVER",
          "voyage": "V2026050801",
          "workStatus": "PENDING",
          "status": "NORMAL",
          "trailerNo": "IT-001",
          "cntrType": "GP",
          "cntrSize": 20,
          "palletId": "PALLET-001",
          "cntrWeight": 24.5
        }
      ]
    }
  ]
}
  • 响应字段说明:
字段类型含义
data[].coordXBigDecimalX 坐标
data[].coordYBigDecimalY 坐标
data[].coordZBigDecimalZ 坐标/甲板层级
data[].workStatusString当前坐标分组的作业状态
data[].palletTypeIdString托盘池 ID
data[].lengthBigDecimal托盘长度
data[].widthBigDecimal托盘宽度
data[].containersArray该坐标下存在箱号的放箱记录列表,元素字段结构同 C_LANE_CNTR

根据托盘池ID查询船上放箱详情

  • 接口路径:/centralControl/getShipPlacementDetailByPalletTypeId
  • Method:GET
  • 请求参数:
参数名位置类型必填含义
palletTypeIdqueryString托盘池 ID
  • 接口说明:根据托盘池ID查询该托盘在船上的放箱详情,返回单个放箱位置信息。

  • 响应示例:

json
{
  "code": 0,
  "message": "请求成功",
  "data": {
    "coordX": 1.2,
    "coordY": 3.4,
    "coordZ": 1,
    "workStatus": "PENDING",
    "palletTypeId": "PALLET-TYPE-001",
    "length": 12.2,
    "width": 2.44,
    "containers": [
      {
        "id": "f3e1b8f2-53b1-4b1f-a43f-72e2f7e7f6df",
        "laneId": "LANE-A01",
        "coordX": 1.2,
        "coordY": 3.4,
        "coordZ": 1,
        "cntr": "MSCU1234567",
        "updatedOn": "2026-05-08T10:30:00+08:00",
        "createdOn": "2026-05-08T10:00:00+08:00",
        "createdBy": "admin",
        "updatedBy": "admin",
        "remark": null,
        "actCoordX": null,
        "actCoordY": null,
        "actCoordZ": null,
        "workMode": "DRIVER",
        "voyage": "V2026050801",
        "workStatus": "PENDING",
        "status": "NORMAL",
        "trailerNo": "IT-001",
        "cntrType": "GP",
        "cntrSize": 20,
        "palletId": "PALLET-001",
        "cntrWeight": 24.5
      }
    ]
  }
}
  • 响应字段说明:
字段类型含义
data.coordXBigDecimalX 坐标
data.coordYBigDecimalY 坐标
data.coordZBigDecimalZ 坐标/甲板层级
data.workStatusString当前坐标分组的作业状态
data.palletTypeIdString托盘池 ID
data.lengthBigDecimal托盘长度
data.widthBigDecimal托盘宽度
data.containersArray该坐标下存在箱号的放箱记录列表,元素字段结构同 C_LANE_CNTR

获取车道区域状态字典

  • 接口路径:/centralControl/getLaneAreaStatusDict

  • Method:GET

  • 请求参数:无

  • 接口说明:获取车道区域状态字典,共四个状态,未来会将这个状态设置到 C_LANE_CNTR 表的 workStatus 字段中。

  • 响应示例:

json
{
  "code": 0,
  "message": "请求成功",
  "data": [
    {
      "code": "PENDING",
      "label": "作业中"
    },
    {
      "code": "DONE",
      "label": "已完成"
    },
    {
      "code": "CARGO",
      "label": "件货"
    },
    {
      "code": "TEMP",
      "label": "临时区域"
    }
  ]
}
  • 响应字段说明:
字段类型含义
data[].codeString状态编码
data[].labelString状态显示名称
  • 状态说明:
编码显示名称说明
PENDING作业中正在进行作业的区域
DONE已完成作业已完成的区域
CARGO件货存放件货的区域
TEMP临时区域临时使用的区域

新增临时区域或件货区域

  • 接口路径:/centralControl/insertTemporaryArea
  • Method:POST
  • 请求参数:请求体为单个 CLaneCntr 对象
参数名位置类型必填含义
coordXbodyBigDecimalX 坐标,对应 C_LANE_CNTR.COORD_X
coordYbodyBigDecimalY 坐标,对应 C_LANE_CNTR.COORD_Y
coordZbodyBigDecimalZ 坐标,对应 C_LANE_CNTR.COORD_Z
lengthbodyBigDecimal长度,对应 C_LANE_CNTR.LENGTH
widthbodyBigDecimal宽度,对应 C_LANE_CNTR.WIDTH
workStatusbodyString作业状态,只允许 CARGOTEMP,对应 C_LANE_CNTR.WORK_STATUS
  • 接口说明:插入单条临时区域或件货区域数据到 C_LANE_CNTR 表,系统会自动生成主键并补充创建时间、更新时间、创建人、更新人和正常数据状态。

  • 请求示例:

json
{
  "coordX": 1,
  "coordY": 2,
  "coordZ": 3,
  "length": 12.2,
  "width": 2.44,
  "workStatus": "TEMP"
}
  • 响应示例:
json
{
  "code": 0,
  "message": "请求成功",
  "data": null
}
  • 响应字段说明:
字段类型含义
datanull无业务返回值,表示插入成功

删除临时区域或件货区域

  • 接口路径:/centralControl/deleteTemporaryArea
  • Method:GET
  • 请求参数:
参数名位置类型必填含义
palletTypeIdqueryStringC_LANE_CNTR 表的主键 ID,临时区域未与托盘池数据绑定,在获取配载数据时,此表的 ID 会被赋值到 palletTypeId
  • 接口说明:根据 C_LANE_CNTR 表的主键 ID 删除指定的临时区域或件货区域记录。

  • 响应示例:

json
{
  "code": 0,
  "message": "请求成功",
  "data": null
}
  • 响应字段说明:
字段类型含义
datanull无业务返回值,表示删除成功

根据船舶代码关联查询甲板和车道信息

  • 接口路径:/centralControl/getDeckAndLaneByVesselCode
  • Method:GET
  • 请求参数:
参数名位置类型必填含义
vesselCodequeryString船舶代码
  • 接口说明:根据船舶代码关联查询 C_DECKC_LANE 表的数据,C_DECK 的 ID 就是 C_LANE 表的 deckId。返回每个甲板信息及其关联的车道列表。

  • 响应示例:

json
{
  "code": 0,
  "message": "请求成功",
  "data": [
    {
      "id": "DECK-001",
      "vesselCode": "NGP",
      "deckNo": 1,
      "width": 30,
      "length": 100,
      "offsetX": 0,
      "offsetY": 0,
      "url": null,
      "roadList": [
        {
          "id": "LANE-001",
          "deckId": "DECK-001",
          "x": 10,
          "y": 5,
          "w": 5,
          "h": 3,
          "lineNo": "L01",
          "description": "一号车道",
          "remark": null,
          "fillColor": "#FFFFFF",
          "strokeColor": "#000000",
          "strokeWidth": 1
        },
        {
          "id": "LANE-002",
          "deckId": "DECK-001",
          "x": 10,
          "y": 15,
          "w": 5,
          "h": 3,
          "lineNo": "L02",
          "description": "二号车道",
          "remark": null,
          "fillColor": "#FFFFFF",
          "strokeColor": "#000000",
          "strokeWidth": 1
        }
      ]
    },
    {
      "id": "DECK-002",
      "vesselCode": "NGP",
      "deckNo": 2,
      "width": 30,
      "length": 100,
      "offsetX": 0,
      "offsetY": 50,
      "url": null,
      "roadList": [
        {
          "id": "LANE-003",
          "deckId": "DECK-002",
          "x": 10,
          "y": 5,
          "w": 5,
          "h": 3,
          "lineNo": "L01",
          "description": "一号车道",
          "remark": null,
          "fillColor": "#FFFFFF",
          "strokeColor": "#000000",
          "strokeWidth": 1
        }
      ]
    }
  ]
}
  • 响应字段说明:
字段类型含义
data[].idString甲板ID
data[].vesselCodeString船舶代码
data[].deckNoInteger甲板号
data[].widthInteger甲板宽度
data[].lengthInteger甲板长度
data[].offsetXIntegerX偏移量
data[].offsetYIntegerY偏移量
data[].urlStringURL
data[].roadListArray车道列表
data[].roadList[].idString车道ID
data[].roadList[].deckIdString所属甲板ID
data[].roadList[].xIntegerX坐标
data[].roadList[].yIntegerY坐标
data[].roadList[].wInteger宽度
data[].roadList[].hInteger高度
data[].roadList[].lineNoString车道号
data[].roadList[].descriptionString描述
data[].roadList[].remarkString备注
data[].roadList[].fillColorString填充颜色
data[].roadList[].strokeColorString描边颜色
data[].roadList[].strokeWidthInteger描边宽度

内拖车模块接口

结束作业

  • 接口路径:/internalTrailer/endAssignment
  • Method:GET
  • 请求参数:
参数名位置类型必填含义
palletTypeIdqueryString托盘池ID
headOrientationqueryString车头朝向枚举(BOW-船头/STERN-船尾)
  • 接口说明:

    • 前置条件:托盘必须存在于托盘池中,否则接口会直接报错:托盘不存在,无法结束作业
    • 接口会根据 palletTypeId 查询托盘池信息,批量更新作业相关记录为完成状态,并将托盘池记录 workStatus 更新为 DONE
    • 如果托盘已绑定内拖车,内拖车在线会话 workStatus 会被更新为 WAITING_FOR_PALLET
    • 通知所有终端刷新船图数据和托盘列表。
  • 响应示例:

json
{
  "code": 0,
  "message": "请求成功",
  "data": null
}
  • 响应字段说明:
字段类型含义
datanull无业务返回值,表示结束作业成功

叉车模块接口

获取空拖头状态下的拖车列表

  • 接口路径:/forklift/getEmptyTrailerList
  • Method:GET
  • 请求参数:无
  • 接口说明:返回 workStatus=WAITING_FOR_PALLET 的拖车会话信息,数据直接来自 Redis 会话存储。
  • 响应示例:
json
{
  "code": 0,
  "message": "请求成功",
  "data": [
    {
      "sessionId": "session-uuid-123",
      "terminalName": "IT-001",
      "terminalType": "DRIVER",
      "workStatus": "WAITING_FOR_PALLET",
      "connectTime": "2026-05-08T10:00:00"
    },
    {
      "sessionId": "session-uuid-456",
      "terminalName": "IT-003",
      "terminalType": "DRIVERLESS",
      "workStatus": "WAITING_FOR_PALLET",
      "connectTime": "2026-05-08T10:15:00"
    },
    {
      "sessionId": "session-uuid-789",
      "terminalName": "IT-005",
      "terminalType": "DRIVER",
      "workStatus": "WAITING_FOR_PALLET",
      "connectTime": "2026-05-08T10:30:00"
    }
  ]
}
  • 响应字段说明:
字段类型含义
data[].sessionIdStringWebSocket 会话 ID
data[].terminalNameString内拖车号(终端名称)
data[].terminalTypeString拖车类型:DRIVER(有人拖车)、DRIVERLESS(无人拖车)
data[].workStatusString拖车作业状态,固定为 WAITING_FOR_PALLET
data[].connectTimeDateTime/String建连时间

MIT版权,未经许可禁止任何形式的转载