基于信息技术的精细化物资流转

(整期优先)网络出版时间:2024-03-12
/ 5

基于信息技术的精细化物资流转

鲁润钊

中国飞行试验研究院 陕西 西安  710089

摘要:本文旨在探讨如何利用信息化管理设备优化办公流程,提高工作效率和信息传递的便捷性。通过建立一个简单的信息化管理设备,包括硬件设备和软件系统,实现设计清单审核、物资领用签字和物资出纳之间的信息联系。本文介绍了具体的方案和操作步骤,并着重强调了该技术方案的可行性和实用性。

关键词:用户注册四种类型的用户认证(授予权限)物资清单文件电子签名点击确认文件和数据存档信息实时更新

随着物资流通量增大,需要更加智能化的信息管理。通过需求分析,制定整体方案,建立架构设计,建立一个信息化系统,将信息系统引入物资流转全过程。首先进行用户注册、设定相应的功能函数,其次为各类型用户授予相应权限,最后在用户发出指令时调用相应功能函数。

一、需求分析

将数字信息技术引入施工工作中的物资流通,提升物资提取的效率。企业施工所需要的物资包括标准化零部件(以下简称“标准件”)和消耗型材料(以下简称“耗材”)。目前施工所需物料在计划、开单、领取的流程中存在人员临时调配、衔接不畅、效率低下的问题。本文的核心思想是:利用信息技术辅助完成事务性工作,提高实际业务性工作在总工作中的比重,以实现物资信息化流通为目标。

标准件清单需要先送至物资开单处,由物资开单处审核签字,将完成签字的标准件清单送至库房物资管理处,由库房物资管路处根据完成签字的标准件清单领取标准件,为施工部门领用。耗材领取的需要直接送至库房物资管理处,由库房物资管理处根据施工部门所提需求领取耗材,为施工部门领用。

在标准件和耗材申请签字领取的过程中,需要耗费时间和人力资源。这里有两个过程人员等待的时间较长——(一)将标准件清单送至物资开单处后,等待物资开单处审核签字所耗费的时间;(二)将完成审核签字的标准件清单送至库房物资管理处,等待库房物资管理处选配标准件与耗材所需的时间——考虑到物资开单处与库房物资管理处的多种业务开展,平均需要数十分钟至半小时不等。而等待的时间,一方面较长而存在物资流转效率较低的情况,另一方面又不够长不足以领用的人员返回工作岗位开展其他业务。

此外不同的课题各自的标准件清单不在同一集中时间发放,意味着没有相对固定的时间段进行清单取送、审核签字、物资领用。不同的课题各自的标准件清单所需的标准件在库房物资管理处选配时也需要一定的工作。

为实现以上需求,信息系统需要实现以下功能:

1.1流程管理

设计清单审核、物资领用签字、物资出纳等流程的创建、分配和管理。信息通道进行开源设计,为将来可能扩展的功能留有接口;同时进行闭源管理,封装留有功能预设的扩展接口,确保物资清单来源可查、审核与电子签名安全、指令唯一可靠。

1.2用户认证

用户登录系统后,通过身份认证授予用户不同权限,确保数据的安全性。其中,授予有资格发出物料清单的人员用户以领用人权限,可以负责决定领取的标准件和耗材;授予施工部门人员用户以领用人权限,可以负责决定领取耗材和其他相关的物资。授予物资管理处负责物料清单审核与签字的人员用户以管理员权限,管理员用户能够在信息系统内进行电子签名,通过唯一的信息通道传输至库房管理处。库房管理处接受的标准件领用的指令只可能是经过审核并完成电子签名的清单,确保标准件等物资的规范领用,实现单位与集团公司精细化管理的目标。

1.3文件管理

文件管理的对象是物资领用清单,主要的是标准件清单。完成电子签名的标准件清单在库房物资管理处确认领用人领用后,完成电子签名的文件自动保存至信息系统内,表明清单上的物资已出库。文件上的物资数据经过处理亦保存至信息系统内,可用来精细化管理检查,也可用来做物资大数据分析,用来本单位整体课题的研究。

1.4信息传递

确保信息传递的规定性,即特定的用户拥有特定的权限向特定的用户发出指令。具体地说,经过用户认证的领用人拥有权限向经过授权的管理员发出审核物资领用清单的指令,经过授权的管理员拥有权限向库房管理处发出选配物资的指令,库房管理处拥有权限发出物资已由领用人领取的确认信息。信息传递的规定性不仅是精细化管理的需要,也是物资流转有序有迹可循的要求。

二、整体方案:

引入这样一个信息化系统:研发设计过程中用到的的标准件,自动生成物资清单,校对完成后发送至物资开单处;物资开单处根据物料清单进行开单和签字,将电子版发送至库房管理处;库房管理处根据签字的物料清单进行物料选配。以上物料领取完成程序化后,施工组只需直接前往库房管理处领取物料,无需抽调人员反复流动。物资开单处每个工作日只需一次将纸质版存档留底,其余物料清单的签字和领取只需电子版证明,无需人员流动。

2.1用户注册与认证

信息化系统已预设用户,完成内部测试。正式上线后的信息化系统面向单位员工开放新用户注册,同时完成用户认证。员工所承担的工作不同,应根据是否可读、是否可写、是否可签字认证为以下四类用户:

①甲类用户:经过用户认证的领用人,可以决定某课题所需的标准件等物资的领取。

②乙类用户:经过授权的管理员,负责审核物资清单、开具物资领用单、完成管理员电子签名,下发物资选配的指令。

③丙类用户:库房物资管理员,负责选配物资,根据接收到的完成管理员电子签名的清单指令,按照指令上的物资分门别类进行选配,完成后进行确认。

④丁类用户:只读取信息。

2.2授予权限

根据认证的用户类别,授予相应的权限。权限如下:

①甲类用户:实时信息状态可读,可上传并发送标准件清单和耗材清单。

②乙类用户:实时信息状态可读,可接收物资清单,可对物资清单进行电子签名,可发送完成电子签名的物资清单。

③丙类用户:实时信息状态可读,可接收完成电子签名的物资清单,可确认物资出纳。

④丁类用户:实时信息状态可读。

2.3待调用的功能函数

这些函数是各种用户权限:标准件清单文件为甲类、乙类用户所授予,点击确认与电子签名为乙类、丙类用户所授予,文件和数据存档为乙类、丙类用户所授予。

2.4用户权限的使用

用户发出指令,调用相应函数,执行函数命令。所有用户都将授予信息读取权限,随时查阅实时更新的权限。这是这个信息系统需要实现的功能,也是基于信息技术的精细化物资流转需要达到的目标。

三、架构设计

这是一个用户实现实时信息交流的信息系统,允许用户在客户端进行信息输入和输出,要求服务器端实时更新信息,根据有权限的甲、乙、丙不同类型的用户指令可将文件类型信息存到本地文件系统中。

基于精细化物资流转的需求分析和数字信息化的整体方案,进行信息化系统的架构设计。基本的软件架构包括前端、后端、数据库、用户认证、用户授权、流程管理模块、文件管理模块。

需要后端服务器和前端用户交互系统的技术支持:

3.1 后端

后端服务器负责处理业务逻辑、与数据库进行交互等功能,并提供API接口给前端调用,实现前端用户指令调用函数触发后端函数执行命令。

3.1.1后端函数

使用Python程序语言编写服务器端代码,用于处理用户发出的请求和执行相应的功能,包含用户登录、用户授权的功能,包括该信息化系统的文件发送、点击确认、电子签名、文件存档等功能。

3.1.2调用函数

用户发出指令后,调用函数将触发后端函数执行相应的命令,实现相应的功能。

选择一个Python的Web框架来简化开发过程。在Web开发中,用户通过前端界面上的操作例如按钮点击、表单提交等方式,来触发后端函数的执行。例如,在点击“确认”按钮时,Flask模块处理用户发出的请求和对指令的响应,通过JavaScript调用相应的后端函数来处理确认操作。

3.2前端

前端用户交互系统负责构建用户界面、与用户进行交互。

使用前端编辑器从零开始创建前端项目并将其展现为图形化界面,使用HTML构建页面结构,使用CSS添加样式和布局。使用JavaScript实现与用户的交互,用户能够通过点击确认按钮或链接的方式发出指令。通过AJAX或Fetch技术将用户操作传递给后端服务器进行处理。用户与服务器通过网络进行通信,实现完整的应用程序。

3.2.1项目搭建

首先,安装一个前端编辑器,例如Visual Studio Code、Atom。确保环境配置与安装的编辑器相匹配。其次,在计算机适当的位置,创建一个新的项目文件夹,作为该信息化系统前端页面设计这个项目的根目录。接着,需要打开前端编辑器,并将根目录设置为刚刚创建的新的项目文件夹。最后,在终端或命令行界面中导航到项目文件夹,并按照说明执行一些必要的初始化命令。例如,使用npm初始化一个新的package.json文件。

3.2.2页面布局

创建HTML文件:在项目文件夹中创建一个新的HTML文件。在这个文件中,编写基本的HTML结构,包括''声明、''标签、'

'标签和''标签。

链接CSS样式:在HTML文件的'

'标签内,使用''标签将一个CSS文件与HTML文件关联起来。你可以在项目文件夹中创建一个新的CSS文件,并将其链接到HTML文件中。

编写CSS样式:打开CSS文件,在其中编写样式规则。通过选择器和属性,定义页面元素的样式。你可以设置背景颜色、字体样式、边距、大小等。

创建JavaScript文件:如果需要添加交互功能,可以在项目文件夹中创建一个新的JavaScript文件。将其链接到HTML文件中的'

'标签内,或放置在''标签的底部。在JavaScript文件中编写代码来实现你所需的交互行为。

3.2.3用户交互

创建JavaScript文件:在项目文件夹中创建一个新的JavaScript文件,将其链接到HTML文件中的'

'标签内,或放置在''标签的底部。在JavaScript文件中编写代码来实现你所需的交互行为。

预览效果:在前端编辑器中启用预览功能,并在编辑器中打开HTML文件,即可看到创建的页面效果。

测试调试:通过前端编辑器编辑HTML、CSS和JavaScript文件,不断进行测试和调试,并根据调试情况修改和调整代码,确保页面在各种设备和浏览器上呈现一致。

3.3上线

当完成前端开发并对其进行了测试和优化后,将该信息化系统项目部署到3.1所示的Web服务器上,从而使信息化项目可以通过网络进行访问,用户将通过网络进行通信。

用户在交互页面发出指令后,通过设定的API接口使用Flask模块处理指令,并通过JavaScript调用相应的后端函数来执行命令,实现功能。

四、用户注册

根据用户权限不同要将用户认证为四种不同类型——甲、乙、丙、丁,我们在用户注册和认证流程中添加一个用户类型字段,并在用户注册时提示注册者选择用户类型。

4.1数据库表结构更改

修改数据库表结构,以包括一个用于存储用户类型的字段。我们将在用户表中添加一个"user_type"列。

class User(Base):

__tablename__ = 'users'

id = Column(Integer, primary_key=True)

username = Column(String, nullable=False)

password = Column(String, nullable=False)

user_type = Column(String)  # 添加用户类型字段

4.2用户注册流程

在用户注册流程中,我们为用户提供一个选项,让用户注册者选择他们的用户类型——甲、乙、丙、丁。我们使用HTML表单来实现这一点,在创建新用户时提示选择用户类型,并将用户选择的用户类型存储在数据库中。

@app.route('/register', methods=['POST'])

def register():

name = request.form.get('name')

user_type = request.form.get('user_type')  # 用户选择的用户类型

password = request.form.get('password')

# 创建新用户并存储用户类型

new_user = User(username=name, password=password, user_type=user_type)

session.add(new_user)

session.commit()

return "User registered successfully" # 创建成功并返回

4.3用户认证和权限控制

根据四种不同的用户类型来授予不同的相应的权限。在用户登录后,用户端可以查询其用户类型并设置相应的权限。以下示例为用户登录后,查询其用户类型并设置权限。

@app.route('/login', methods=['POST'])

def login():

username = request.form.get('username')

password = request.form.get('password')

user = session.query(User).filter_by(username=username, password=password).first()

if user:  # 用户成功登录,设置其权限

if user.user_type == '甲':

user.grant_permissions(['send'])

elifuser.user_type == '乙':

user.grant_permissions(['receive', 'sign'])

elifuser.user_type == '丙':

user.grant_permissions(['confirm'])

else:

user.grant_permissions(['read'])

return "Login successful"

else:

return "Login failed"

经过数据库表结构更改,在这个新的用户类型字段为新用户选择用户四种类型,并为新用户进行用户认证和权限控制,完成初始用户注册。

五、用户权限的授予

授予用户权限通常涉及在用户对象中维护一个权限列表或角色,并在用户登录或在特定条件下为其分配相应的权限。以下是一种基本的方法来授予用户权限:

5.1定义用户模型

在应用程序中,首先定义用户模型,其中包括用户的基本信息和权限字段。这些字段可以存储在数据库中,以便在用户认证时检索和更新。

class User:

def __init__(self, username, password, user_type=None):

self.username = username

self.password = password

self.user_type = user_type

self.permissions = []

defgrant_permissions(self, permissions):

self.permissions.extend(permissions)

5.2用户登录时分配权限

在用户成功登录时,根据用户的角色或用户类型,使用'grant_permissions'方法来分配相应的权限。这通常在用户认证成功后的登录逻辑中进行。

def login(username, password): # 查询数据库,验证用户的用户名和密码

user = authenticate(username, password)

if user: # 根据用户类型分配权限

if user.user_type == '甲':

user.grant_permissions(['send'])

elifuser.user_type == '乙':

user.grant_permissions(['receive', 'sign'])

elifuser.user_type == '丙':

user.grant_permissions(['confirm'])

else:

user.grant_permissions(['read'])

return "Login successful"

else:

return "Login failed"

5.3检查权限

在应用程序的不同部分中,需要检查用户是否具有执行特定操作的权限。这可以在每个需要权限检查的操作前进行。这是一个基本的权限授予和检查示例,确保对安全性进行充分的考虑,以防止未经授权的访问和操作。

六、用户权限的使用

授予用户甲、乙两类用户发送文件的权限;授予乙类用户点击确认或电子签名的权限,丙类用户点击确认的权限。

6.1授予用户权限——发送文件

给甲类用户授予权限——将物资清单文件发送给乙类用户。给乙类用户授予权限——接受甲发送来的物资清单文件,给该文件进行电子签名,完成电子签名的物资清单文件发送给丙。

实时更新信息:“完成对物资清单文件的电子签名,已发送给丙”。

授予用户权限以发送文件通常需要在用户认证成功后执行,这包括将相应的权限设置为用户对象中的权限列表。以下是一个示例,演示如何授予用户“发送文件”的权限:

class User:

def __init__(self, username, password):

self.username = username

self.password = password

self.permissions = []

defgrant_permissions(self, permissions):

self.permissions.extend(permissions)

# 用户登录成功后,调用该函数来授予"发送文件"权限

defgrant_send_file_permission(user):

user.grant_permissions(['send'])

6.2授予用户权限——点击确认

要授予用户权限以执行特定操作,比如“点击确认”,您需要在用户登录后,或者在满足特定条件时,将相应的权限添加到用户的权限列表中。以下是一个示例,演示如何授予用户“点击确认”的权限:

class User:

def __init__(self, username, password):

self.username = username

self.password = password

self.permissions = []

defgrant_permissions(self, permissions):

self.permissions.extend(permissions)

# 用户登录成功后,调用该函数来授予"点击确认"权限

defgrant_confirm_permission(user):

user.grant_permissions(['confirm'])

6.3授予用户权限——电子签名

给丙类用户授予权限——接受乙发送来的完成电子签名的物资清单文件,点击确认。确认后完成电子签名的物资清单文件将保存至该系统的档案一。确认后物资清单上的材料及其数目将保存至档案二,形成商品数目统计。

技术层面可将其归类为“点击确认”这一特定操作的范畴。对于不同的“点击确认”操作,可以创建不同的后端函数来分别处理。在前端方面,在用户界面上添加对应的控件,例如按钮或链接,并将其与相应的后端函数进行关联。

6.4授予用户权限——文件存档

文件存档函数将接受两个参数:‘file_path’表示文件路径,‘content’表示要保存的文件内容。它使用‘open()’函数将文件以写入模式打开并指定编码为UTF-8。然后,通过‘write()’方法写入文件内容。最后,关闭文件。

defsave_file(file_path, content):

try:

with open(file_path, 'w', encoding='utf-8') as file:

file.write(content)

print("文件保存成功!")

except Exception as e:

print(f"文件保存失败:{str(e)}")

按照下面的方式调用这个函数,并传入合适的文件路径和内容进行保存:

save_file("file_1.txt", "文件已保存")

这样就会在当前目录下创建一个名为‘file_1.txt’的文件,并将“文件已保存”写入其中。

如此以来,甲、乙两类用户获得发送文件的权限;乙类用户获得点击确认和电子签名的权限,丙类用户获得点击确认的权限。获得相应权限的用户在交互界面进行操作发出指令后,服务器将调用相应函数执行相应命令,实现相应功能。

七、结束语

在这个信息化系统中,实现了物资需求、物资审核、物资选配、物资领用各个环节的信息联通,搭建起了在标准化物资领用人、物资开单处、库房物资管理处之间的沟通桥梁,实现了信息实时沟通、流程实时监控的效果,达到了减少人员走动、提高物资流转效率的目标。

参考文献:

[1]袁武民,魏孔胜,张芳顺等.基于新一代信息技术的铁路信号物资数智化管理方案[J].铁道通信信号,2023,59(12):7-16.