Files
huachuang/docs/lms-daily-plan-overview-design.md
2026-08-15 10:11:00 +08:00

273 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 2.2.5 日计划管理与日计划作业
## 2.2.5.1 功能说明
ERP 将生产日计划推送至 LMS工人也可以在 LMS 中人工创建日计划。日计划用于维护订单所需的管芯信息、需求数量、装箱信息以及备货、套管进度。
系统将日计划的资料维护和现场作业分为两个页面:
1. 日计划管理:负责日计划查询、新增、编辑、开始订单、追加数量和查看操作记录。
2. 日计划作业:负责备货、套管、订单状态操作,以及顺序、权重和调度策略维护。
一张日计划只对应一种管芯。同一时间可以存在多张日计划,不同日计划允许使用相同管芯物料,并分别维护数量、顺序、权重和作业状态。
开始备货、开始套管只改变日计划作业状态,不直接下发出入库、桁架或套管任务。实际任务由后续定时器查询符合条件的日计划后生成。
## 2.2.5.2 概要设计
### 1、日计划获取
1ERP 推送日计划
- ERP 将日计划推送至 LMS。
- 推送信息包括 ERP 订单号、计划日期、管芯物料、计划数量和装箱信息。
- 系统按照“租户 + ERP 订单号”进行幂等判断。
- 首次推送时创建日计划,并生成 LMS 日计划编号。
- 订单未开始时ERP 重推可以覆盖计划日期、管芯、计划数量和装箱信息。
- 订单已开始时ERP 数量增加的部分计入追加数量;数量不变时按幂等成功处理;数量减少时拒绝更新。
- 已取消或已结束的订单不允许 ERP 再次更新。
2人工创建日计划
- 人工填写计划日期、人工订单号、管芯物料、计划数量、装箱信息、顺序和权重。
- 日计划编号按照编码规则自动生成,格式为 `DPyyyyMMdd0001`
- 人工订单号未填写、为空白或编辑时清空,系统自动使用日计划编号作为订单号。
- 未开始的人工日计划允许编辑ERP 日计划和已开始日计划不允许编辑基础资料。
### 2、日计划管理
1日计划查询
- 查询所有日期和所有状态的日计划,不限制当天数据。
- 查询条件包括计划/订单号、计划日期范围、管芯编码或名称、来源和订单状态。
- 列表显示日计划编号、订单号、计划日期、管芯信息、需求总量、备货进度、套管进度、三个业务状态、来源、修改人和修改时间。
- 计划日期统一显示为 `yyyy-MM-dd`
- 支持查看状态时间和操作日志,操作日志显示中文操作名称、状态名称和操作人姓名。
2开始订单
- 未开始订单可以执行开始订单。
- 开始时允许再次确认计划数量,并填写本次追加数量。
- 计划数量、累计追加数量、订单状态和开始时间在同一事务内更新。
- 开始成功后订单状态变为进行中,并进入日计划作业范围。
3追加数量
- 追加数量只在“日计划管理”页面操作,不在“日计划作业”页面重复提供入口。
- 只有进行中的订单允许追加,追加数量必须为正整数。
- 需求总量统一按照“计划数量 + 累计追加数量”计算。
- 追加后,备货和套管同时按照新的需求总量继续作业。
- 如果备货原来已经完成,追加后已备货数量小于新需求总量,则备货状态恢复为进行中,并清空备货完成时间。
- 如果套管原来已经完成,追加后已套管数量小于新需求总量,则套管状态恢复为进行中,并清空套管完成时间。
- 未开始或已取消的备货、套管状态保持不变,由人工决定是否开始或恢复。
4取消未开始订单
- 未开始订单可以在日计划管理页面取消。
- 取消时必须填写原因。
- 已取消订单可以在日计划作业的“已取消”页签中恢复。
### 3、日计划作业
1作业查询
- 日计划作业不限制计划日期,跨天未完成订单继续显示。
- 默认查询订单状态为进行中的日计划,并提供“已取消”页签。
- 页面分为“备货作业”和“套管作业”两个视图。
- 备货作业只显示已备货数量小于需求总量的日计划。
- 套管作业只显示已套管数量小于需求总量的日计划。
- 某项作业达到需求总量后不再显示;后续追加数量使完成数量小于新需求总量时,该日计划自动重新显示。
- 已结束订单不进入日计划作业页面,只能在日计划管理中查询。
2备货作业
- 开始备货:将备货状态由未开始改为进行中,不直接下发任务。
- 取消备货:人工可以取消未开始或进行中的备货,必须填写取消原因。
- 恢复备货:恢复为取消前状态,必须填写恢复原因。
- 完成备货:定时器任务回写已备货数量;达到需求总量时自动改为已完成并记录完成时间。
- 单独取消或恢复备货不影响套管状态。
3套管作业
- 开始套管:将套管状态由未开始改为进行中,不直接下发任务。
- 取消套管:人工可以取消未开始或进行中的套管,必须填写取消原因。
- 恢复套管:恢复为取消前状态,必须填写恢复原因。
- 完成套管:定时器任务回写已套管数量;达到需求总量时自动改为已完成并记录完成时间。
- 单独取消或恢复套管不影响备货状态。
4订单操作
- 取消订单:任意未结束状态均允许取消,必须填写原因。取消订单时,尚未完成的备货和套管同步取消。
- 恢复订单:订单恢复为取消前状态;备货和套管仍保持取消状态,由人工分别恢复,防止自动重新启动现场作业。
- 结束订单:进行中订单允许随时结束。未完成的备货和套管停止并改为已取消;实际完成数量保留。
- 已结束订单不可恢复,不允许继续追加、备货或套管。
### 4、日计划关键信息
1订单信息
- LMS 日计划编号。
- ERP 订单号或人工订单号。
- 来源类型ERP、人工。
- 计划日期。
- 装箱信息,采用可编辑多行文本。
2管芯信息
- 管芯物料 ID。
- 管芯编码。
- 管芯名称。
- 管芯规格。
- 一张日计划只允许一种管芯。
3数量信息
- 计划数量。
- 累计追加数量。
- 需求总量:计划数量 + 累计追加数量。
- 已备货数量。
- 已套管数量。
- 已备货数量和已套管数量均不能超过需求总量。
4调度信息
- 顺序号:决定订单调度先后,数值越小越先执行。
- 权重:权重模式下一轮建议处理的管芯数量。
- 备货和套管分别维护调度策略和轮转游标。
### 5、状态设计
1订单状态
- 未开始ERP 推送或人工新增后的初始状态。
- 进行中:人工开始订单后的状态。
- 已结束:订单终态,不允许恢复。
- 已取消:人工取消后的状态,允许恢复。
2备货状态
- 未开始。
- 进行中。
- 已完成。
- 已取消。
3套管状态
- 未开始。
- 进行中。
- 已完成。
- 已取消。
订单、备货和套管分别保存状态,允许备货和套管并行进行,避免单一状态无法反映现场真实情况。
### 6、日计划排序与权重策略
备货和套管分别维护一套租户级策略,现场可以随时切换。策略切换后从定时器下一轮查询开始生效,已经生成或下发的任务不撤销。
1顺序模式
- 按顺序号从小到大选择日计划。
- 当前日计划对应作业完成或取消后,再处理下一张日计划。
- 页面只需要维护顺序,不显示权重字段。
2权重模式
- 权重模式仍然先按照顺序号确定订单轮转先后。
- 权重表示该订单每一轮建议处理的数量。
- 例如 A 顺序 1、权重 2B 顺序 2、权重 3C 顺序 3、权重 1则轮转顺序为A 处理 2 根、B 处理 3 根、C 处理 1 根,再返回 A。
- 如果某张计划剩余数量小于权重,本轮只处理剩余数量。
- 已完成、已取消或不满足调度条件的计划退出当前轮转。
- 页面同时显示顺序和权重,权重只允许正整数。
### 7、定时器作业衔接
1候选计划查询
- 备货定时器查询订单进行中、备货进行中且已备货数量小于需求总量的计划。
- 套管定时器查询订单进行中、套管进行中且已套管数量小于需求总量的计划。
- 根据当前顺序或权重策略返回下一张候选日计划和建议处理数量。
2排他领取
- 定时器选择候选计划后,先创建对应作业类型的 Claim 领取记录。
- 同一张计划允许同时存在一条备货 Claim 和一条套管 Claim。
- 同一张计划、同一作业类型同一时间只允许一条有效 Claim防止重复下发任务。
- Claim 保存领取标识、作业类型、预占数量、领取时进度、过期时间和自身版本。
- Claim 支持续租、主动释放和过期回收。
3进度确认
- 任务完成后必须携带 Claim 标识确认进度。
- 系统原子消费 Claim并增加对应的已备货数量或已套管数量。
- 重复确认已完成 Claim 按幂等成功处理,不重复累计数量。
- 达到需求总量时,对应作业自动完成。
- 取消或结束后不再生成新 Claim取消或结束前已经下发的有效 Claim仍允许确认实际完成数量但不改变用户已经选择的取消或结束状态。
### 8、操作日志
以下操作必须记录操作前值、操作后值、原因、操作人和操作时间:
- ERP 创建、覆盖和追加。
- 人工创建和编辑。
- 开始、取消、恢复、结束订单。
- 开始、取消、恢复备货。
- 开始、取消、恢复套管。
- 追加数量及追加后重新打开已完成作业。
- 调整顺序和权重。
- 切换备货、套管策略。
- 定时器更新备货、套管进度。
人工操作显示系统用户姓名ERP 操作显示“ERP”定时器操作显示“系统调度”。
### 9、权限设计
- 日计划查询权限。
- 日计划新增权限。
- 日计划修改权限。
- 开始订单和追加数量权限。
- 日计划作业操作权限。
- 顺序和权重维护权限。
- 策略切换权限。
- ERP 推送使用独立 Token 鉴权,并要求携带租户请求头,不复用管理端登录权限。
### 10、并发及事务设计
- 日计划页面操作使用版本号进行乐观锁控制。
- 状态更新、数量更新和操作日志在同一事务内提交。
- 批量调整顺序任意一条冲突时整体回滚。
- 追加数量、重新打开已完成作业和清空完成时间使用同一条原子 SQL。
- 策略切换和轮转游标使用版本号控制并发。
- 调度进度确认使用 Claim 自身版本和领取时作业进度作为并发边界,不绑定日计划通用版本,保证备货和套管可以独立并发确认。
- 新租户第一次查询或调度时,系统并发安全地初始化备货和套管默认顺序策略。
### 11、异常处理
- 日计划不存在时返回业务异常。
- 非法状态操作返回明确提示。
- ERP 数量减少、终态订单更新时拒绝处理。
- 追加数量、顺序和权重必须为正整数。
- 完成数量不能超过需求总量。
- 取消、恢复未填写原因时拒绝提交。
- 页面版本过期时提示刷新后重试。
- Claim 无效、已释放、已过期或进度不一致时拒绝确认。
- ERP Token 未配置时 LMS 允许正常启动,但 ERP 推送接口返回“ERP日计划接口令牌未配置”。
## 2.2.5.3 页面设计
### 1、日计划管理页面
- 查询条件紧凑同行展示,页面宽度不足时自动换行。
- 提供新增日计划、编辑未开始人工计划、开始订单、追加数量、取消未开始订单和查看详情。
- 操作栏直接显示详情,其他操作收纳到“更多”菜单,避免操作列显示不完整。
- 追加数量仅在本页面提供。
### 2、日计划作业页面
- 顶部显示备货策略和套管策略,可分别切换。
- 提供备货作业、套管作业视图切换。
- 提供进行中、已取消状态页签。
- 顺序始终显示;当前作业采用权重模式时显示权重并允许进行中订单修改。
- 已完成的当前作业不显示;追加后存在剩余数量时重新显示。
- 提供开始、取消、恢复作业,以及取消、恢复、结束订单等操作。
- 不提供新增、编辑和追加数量入口。