1.业务背景:

  • 生鲜加工环节,需要领取原料才能进行原料加工,现在加工仓缺少领料,退料等功能,导致原料加工环节无法继续向下进行.现急需开发领料,退料功能,来保证原料加工环节的正常工作.
  • 1.1:领料业务流程

  • 1.2:退料业务流程

2.业务目标:

  • 快速开发实现领料,退料功能,同时保证系统功能的拓展性,能满足后续新增的业务发展需求,比如后续要实现的退料差异场景.

3.需求分析:

  • 3.1:产品设计的方案,流程如下

 

    • 1.产品的方案简单来说,就是1个叫料需求,对应1个领料需求单, 用需求单去承载整个领料,交料流程。
    • 2.如果按照上面产品同学的方案,那开发同学设计时,设计1张领料需求单表和1张领料需求单明细表
    • 3.领料需求单表主要记录了领料的需求信息,而明细表则是对这些需求的详细补充,比如:领取数量这些.
  • 3.2.方案2-作业任务化

 

 

    • 1.该方案在操作"叫料"按钮时,除了生成"领料需求单"及明细表外,还会生成"领料任务"表.
    • 2.后续仓库作业人员都是只对接"领料任务",对领料任务做操作,和领料需求单没有关系.
  • 方案对比

  • 产品出的方案1

  • 优势

    • 简洁性‌:只建立了领料需求单及明细表,结构简单,易于理解和维护
    • ‌快速实现‌:开发周期短,可以快速上线满足基本需求
  • 劣势

    • ‌扩展性受限‌:如果未来需要添加更多功能或处理更复杂的业务逻辑,领料需求表设计可能会成为瓶颈
    • ‌责任不明确‌:领料需求和领料处理都放到领料需求表处理,数据耦合太重 
  • 方案2

  • 优势

    • ‌责任明确‌:加工人员的操作和作业流转人员操作独立开,责任清晰明确.
    • 扩展性强‌:如果未来需要添加新的功能或修改现有功能,可以在现有的表结构基础上进行扩展,而无需对整个系统进行大规模的修改,如添加领料审批,那我只需要在领料任务表上做修改,原来的领料需求功能不用动.
  • 劣势

    • 开发成本‌:新增了领料任务,开发周期较方案1更长一点.

最终方案

  • 综合后续拓展性及可维护性来说,最终选择方案2,并且方案2的开发周期并不会比方案1开发周期多很多.

4.详细设计

  • 4.1.场景说明:

    • 领料和退料的业务场景相似,可以把对应的领料任务和退料任务抽象成1个任务模块.统一管理和分配领料与退料任务,提高操作效率和准确性.现阶段可以把任务相关代码统一放到1个包下面,然后统一对外提供api接口.
    • 暂时不做成任务中心服务:
      • 成本考虑:比如:服务器资源,是需要费用开销的
      • 业务规模:现有的任务场景不是特别多,而且业务规模还在发展阶段,等业务规模越来越大, 任务场景使用越来越多时,再考虑服务独立,也来的及.
  • 4.2.流程说明

    • 领料任务‌:加工台工作人员点击“叫料”按钮后,系统自动生成领料需求单和任务。仓库作业人员通过任务中心领取任务,根据任务详情领取原料并送到加工台.
    • 退料任务‌:加工台工作人员点击“退料”按钮后,系统自动生成退料需求单和任务。仓库作业人员通过任务中心领取任务,根据任务详情将多余原料退回.

  • 4.3.任务模型-实体生命周期

  •  如上图的流程中,领料任务或者退料任务,其实就是对应着上图中的“任务头”,"基础任务明细","扩展业务明细","任务作业结果"表.
    • 任务头:保存是任务单号及该任务所属上层的内容,比如:这个任务归属于哪个加工任务id,哪个产线id,哪个加工仓id等信息.
    • 基础任务明细:这个任务的公共部分,比如:供应商id,商品id这些,退料任务和领料任务中都会包含供应商和商品.还有任务类型,比如是退料任务还是领料任务.
    • 扩展任务明细:每个任务不同的部分,可以拓展的部分,后续要有新的需求变更,要新增字段,就在扩展任务明细中加.
    • 任务作业结果表:顾名思义,就是保存这个任务作业的结果的.
  • 4.4.数据库设计

posted on 2024-11-16 11:36  路飞_lufei  阅读(1)  评论(0编辑  收藏  举报