5.14日报
进行软件架构课堂测试
软件需求与分析
—综合案例建模分析(100分)
物料管控系统
1.0【目的】
规范公司生产订单物料控制、在线物料管理,指导物控人员日常作业要求。
2.0【范围】
适用公司生产订单物料管理及在线物料管理过程。
3.0【定义】
3.1 A类物料:占物料种类的10%左右,金额占总金额的65%左右。
3.2 B类物料:占物料种类的25%左右,金额占总金额的25%左右。
3.3 C类物料:占物料种类的65%左右,金额占总金额的10%左右。
注:公司物料ABC分类,详见《物料ABC分类明细》。
4.0【职责】
4.1 物料员:领取生产原物料,按规定位置摆放,清退不合格品和入库完成品。
4.2 计划部物控:对生产订单超领料的控制,并负责生产订单物料的损耗统计。
4.3 生产主管:负责各车间生产物料的管理工作,指导和督促各生产组长、物料员按本规定执行。
4.4 生产文员:负责各车间的系统数据录入工作。
5.0【内容】
5.1 生产订单套料发放
5.1.1 计划部生管要求每天下午三点钟前,发放后三天的生产计划给仓库部、生产部等相关部门。(后三天计划意思是1号需发布4号的生产计划,2号发5号计划,以此类推)
5.1.2 仓库输单员,接到生产计划后,需在次日完成所有的打单工作,具体要求如下:
输单员从云上ERP系统中通过配比出库完成打单工作,并输出《生产发料单》,打单时注意生产计划欠料不打单原则,打单完成后需将打单情况通过邮件反馈给计划部物控。物控需及时确认计划欠料情况,并依实际物料情况通知计划部生管更改计划,或通知采购跟催物料。
如生产订单欠料还需要输出《生产发料单》,需要由计划部物控提交《联络单》至分管副总批准后,仓库输单员方可执行按可用量出库打单。欠料部分物料当再次领用时,需由车间文员通过云上ERP系统手工新增领料完成输单工作,输出打印单据模板还是《生产发料单》。
5.1.3 发料单打印出来后,经过仓库主管手工审核后,发放给仓管员,仓管员依套料单在一个工作日内备料完成,并存放在备料区。
5.1.4 各车间主管按照生产计划排程,安排物料员提前一天到仓库办理领料手续。仓管员到仓库领料,需提供具体领用的生产订单号给仓管员,仓管员依生产订单号将备好的订单物料交接给物料员,交接完成后,物料员与仓管员需在发料单上签字确认。
5.1.5 物料发放完成后,仓管员需做好仓库现场物料卡账,同时将签好名的发料单交回仓库输单员处,由输单员在云上ERP系统审核已完结业务的发料单。
5.1.6 关于整卷(盘)料发料方式:例如PCBA车间贴片类发料。具体操作如下:
车间建立现场仓库,生产车间依订单物料领用要求,首先在云上ERP系统中依生产订单作调拨业务,即从仓库的电子材料仓库调拨整盘或整卷物料到车间的现场仓库。仓库打印系统“调拨单”给仓管员进行备料并与物料员交接。交接完成后,审核由《调拨单》产生的《其他出库单》和《其他入库单》。
生产车间文员负责在云上ERP系统中,依据生产订单输出《生产发料单》,发料仓库为生产现场仓库。
生产现场仓库由生产车间安排专人管理,每月需纳入仓库盘点范畴,由财务部和计划部物控进行复盘。
5.2 生产订单退料
5.2.1 生产订单套料领到生产车间后,发现物料不合格,确定原因为来料不良,则由物料员填写《退(补)料申请单》,填写要求如下:
单据编号规则:生产小组代码-年月(6位)+流水号(4位),例:4A1-2011110001,代表是四A车间一组在2011年11月开出的第一张单据。
单据类型:不管是制程报废,还是来料不良都选退料。
单据上需填写退料部门、退料小组、生产订单号、产品编码、及订单数量,同时在表体明细上注明具体退料明细,及写明退料原因。
5.2.2 《退(补)料申请单》填写完成后,组长要审核,车间主管复核,并需要经过品质IPQC确认物料品质状态,且需要贴上《物料标识卡》。如果属制程损坏退料,比例超过订单的5%,则需要生产经理批准。
5.2.3 《退(补)料申请单》审批完成后,交给生产文员,由生产文员在云上ERP系统制定退料单,要求如下:
系统严格按生产订单制定,并选择红字单。
制程损坏物料要求退报废品仓,来料不良物料退不良品仓,如果退好料换料,则按仓库原存放仓库退库。
单据收发类别:制程损坏退料选“制程退料”,来料不良退料选“来料不良退料”,如果是生产退好料,则选“生产退料”。
云上ERP系统单据制定完成后,将系统单据号填写在《退(补)料申请单》明细中的“系统单据号”栏。
5.2.4 物料员凭《退(补)料申请单》中“系统单据号”内容,携带要退物料去仓库输单员处申请打印料单,并办理退料交接手续,完成后,双方需要在打印出来的《生产退料单》上签字。
5.2.5 如果报废无实物,则不需要开具退料单,直接走5.3生产补料流程。
5.3 生产订单补料
5.3.1 生产过程中,不管是制程退料还是来料不良退料,最终都必须办理补料手续,方可以完成生产订单完工动作。物料员在完成退料动作之后,需及时填写《退(补)料申请单》办理补料申请业务。单据填写要求如下:
单据编号规则:同5.2.1条中第1)内容。
单据类型:不管是制程报废补料,还是来料不良补料都选补料。
单据上需填写退料部门、退料小组、生产订单号、产品编码、及订单数量,同时在表体明细上注明具体退料明细,及写明补料原因。
5.3.2 《退(补)料申请单》填写完成后,组长要审核,车间主管复核,补料比例超过订单的5%,则需要生产经理审核。补料品质部不需要签字,但需要计划部物控加签;如果补料比例超过订单的5%或物料为A类物料,则需要分管副总加签;如果补料比例超过订单的10%或物料为A类物料且超出订单的5%,则需要总经理加签。为方便快捷签字,建议在找人签字时,将对应之退料单据提供,以方便审批人了解实际情况。
5.3.3 《退(补)料申请单》审批完成后,交给生产文员,由生产文员在云上ERP系统制定退料单,要求如下:
系统严格按生产订单制定,并选择蓝字单。
单据收发类别:制程损坏补料选“制程补料”,来料不良补料选“来料不良补料”,如果是生产换好料,则选“生产领料”。
系统单据制定完成后,将系统单据号填写在《退(补)料申请单》明细中的“系统单据号”栏。
5.3.4 物料员凭《退(补)料申请单》中“系统单据号”内容,携带要退物料去仓库输单员处申请打印料单,并办理补料交接手续,完成后,双方需要在系统打印出来的《生产补料单》上签字。
5.4 生产变更退、补料
5.4.1 生产订单在生产过程中,因出现品质异常需要更改物料,由工程部在《品质异常处理报告》上临时对策栏中,详细注明更换物料明细,并经品质部验证确认后,由工程部主管审核,分发给计划部物控。计划部物控接到单据后,根据临时对策中内容在云上ERP系统中变更订单子件用料。
5.4.2 计划部处理完后通知生产车间文员在云上ERP系统制补料单,操作同5.3.3项内容;如生产线更换物料未生产,则需作退好料办理入库手续,流程与5.2.3项内容。
5.5 生产完工入库
5.5.1 生产线按订单生产,每天按计划完工并及时办理送检手续。
5.5.2 品质部检验完成后,判定合格之产成品或半成品,均由组长填写《生产交接单》,填写规范如下:
生产交接单上需注明生产订单号、物料编码、品名规格、订单数量,交接的次数及合计数,最后由交接的人签名确认。
交接单由每个小组组长保存,是作为生产订单完工入库的标志,也是系统录入单据的基础。
5.5.3 《生产交接单》每天需交到生产文员处,由生产文员在云上ERP系统录单,录入系统时分两种情况处理:
只要有生产订单号并在生产过程中一次性完成的半成品或成品,均在云上ERP系统办理“产成品入库单”业务,要求依照生产订单号生成入库单,同时注意以下几个方面:
(1)入库的仓库要选择正确;
(2)入库部门要选择正确,收发类型依入库产品属性分别为半成品入库和产成品入库两种。
(3)因公司成品、丝印半成品都设有批号管理,批号直接输入订单号。
如果是非一次完工,需要做工序计划转移的生产订单完工办理入库交接,则在云上ERP系统办理“已审核生产订单修改”中办理工序交接业务。找到对应的生产订单号,直接点修改,在订单行中录入交接的数量和日期。如装配和调试工序之间的转移则是通过此工作来完成,在包装环节则按5.5.3第1)项中要求办理产成品入库动作。
5.5.4 生产文员录入完成后,物料员凭交接单号到仓库办理入库交接手续,仓库需把《完工入库单》打印出来双方签名确认。
5.6 生产在线物料管理
5.6.1 物料员将物料搬到生产线后,贵重物料需与组长办理交接手续,并由组长保管存放。
5.6.2 生产线临时堆放区,只能存放订单用物料,非订单用物料(如来料多料)均需办理退库手续。操作同生产退料流程,在退料原因上注明生产多余物料即可。
5.6.3 生产各小组需划分物料存放区,摆放整齐并贴上《物料标识卡》,同时现场只允许固定的塑胶周转箱摆放,塑胶周转箱上标识生产组别。
5.7 生产在制品管理
5.7.1 生产各车间都设立了现场周转仓库,该仓库只能存放半成品和裸机成品入库,以及订单物料占地面积大做临时性存放用。
5.7.2 生产二部生产的半成品按订单办理入库后,其他部门在做组装生产时,需要凭对应生产订单的《生产发料单》办理交接并签名。
5.7.3 生产现场由各车间主管负责管理,并派专人管理,其他人不可擅自进入搬拿物料。
5.7.4 每个月底生产现场仓库需依云上ERP系统数据做盘点动作,盘盈盘亏之责任由车间主管承担。
5.8 制程损坏物料退库后处理
5.8.1 生产制程损坏物料退到仓库报废仓后,计划部每个月需要作数据统计形成《生产订单损耗统计表》报总经办和财务,相关责任部门需超出损耗的数据作分析并作预防措施,同时对于超出损耗比例的损失按公司《资产损失与责任赔偿管理规定》中规定处理。
5.8.2 退到仓库报废品仓的报废物料处理,请参照《仓库存货报废管理规定》中要求进行。
6.0【相关文件及运行记录】
6.1 相关文件
6.2 运行记录
FM-MS-PC003-01-A0 《生产交接单》
FM-MS-PC003-02-A0 《物料标识卡》
FM-MS-PC003-03-A0 《退(补)料申请单》
FM-MS-PC003-04-A0 《生产发料单》
FM-MS-PC003-05-A0 《生产退料单》
FM-MS-PC003-06-A0 《生产补料单》
FM-MS-PC003-07-A0 《生产订单损耗统计表》
问题:
1、绘制需求层次-需求方面二维矩阵。
2、确定关键属性和关键功能。
3、绘制关键功能的鲁棒图。
4、绘制系统的概念体系架构图。
5、绘制逻辑视图,并绘制协作图验证主要业务流程是否完整。
6、定义数据表结构,并说明表之间的关联关系,给出数字词典。
7、定义开发视图结构,给出工程目录(定义各个文件的名称及用途),并确定各个类名以类中定义定义的接口。
8、根据开发视图的文件定义,设计系统纸面原型,要求主页面定义为Index.html,点击主页面可以演示主要业务流程。
1. 需求层次-需求方面二维矩阵
需求类别 |
功能性需求 |
非功能性需求 |
业务需求 |
生产订单的物料发放、退料、补料、完工入库等 |
系统必须实时更新订单状态,确保数据一致性和实时性 |
用户需求 |
物料员、生产主管、仓库管理员等角色的操作和界面需求 |
系统应具有良好的用户体验,操作界面简洁,功能直观 |
系统需求 |
需要集成ERP系统,处理物料进出库、库存管理等 |
系统应支持大并发操作,保障高可用性,具有冗余备份和故障恢复机制 |
安全性需求 |
数据的加密传输,用户权限控制 |
系统需要具备访问权限控制,确保不同角色只能访问相关信息 |
2、确定关键属性和关键功能。
关键属性:
物料类型(A、B、C类)
生产订单号
物料编码
物料数量
库存状态(是否可用、是否欠缺等)
订单状态(是否完工,是否退料)
关键功能:
生产订单管理(发料、退料、补料、完工入库)
物料库存管理(根据订单动态管理库存)
权限控制(根据用户角色控制访问权限)
数据统计与报表生成(生产订单损耗统计表等)
3、绘制关键功能的鲁棒图。
4、绘制系统的概念体系架构图。
5、绘制逻辑视图,并绘制协作图验证主要业务流程是否完整。
协作图:
6、定义数据表结构,并说明表之间的关联关系,给出数字词典。
1. 数据表结构
1.1 生产订单表 (production_orders)
表描述:记录所有的生产订单信息。
字段:
order_id (INT, PK) - 生产订单编号
product_id (INT, FK) - 产品编号(外键,指向产品表)
quantity (INT) - 生产数量
status (VARCHAR) - 订单状态(如:待生产、生产中、已完工)
create_time (DATETIME) - 订单创建时间
delivery_time (DATETIME) - 预计交货时间
1.2 产品表 (products)
表描述:记录所有产品的基本信息。
字段:
product_id (INT, PK) - 产品编号
product_name (VARCHAR) - 产品名称
product_type (VARCHAR) - 产品类型(如:成品、半成品)
specification (VARCHAR) - 产品规格
unit (VARCHAR) - 单位(如:件、个、箱)
1.3 物料表 (materials)
表描述:记录所有物料的信息。
字段:
material_id (INT, PK) - 物料编号
material_name (VARCHAR) - 物料名称
category (VARCHAR) - 物料分类(A、B、C类)
unit (VARCHAR) - 物料单位(如:kg、m、个)
quantity (INT) - 库存数量
warehouse_location (VARCHAR) - 仓库位置
1.4 生产发料单表 (material_dispatches)
表描述:记录每次生产物料发放的详细信息。
字段:
dispatch_id (INT, PK) - 发料单编号
order_id (INT, FK) - 生产订单编号(外键,指向生产订单表)
material_id (INT, FK) - 物料编号(外键,指向物料表)
quantity (INT) - 发放数量
dispatch_time (DATETIME) - 发放时间
1.5 生产退料单表 (material_returns)
表描述:记录每次生产物料退回的详细信息。
字段:
return_id (INT, PK) - 退料单编号
order_id (INT, FK) - 生产订单编号(外键,指向生产订单表)
material_id (INT, FK) - 物料编号(外键,指向物料表)
quantity (INT) - 退回数量
return_time (DATETIME) - 退料时间
reason (VARCHAR) - 退料原因(如:来料不良、制程报废等)
1.6 物料库存表 (material_inventory)
表描述:记录物料的库存变动信息。
字段:
inventory_id (INT, PK) - 库存记录编号
material_id (INT, FK) - 物料编号(外键,指向物料表)
quantity_change (INT) - 库存变动数量(可以为负值,表示减少)
change_type (VARCHAR) - 变动类型(如:发料、退料、补料等)
change_time (DATETIME) - 变动时间
1.7 生产交接单表 (production_handovers)
表描述:记录生产完工后交接的物料信息。
字段:
handover_id (INT, PK) - 交接单编号
order_id (INT, FK) - 生产订单编号(外键,指向生产订单表)
product_id (INT, FK) - 产品编号(外键,指向产品表)
quantity (INT) - 交接数量
handover_time (DATETIME) - 交接时间
status (VARCHAR) - 交接状态(已完成、待处理)
2. 表之间的关联关系
- 生产订单表与产品表:
通过字段 product_id 关联,production_orders 表中的 product_id 是 products 表的外键。
关系描述:一个生产订单对应一个产品,一个产品可以有多个生产订单。
- 生产订单表与物料发放单、物料退料单、生产交接单表:
通过字段 order_id 关联,production_orders 表中的 order_id 是 material_dispatches、material_returns、production_handovers 表的外键。
关系描述:一个生产订单可以有多个发料单、退料单和交接单。
- 物料表与物料发放单、物料退料单、物料库存表:
通过字段 material_id 关联,materials 表中的 material_id 是 material_dispatches、material_returns 和 material_inventory 表的外键。
关系描述:一个物料可以对应多个发放记录、退料记录和库存记录。
- 物料库存表与物料表:
通过字段 material_id 关联,material_inventory 表中的 material_id 是 materials 表的外键。
关系描述:每条库存记录对应一个物料,记录物料的库存变动。
数据字典:
字段名称 |
数据类型 |
说明 |
order_id |
INT |
生产订单编号 |
product_id |
INT |
产品编号 |
quantity |
INT |
数量 |
status |
VARCHAR |
订单状态 |
create_time |
DATETIME |
订单创建时间 |
material_id |
INT |
物料编号 |
material_name |
VARCHAR |
物料名称 |
category |
VARCHAR |
物料分类 |
unit |
VARCHAR |
物料单位 |
warehouse_location |
VARCHAR |
仓库位置 |
dispatch_id |
INT |
发料单编号 |
dispatch_time |
DATETIME |
发放时间 |
return_id |
INT |
退料单编号 |
return_time |
DATETIME |
退料时间 |
change_type |
VARCHAR |
变动类型 |
change_time |
DATETIME |
变动时间 |
7、定义开发视图结构,给出工程目录(定义各个文件的名称及用途),并确定各个类名以类中定义定义的接口。
1. 开发视图结构
在物料管控系统中,开发视图结构将根据分层架构来设计,主要分为以下几个层级:
用户界面层:与用户进行交互,展示系统的数据和接受用户输入。
业务逻辑层:处理具体的业务逻辑,确保系统按需运行。
数据访问层:与数据库交互,进行数据存取操作。
服务层:处理复杂的业务逻辑,提供外部调用接口。
2. 工程目录结构
├── src
│ ├── com
│ │ ├── materialcontrol
│ │ │ ├── controller # 控制器层
│ │ │ │ └── MaterialDispatchController.java # 物料发放控制器
│ │ │ ├── service # 业务逻辑层
│ │ │ │ ├── OrderService.java # 订单相关业务逻辑
│ │ │ │ ├── MaterialService.java # 物料相关业务逻辑
│ │ │ │ └── InventoryService.java # 库存管理相关业务逻辑
│ │ │ ├── dao # 数据访问层
│ │ │ │ ├── OrderDao.java # 订单数据访问对象
│ │ │ │ ├── MaterialDao.java # 物料数据访问对象
│ │ │ │ └── InventoryDao.java # 库存数据访问对象
│ │ │ ├── model # 实体类
│ │ │ │ ├── Order.java # 订单实体类
│ │ │ │ ├── Material.java # 物料实体类
│ │ │ │ └── Inventory.java # 库存实体类
│ │ │ ├── util # 工具类
│ │ │ │ └── DatabaseUtil.java # 数据库连接工具类
│ │ │ └── config # 配置类
│ │ │ └── AppConfig.java # 应用程序配置
│ ├── resources
│ │ ├── application.properties # 配置文件
│ │ └── logback.xml # 日志配置
├── pom.xml # Maven构建配置
└── README.md # 项目文档
控制器层 (Controller):与前端交互,处理用户请求,调用业务逻辑层进行处理。
控制器类:MaterialDispatchController、OrderController
接口:dispatchMaterial()、createOrder()
业务逻辑层 (Service):封装业务规则,处理具体的业务逻辑。
业务逻辑类:MaterialService、OrderService、InventoryService
接口:dispatchMaterial()、createOrder()、updateInventory()
数据访问层 (DAO):与数据库进行交互,执行数据存取操作。
数据访问类:MaterialDao、OrderDao、InventoryDao
接口:updateInventory()、insertOrder()、getInventoryByMaterialId()
实体类 (Model):表示数据表结构,存储业务数据。
实体类:Order、Material、Inventory
接口:getOrderDetails()、getMaterialDetails()、getInventoryStatus()
配置类 (Config):用于配置数据库连接、日志等基础设施。
配置类:AppConfig
接口:dataSource()、loggingConfig()
将所有文件打包到一个文件夹中,提交压缩包文件,压缩包文件命名为学号姓名.rar,例如:20224075刘硕.rar。