![](source/plugin/it618_video/images/play.png)
课程概述
为了检验学习的效果,我们基于简化的“库存盘点”需求设计了课后作业,覆盖了数据库设计、数据建模、服务端命令开发、前后端分离式移动端页面开发、单体(数据绑定)式PC页面开发等项目实战中常用的技术场景。
根据既往经验,您需要花费大约三天完成该项目实践
一、项目设计
提示:请严格按照项目设计完成开发。
1.1 数据库设计
数据库的设计请参照下方ER图。
您需要在活字格的内置库(不建议在生产用系统中使用内置库,学习阶段可做例外)中构建表、字段、表关联、自动编号、公式字段和统计字段。
1.2 后端WebAPI(服务端命令)设计
综合考虑开发效率与可维护性要求,作业项目中部分操作需采用“前后端分离”模式开发。
您需要在活字格中创建如下服务端命令,所有服务端命令均需要做异常处理,捕获异常后,将返回码设置为ExceptionCode,返回信息设置为ExceptionMessage。
名称 |
目的 |
参数 |
输出值 |
示例 |
---|---|---|---|---|
create |
创建盘点单 |
Memo:基础类型,盘点说明 Locations:数组类型,盘点单需要覆盖的库位 |
|
返回信息:1 |
getCheckPlanData |
获取盘点单的主表信息 |
ID:基础类型,盘点单ID |
data:盘点单的主表数据和所涉及的库位列表(locations属性) |
{ "data": { "ID": 9, "StatusID": 1, "CheckedByID": null, "CheckedBy": null, "CheckedAt": null, "Memo": "课程演示用", "Status": "未执行", "Comments": null, "locations": [ { "value": 1, "label": "A-1" }, { "value": 2, "label": "A-2" }, { "value": 5, "label": "C" } ] } } |
getCheckPlanInventoryData |
获取盘点单中某个库位下的库存信息,支持分页加载 |
|
|
{ "data": [ { "Inventory": "移动硬盘 512GB", "Current": 10.0, "Check": null, "InventoryID": 6 }, { "Inventory": "C1", "Current": 0.0, "Check": null, "InventoryID": 5 }, { "Inventory": "GcExcel", "Current": 20.0, "Check": null, "InventoryID": 4 }, { "Inventory": "SpreadJS", "Current": 30.0, "Check": null, "InventoryID": 3 }, { "Inventory": "Wyn", "Current": 42.0, "Check": null, "InventoryID": 2 } ], "total": 6 } |
check |
执行盘点 |
|
|
空 |
流程图如下所示:
create
getCheckPlanData
getCheckPlanInventoryData
check
1.3 前端页面设计
作业项目由如下页面构成:
1.3.1 库存盘点列表页面(PC页面)
功能描述:
1、用于展示盘点单,并可以根据盘点年度、盘点状态进行数据过滤
2、点击创建按钮,弹出“创建盘点单页面”,具体内容见以下第2点
3、点击查看按钮,弹出“盘点单详情页面”,具体内容见以下第3点
1.3.2 创建盘点单页面(PC页面)
功能描述:
1、盘点是分仓库执行的,在创建盘点单时,需要指定当前这张盘点单需要覆盖哪些仓库,必要时填写盘点说明
2、点击【创建盘点单】时执行create的服务端命令,创建失败时提示错误信息,成功的话关闭创建页面
1.3.3 盘点单详情页面(PC页面)
功能描述:
1、展示当前盘点单详情
2、可以将“在库情况”表格导出到Excel
3、可以与页面类似的PDF
PDF打印的效果
1.3.4 盘点页面(移动端)
初始状态
输入单号后的状态
选择库位后的状态(顶部):
选择库位后的状态(底部):
功能描述:
1、初始状态:页面初始时只展示盘点单号的输入图框,输入或扫描盘点号(数字或格式化为9位数字的盘点单ID,如000000011)后点击右侧图表,调用“getCheckPlanData”接口,如果盘点单存在且不时盘点完成状态,则进入“输入单号后状态”;不存在的话,提示错误信息“没有找到该ID的盘点单”;存在但状态为盘点完成时也需要也需要提示信息“盘点单已经盘点完成,请使用PC版查看详情”。
2、输入单号后状态:点击选择库位,进入“选择库位后的状态”,并通过“getCheckPlanInventoryData”接口获取第一页(5行)商品库存数据(含商品、系统在库库存和实际在库库存,如果上述数据是第一次展示,则需要使用系统在库库存来填充默认的实际在库库存,两个库存数据不一致时,需要将该行数据设置为浅红色背景来做出提示),将其展示到页面上,同时使用该接口返回的总行数来初始化分页器;操作人的默认值,使用当前系统用户对应的员工;其他事项的默认值为空。
3、选择库位后的状态:点击上下翻页时,需调用“check”接口,提交当前展示页的库存数据,然后再调用“getCheckPlanInventoryData”接口获取上一页/下一页的数据并填充用到界面上;点击切换仓库时,需要先调用“check”保存当前展示页的库存数据,然后再执行上一步中的操作;点击提交按钮时,也需要调用“check”接口,提交当前展示页的库存数据的同时,还需要将操作人和其他事项的数据保存到盘点单中。
1.4 示例与模板
1、模板:模板(V10.0.2.0).fgcc
2、示例:https://hac.app.hzgcloud.cn/course_dev_homework/
二、自评标准
如果采用模式A,请根据实际情况自行判断作业完成情况;如果采用模式B,可根据本章节自行评分。本课程作业的满分为100分,80分及格,具体评分规则如下,粗体为重点关注项目:
-
用户(仓库管理员)可以查看商品的当月在库库存,并对其进行调整 >> 模板内置,不计分
-
支持通过存货档案的名称做模糊查找
-
支持将在库库存导出为Excel表格
-
-
用户(系统管理员)可以管理员工档案,并将其与系统用户进行关联 >> 模板内置,不计分
-
支持通过员工姓名做模糊查找
-
支持类Excel的操作体验,完成创建、修改和删除操作
-
-
用户可以管理盘点单 >> 共35分
-
页面设计与示例相仿或更佳
-
支持通过盘点单的盘点时间/执行时间的年份进行过滤,候选项目为当前年度和之前的4个年度,默认为全部;支持通过盘点状态进行过滤,默认为全部
-
在查询结果中,如果盘点单已经完成盘点操作,需要将盈亏项目显示在列表中
-
支持创建盘点单。盘点单除了保存用户输入的盘点说明外,还需根据用户选择的库位,自动包含存货档案中没有被标记为删除的存货,及其当前时间节点下系统库存的数量以备查验
-
查看盘点单时,用户能看到盘点状态、盘点执行人、执行时间、盘点说明、其他事项等信息,还能查看存货的盘点情况(含存货名称、系统中的在库库存、实际盘点的库存、盘盈盘亏情况)
-
用户可以将盘点单中盘点结果数据导出为Excel文件,包含存货档案名称、系统库存、实际库存和盈亏情况
-
用户可以将盘点单导出为PDF文件,其中除了盘点单的内容外,还需要包含用于扫描的【盘点码】(将盘点单ID格式化为9位,前面补零,如123格式化为000000123)
-
-
用户可以在手机或PDA上执行盘点操作 >> 共60分
-
不允许使用数据绑定
-
页面设计与示例相仿或更佳
-
出于性能考虑,不能在页面可见区域内使用表格,图文列表需要支持分页,每页不超过5条
-
支持通过手工输入盘点单ID或扫描盘点码(扫描出的文字格式参考3.7),打开需要操作的盘点单,不能对已经完成盘点的单据再次进行盘点操作
-
支持通过选择当前盘点单中涉及到的库位,过滤出对应的商品列表和创建盘点单时的系统在库库存(系统在库库存来自3.4)
-
仅当实盘的库存和系统在库库存不一致时,才需要手工修改实盘库存,切换库位或数据分页时,自动将当前修改或确认的实际库存保存到数据库
-
如果当前登录的系统用户已关联到员工档案,需要将操作人的默认值设置为该员工
-
-
提交盘点结果时,系统需在自动更新盘点单的状态、详情外,同步更新在库库存数据 >> 共5分
-
附加分 >> 共10分
-
创建盘点单时,辅助仓库管理员选择本月份尚未创建盘点计划的库位
-
执行盘点时,如果盘点单上的在库库存和当前时间点的在库库存不一致时,给执行者做出提示
-
库存管理员可参考库位中商品的摆放位置以及盘点动线(在重排库位前,位置和动线都不会有变化)为商品指定盘点顺序,盘点单上的商品顺序需要按照该顺序展示
-
执行盘点时,执行者可以通过点击提交按钮,随时暂存数据
-
执行盘点时,即便仓库内网络不稳定,执行者也可以在已经打开的页面上确认在库库存、调整实盘库存,当网络恢复时,再一并提交
-
课程章节
第一章 数据表开发 1课时5分30秒
第二章 接口开发 4课时5分30秒
第三章 页面开发 2课时35分32秒