运输线路管理模块开发设计文档
版本: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)
- 不允许物理删除,仅允许修改状态为禁用(0)
- 起运站点代码、目的站点代码、线路类型的组合必须唯一(通过
uniq_line_start_end_siteCode_type唯一索引保证) - 更新时间由数据库自动维护
线路网点信息表 (dms_line_site_info) 规则:
- 线路管理ID、网点ID、网点代码、线路类型、线路顺序不能为空
- 线路网点类型必须为 1(起运网点)或 2(目的网点)之一
- 节点状态默认为启用(1)
- 不允许物理删除,仅允许修改状态为禁用(0)
- 同一线路管理ID下,线路顺序(
line_sort)需保证唯一且递增(从0开始) - 更新时间由数据库自动维护
六、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
最后编辑:陆飞 更新时间:2026-03-03 10:08