运输线路管理模块开发设计文档

版本:V1.0.0
模块:DMS-LMS主数据管理-运输线路管理


一、模块概述

1.1 模块说明

运输线路管理用于维护运输系统中的线路基础数据(含线路管理与线路网点信息),作为运输系统的核心主数据之一,为以下业务提供数据支持:

  • 运输资源匹配(车型与线路的适配)
  • 装载容量校验(基于线路与车型的关联)
  • 运费计算(按线路类型、站点等维度计费)
  • 路由规划(多目的站点的路径规划)

该模块属于主数据管理模块:

  • 仅支持逻辑控制(通过状态字段管理)
  • 不允许物理删除,仅允许修改状态为禁用
  • 支持启用 / 禁用控制
  • 支持按状态、线路类型、站点等条件查询

二、数据库表结构设计

2.1 表名

2.1.1 线路管理表 dms_line_manage

CREATE TABLE dms_line_manage (
    line_manage_id       BIGINT       NOT NULL COMMENT '线路管理ID',
    line_name            VARCHAR(100) NOT NULL COMMENT '线路名称',
    line_start_site_code VARCHAR(64)  NOT NULL COMMENT '起运站点代码',
    line_end_site_code   VARCHAR(64)  NOT NULL COMMENT '目的站点代码(多个站点之间用-连接)',
    line_manage_type     TINYINT      NOT NULL COMMENT '线路类型 1-揽收 2-干线 3-配送',
    line_status          TINYINT      NOT NULL COMMENT '线路状态 0-禁用 1-启用',
    remark               VARCHAR(256)          DEFAULT '' COMMENT '备注',
    over_flag            TINYINT      NOT NULL DEFAULT '0' COMMENT '完结标识 0-未完结,1-已完结',
    create_user          BIGINT       NOT NULL COMMENT '创建人',
    create_time          DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_user          BIGINT                DEFAULT NULL COMMENT '更新人',
    update_time          DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (line_manage_id),
    UNIQUE KEY uniq_line_start_end_siteCode_type (line_start_site_code, line_end_site_code, line_manage_type),
    KEY idx_line_name (line_name),
    KEY line_end_site_code (line_end_site_code),
    KEY idx_create_time (create_time),
    KEY idx_update_time (update_time)
) ENGINE = INNODB
  DEFAULT CHARSET = utf8mb4 COMMENT = '线路管理表';

2.1.2 线路网点信息表 dms_line_site_info

CREATE TABLE dms_line_site_info (
    line_site_info_id  BIGINT      NOT NULL COMMENT '线路节点ID',
    dms_line_manage_id BIGINT      NOT NULL COMMENT '线路管理ID',
    line_site_type     INT         NOT NULL COMMENT '线路网点类型 1-起运网点 2-目的网点',
    line_status        INT         NOT NULL COMMENT '节点状态 0-禁用 1-启用',
    site_id            BIGINT      NOT NULL COMMENT '网点ID',
    site_code          VARCHAR(20) NOT NULL COMMENT '网点代码',
    line_sort          INT         NOT NULL COMMENT '线路顺序(从0开始)',
    over_flag          TINYINT     NOT NULL DEFAULT '0' COMMENT '完结标识 0-未完结,1-已完结',
    create_user        BIGINT      NOT NULL COMMENT '创建人',
    create_time        DATETIME    NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_user        BIGINT               DEFAULT NULL COMMENT '更新人',
    update_time        DATETIME    NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (line_site_info_id),
    KEY idx_site_code (site_code),
    KEY idx_create_time (create_time),
    KEY idx_update_time (update_time)
) ENGINE = INNODB
  DEFAULT CHARSET = utf8mb4 COMMENT = '线路网点信息表';

三、实体对象设计

3.1 BasePo(公共基础实体)

@Data
public class BasePo implements Serializable {

    private Long createUser;

    private LocalDateTime createTime;

    private Long updateUser;

    private LocalDateTime updateTime;
}

3.2 线路管理实体对象 DmsLineManage

@Data
@TableName("dms_line_manage")
public class DmsLineManage extends BasePo {

    @TableId
    private Long lineManageId;

    private String lineName;

    private String lineStartSiteCode;

    private String lineEndSiteCode;

    /**
     * 线路类型 1-揽收 2-干线 3-配送
     */
    private Integer lineManageType;

    /**
     * 线路状态 0-禁用 1-启用
     */
    private Integer lineStatus;

    private String remark;

    /**
     * 完结标识 0-未完结,1-已完结
     */
    private Integer overFlag;
}

3.3 线路网点信息实体对象 DmsLineSiteInfo

@Data
@TableName("dms_line_site_info")
public class DmsLineSiteInfo extends BasePo {

    @TableId
    private Long lineSiteInfoId;

    private Long dmsLineManageId;

    /**
     * 线路网点类型 1-起运网点 2-目的网点
     */
    private Integer lineSiteType;

    /**
     * 节点状态 0-禁用 1-启用
     */
    private Integer lineStatus;

    private Long siteId;

    private String siteCode;

    /**
     * 线路顺序(从0开始)
     */
    private Integer lineSort;

    /**
     * 完结标识 0-未完结,1-已完结
     */
    private Integer overFlag;
}

四、对象JSON结构设计

4.1 线路管理单对象示例

{
  "lineManageId": 10001,
  "lineName": "CA-PHX",
  "lineStartSiteCode": "CA",
  "lineEndSiteCode": "PHX",
  "lineManageType": 2,
  "lineStatus": 1,
  "remark": "加州到凤凰城的干线线路",
  "overFlag": 0,
  "createUser": 1,
  "createTime": "2026-03-01T09:45:00",
  "updateUser": 1,
  "updateTime": "2026-03-01T09:45:00"
}

4.2 线路网点信息单对象示例

{
  "lineSiteInfoId": 20001,
  "dmsLineManageId": 10001,
  "lineSiteType": 1,
  "lineStatus": 1,
  "siteId": 30001,
  "siteCode": "CA",
  "lineSort": 0,
  "overFlag": 0,
  "createUser": 1,
  "createTime": "2026-03-01T09:45:00",
  "updateUser": 1,
  "updateTime": "2026-03-01T09:45:00"
}

4.3 线路管理列表对象示例

[
  {
    "lineManageId": 10001,
    "lineName": "CA-PHX",
    "lineStartSiteCode": "CA",
    "lineEndSiteCode": "PHX",
    "lineManageType": 2,
    "lineStatus": 1,
    "remark": "加州到凤凰城的干线线路",
    "overFlag": 0,
    "createUser": 1,
    "createTime": "2026-03-01T09:45:00",
    "updateUser": 1,
    "updateTime": "2026-03-01T09:45:00"
  },
  {
    "lineManageId": 10002,
    "lineName": "CA-LAS",
    "lineStartSiteCode": "CA",
    "lineEndSiteCode": "LAS",
    "lineManageType": 2,
    "lineStatus": 1,
    "remark": "加州到拉斯维加斯的干线线路",
    "overFlag": 0,
    "createUser": 1,
    "createTime": "2026-03-01T10:00:00",
    "updateUser": 1,
    "updateTime": "2026-03-01T10:00:00"
  }
]

4.4 线路网点信息列表对象示例

[
  {
    "lineSiteInfoId": 20001,
    "dmsLineManageId": 10001,
    "lineSiteType": 1,
    "lineStatus": 1,
    "siteId": 30001,
    "siteCode": "CA",
    "lineSort": 0,
    "overFlag": 0,
    "createUser": 1,
    "createTime": "2026-03-01T09:45:00",
    "updateUser": 1,
    "updateTime": "2026-03-01T09:45:00"
  },
  {
    "lineSiteInfoId": 20002,
    "dmsLineManageId": 10001,
    "lineSiteType": 2,
    "lineStatus": 1,
    "siteId": 30002,
    "siteCode": "PHX",
    "lineSort": 1,
    "overFlag": 0,
    "createUser": 1,
    "createTime": "2026-03-01T09:45:00",
    "updateUser": 1,
    "updateTime": "2026-03-01T09:45:00"
  }
]

五、业务规则设计

线路管理表 (dms_line_manage) 规则:

  1. 线路名称不能为空
  2. 起运站点代码、目的站点代码不能为空
  3. 线路类型必须为 1(揽收)、2(干线)、3(配送)之一
  4. 线路状态默认为启用(1)
  5. 不允许物理删除,仅允许修改状态为禁用(0)
  6. 起运站点代码、目的站点代码、线路类型的组合必须唯一(通过 uniq_line_start_end_siteCode_type 唯一索引保证)
  7. 更新时间由数据库自动维护

线路网点信息表 (dms_line_site_info) 规则:

  1. 线路管理ID、网点ID、网点代码、线路类型、线路顺序不能为空
  2. 线路网点类型必须为 1(起运网点)或 2(目的网点)之一
  3. 节点状态默认为启用(1)
  4. 不允许物理删除,仅允许修改状态为禁用(0)
  5. 同一线路管理ID下,线路顺序(line_sort)需保证唯一且递增(从0开始)
  6. 更新时间由数据库自动维护

六、Feign接口设计

@FeignClient(
        value = AppConstant.APPLICATION_DMS_LMS_SERVICE_NAME,
        fallback = DmsLineManageClientFallback.class
)
public interface IDmsLineManageClient {

    String API_PREFIX = "/feign/client/lineManage";

    /**
     * 获取线路信息列表(支持按状态、线路类型筛选)
     * @param status 状态 0:禁用 1:启用(非必填)
     * @param type 线路类型 1-揽收 2-干线 3-配送(非必填)
     * @return 线路管理VO列表
     */
    @PostMapping(API_PREFIX + "/getLineManageList")
    R<List<DmsLineManageVO>> getLineManages(
            @RequestParam(required = false) Integer status,
            @RequestParam(required = false) Integer type
    );

    /**
     * 根据主键ID查询线路管理信息
     * @param id 线路管理ID
     * @return 线路管理VO
     */
    @GetMapping(API_PREFIX + "/getLineManageById")
    R<DmsLineManageVO> getLineManageById(@RequestParam("id") Long id);

    /**
     * 根据线路名称查询线路管理信息(支持模糊查询)
     * @param name 线路名称
     * @return 线路管理VO列表
     */
    @GetMapping(API_PREFIX + "/getLineManageByName")
    R<List<DmsLineManageVO>> getLineManageByName(@RequestParam("name") String name);

    /**
     * 批量根据ID查询线路管理信息
     * @param ids 线路管理ID列表
     * @return 线路管理VO列表
     */
    @PostMapping(API_PREFIX + "/getLineManagesByIds")
    R<List<DmsLineManageVO>> getLineManagesByIds(@RequestBody List<Long> ids);

    /**
     * 获取线路网点信息列表(根据线路管理ID)
     * @param lineManageId 线路管理ID
     * @return 线路网点信息VO列表
     */
    @GetMapping(API_PREFIX + "/getLineSiteInfosByLineManageId")
    R<List<DmsLineSiteInfoVO>> getLineSiteInfosByLineManageId(@RequestParam("lineManageId") Long lineManageId);

    /**
     * 批量根据线路管理ID查询线路网点信息
     * @param lineManageIds 线路管理ID列表
     * @return 线路网点信息VO列表
     */
    @PostMapping(API_PREFIX + "/getLineSiteInfosByLineManageIds")
    R<List<DmsLineSiteInfoVO>> getLineSiteInfosByLineManageIds(@RequestBody List<Long> lineManageIds);
}

作者:陆飞  创建时间:2026-03-02 13:16
最后编辑:陆飞  更新时间:2026-03-03 10:08