固定资产管理系统开发文档
一、引言
1.1 项目背景
随着企业规模的不断扩大,固定资产的数量和种类日益增多,传统的固定资产管理方式面临诸多挑战,如管理效率低下、数据准确性难以保证、资产信息更新不及时等。这些问题严重影响了企业对固定资产的有效管理和利用,增加了企业运营成本。为了提升固定资产管理的效率和准确性,实现资产的全生命周期管理,开发一套功能完善、操作便捷的固定资产管理系统迫在眉睫。
1.2 目标与范围
- 系统开发目标:构建一个高效、稳定、安全的固定资产管理系统,实现固定资产的信息化管理,提高管理效率和决策的科学性,降低管理成本。
- 涵盖功能模块:包括账户管理、人员管理、固定资产报废、入库、保管人管理、盘点、组织架构管理、部门资产数量统计、人员名下资产统计、资产列表展示、企业微信集成、系统角色和权限管理、列表自定义筛选、固定资产信息维护以及ERP对接功能等。
- 涉及业务范围:覆盖企业固定资产从采购入库、使用、保管、盘点、维修、报废到与企业其他业务系统(如企业微信、ERP系统)的数据交互和协同工作等全流程管理。
1.3 参考资料
- 《固定资产管理系统详细需求规格说明书补充》
- 《固定资产管理系统数据库设计文档》
- 《固定资产管理系统开发技术方案手册》
- Django官方文档
- 相关企业固定资产管理规范标准
二、系统设计
2.1 总体架构
本系统采用前后端分离的架构模式,后端基于Django框架进行开发,负责业务逻辑处理和数据存储;前端使用Vue.js最新版本构建用户界面,实现用户交互功能。前后端通过HTTP协议进行通信,这种架构模式使得前后端开发可以并行进行,提高开发效率,同时也增强了系统的可维护性和扩展性。
- 前端与后端交互流程:前端用户在界面上进行操作(如登录、查询资产信息等),触发相应的事件,通过Axios库向后端发送HTTP请求。后端接收到请求后,由Django框架的视图函数进行处理,调用相应的业务逻辑和数据访问层代码,从数据库中获取或更新数据,最后将处理结果以JSON格式返回给前端。前端根据返回的数据进行页面渲染和更新,展示给用户。
- 技术选型优势:Django框架具有强大的内置功能,如用户认证系统、数据库ORM、管理后台等,能够快速搭建后端服务;Vue.js的组件化开发和响应式设计使得前端开发更加高效、灵活,能够提供良好的用户体验。
2.2 功能模块设计
-
账户管理模块
- 账户创建流程:管理员在系统后台输入用户名、密码、邮箱、手机号等信息创建账户。系统对用户名进行格式校验(只能包含字母、数字、下划线,不能以数字开头,长度在4 - 20位之间),生成密码强度提示。同时,实时验证邮箱和手机号的唯一性,若已被注册则提示管理员更换。
- 账户编辑流程:修改密码时,系统要求新密码与原密码不同且满足8 - 16位,包含数字、字母和特殊字符。修改邮箱和手机号时,系统向新的邮箱和手机号发送验证链接或验证码,验证通过后修改生效。
- 账户锁定/解锁流程:管理员锁定账户时,系统记录操作信息并向被锁定账户的绑定邮箱和手机发送通知,告知锁定原因和解锁方式。解锁时,管理员需输入解锁原因,对于因密码错误次数超限导致锁定的账户,解锁时自动重置密码错误计数。
- 密码重置流程:用户通过邮箱或手机验证码重置密码,验证码有效期为10分钟,输入框旁显示倒计时。若多次输入错误验证码,系统限制30分钟内不能再次获取。新密码设置完成后,系统自动登录并跳转到修改密码成功提示页面,同时向用户邮箱和手机发送通知。
- 多账户角色批量导入导出流程:管理员下载账户信息模板(Excel文件),在模板中填写账户角色详细描述等信息后上传。系统导入时校验数据格式、内容及账户角色合法性,若角色名称不存在则提示修改。导出账户信息时,提供CSV、XLSX等多种格式选择。
- 账户登录日志分析流程:系统记录每次登录的相关信息,包括登录时间、IP地址、登录结果等。对登录失败原因进行详细分类统计(如密码错误、账户不存在、IP地址受限等),以图表形式展示各类失败原因的占比情况。管理员可设置时间段,对比不同时间段内登录失败情况的变化趋势,对于频繁登录失败的IP地址,系统自动进行限制。
-
人员管理模块
- 人员信息录入流程:单个录入人员信息时,身份证号输入框自动校验格式和真实性(联网验证或提示手动核实)。人员技能字段提供下拉选择框(来源于系统预设技能库),同时支持管理员手动添加新技能。批量导入时,系统自动标记并提示处理重复的身份证号。
- 人员信息编辑流程:修改人员部门和岗位时,系统自动更新资产所属部门和操作权限,调整该人员在相关报表和统计数据中的所属分类。记录人员信息修改历史时,关键信息修改(如身份证号、部门、岗位等)以红色字体突出显示。
- 人员离职处理流程:标记人员离职时,系统自动生成离职人员待办事项清单(如归还借用资产、清理系统账号权限等)。资产一键移交时,若接收人员名下资产数量达到阈值(可由管理员设置),系统提示管理员确认接收。移交完成后,系统更新资产保管人信息,并在资产详情页面记录移交过程。
- 人员信息查询流程:支持模糊查询和组合查询(如输入姓名部分字符或同时输入部门和岗位关键词)。查询结果页面提供导出为Excel文件的功能,方便用户进行数据分析和报告制作。
- 人员信息历史记录查询流程:查询页面增加筛选功能,可根据修改时间范围、修改人等条件筛选特定修改记录。以时间轴形式展示历史记录,提供展开和折叠功能,方便查看详细信息或整体变更情况。
-
固定资产报废模块
- 报废申请提交流程:填写报废资产编码时,系统提供自动联想功能。报废原因除预设选项外,支持手动输入并提供详细描述框。上传证明文件时,系统限制文件大小不超过5MB,校验文件格式,若不符则提示重新上传。
- 报废申请审批流程:审批流程中,若审批人在24小时内未处理申请,系统自动发送提醒消息(站内信、邮件或短信,可根据企业设置选择)。审批意见填写框设置字数限制(如200字),审批人可在审批页面查看资产详细信息和历史维修记录,为审批决策提供参考。
- 报废处理执行流程:选择报废处理方式时,系统提供每种方式的详细说明和操作指南。出售报废资产时,记录交易平台、交易单号等信息;捐赠报废资产时,记录捐赠对象、捐赠协议编号等信息。
- 报废记录查询流程:支持按照报废时间、资产编码等字段对查询结果进行排序和导出。导出报表格式优化,包含资产照片(若有上传)、审批意见等详细信息。
- 报废资产回收站流程:报废资产回收站中,系统显示误报废资产的报废申请时间、审批时间等关键信息。恢复资产时,系统检查资产相关业务流程,若存在影响恢复的操作,提示管理员处理后再恢复。
-
固定资产入库模块
- 单个资产入库流程:输入资产名称时,系统自动去除首尾空格。固定资产存放位置提供地图选点功能(若企业有电子地图系统)。固定资产使用状态和组别设置为下拉选择框,选项根据系统后台维护的标准数据生成。采购合同编号增加唯一性校验。
- 批量资产入库流程:Excel模板中增加资产图片列(支持图片路径或图片二进制数据)。系统导入时校验资产图片格式和大小,标记并提示处理重复资产编码。
- 资产验收流程:验收人员填写验收报告时,系统提供验收标准参考文档(可在系统后台维护)。对于不合格资产,系统记录退回供应商或维修的处理进度(如维修开始时间、预计完成时间等)。验收完成后,系统自动向资产管理员和相关负责人发送验收结果通知。
-
保管人管理模块
- 保管人分配流程:人员搜索功能支持按照部门、岗位等条件筛选人员。批量分配保管人时,系统提供进度条展示分配进度,分配完成后自动生成保管人分配记录报表,可在系统中查看和导出。
- 保管人变更记录流程:记录保管人变更信息时,除记录变更时间、原因、原保管人和新保管人外,还记录变更时资产的状态(如使用状态、是否有维修记录等)。变更通知消息内容详细,包含资产基本信息和交接注意事项。
- 保管人资产统计流程:统计结果图表提供下载功能,支持多种图片格式(如PNG、JPEG)。列表展示统计结果时,增加资产价值排序功能,可按资产价值从高到低或从低到高排序。
-
固定资产盘点模块
- 盘点计划制定流程:手动创建盘点计划时,系统提供部门和资产组别的树状选择框。定期自动生成盘点计划时,支持设置灵活时间规则(如每月第一个工作日、每季度最后一周等)。系统在生成盘点计划前,检查盘点人员工作安排,若存在任务冲突(可在系统中设置任务冲突规则),提示管理员调整盘点人员或时间。
- 盘点清单生成与打印流程:盘点清单在线预览时支持缩放功能。打印格式提供多种模板选择(如A4横向、A4纵向等),清单上增加盘点注意事项提示(如盘点时间范围、盘点人员职责等)。
- 盘点结果录入流程:录入盘点结果时,对于盘盈或盘亏的资产,系统自动弹出详细信息录入框,要求填写资产来源或去向等信息。上传证明照片时,支持多张照片上传,并对照片进行压缩处理。
- 盘点差异处理流程:差异报告中,系统对差异原因进行智能分析(如根据资产历史数据和操作记录推测可能原因)。调整资产信息时,系统记录调整前后的资产信息。对于需要追究责任的情况,系统提供责任认定流程,记录责任认定过程和结果。
- 盘点报告生成流程:盘点报告中增加资产变动趋势分析图表(如近几次盘点资产数量、价值的变化趋势)。报告导出时支持加密功能,设置密码保护报告内容。
-
组织架构管理模块
- 组织架构层级显示流程:树状图展示组织架构时,对于部门负责人,若企业微信中有头像信息则提供头像显示。搜索功能支持拼音首字母搜索。点击部门节点时,除展开或折叠下级部门外,还显示该部门的资产数量和人员岗位分布情况。
- 组织架构编辑流程:添加部门时,系统自动为新部门分配唯一部门编码(编码规则可在系统后台设置)。删除部门时,若部门下有未处理资产,系统列出资产清单,提示管理员进行资产转移或报废处理;若有人员,提示管理员进行人员调动或离职处理。修改部门信息后,系统自动更新与该部门相关的所有业务数据。
- 组织架构同步流程:设置定时同步时,提供同步时间范围选择(如凌晨1点 - 6点之间)。同步日志中,对于同步失败的操作,详细记录错误信息和错误代码。系统提供同步重试功能,管理员可手动点击重试按钮进行再次同步。
-
部门资产数量统计模块
- 实时统计流程:系统采用消息队列技术(如Kafka),实时接收资产入库、出库、报废等操作消息,确保统计数据的及时性。在系统负载较高时,消息队列保证数据处理的稳定性,避免数据丢失或统计延迟。
- 统计维度拓展流程:除按资产组别、使用状态统计外,增加按资产采购时间区间、资产价值区间等维度进行统计的功能。如统计近一年内采购的某部门资产数量,或价值在1万元 - 5万元之间的部门资产情况。
- 可视化展示优化流程:图表展示时,支持图表切换功能(柱状图、饼图、折线图等),用户可在不同图表类型之间切换查看资产分布情况。图表提供数据标签显示,直观展示每个数据项的具体数值。
-
人员名下资产统计模块
- 实时统计流程:利用数据库触发器技术,在资产信息发生变更时,立即触发人员名下资产统计数据的更新,确保数据的实时性和准确性。对于频繁变更的资产(如移动设备),系统采用缓存技术(如Redis),减少数据库查询压力,提高统计数据的获取速度。
- 资产详情展示流程:在资产清单页面,增加资产维修记录和保养计划展示区域。对于即将到期的保养计划,系统以红色字体突出显示,提醒用户及时进行保养。支持将资产清单以邮件形式发送给指定人员。
- 统计维度深化流程:按资产使用年限统计人员名下资产,如统计使用年限超过5年的某员工资产情况。统计结果支持导出为Excel文件,方便进行进一步的数据分析和处理。
-
资产列表展示模块
- 基本信息展示流程:在资产列表中,根据企业财务设置,显示含税价格或不含税价格,并提供切换按钮。对于固定资产使用状态,以不同颜色区分显示(如使用中为绿色、闲置中为黄色、停用中为红色)。
- 点击打开详情流程:点击资产编号打开详情页面时,采用异步加载技术,优先加载关键信息(如资产基本信息、使用状态等),其他信息(如维修记录、验收报告等)在后台逐步加载,提高用户体验。
- 列表排序流程:排序功能支持记忆用户上次排序设置,用户下次登录时,资产列表默认按照上次排序方式展示。在排序图标旁显示排序字段和排序方式的文字说明。
- 列表分页流程:分页功能支持输入页码直接跳转,同时提供快速跳转至第一页和最后一页的按钮。在分页条上显示总页数和当前页数。
-
企业微信集成模块
- 企业微信扫码登录流程:前端生成企业微信登录二维码,用户扫码后,后端通过企业微信提供的接口验证登录信息。扫码登录成功后,系统根据用户在企业微信中的部门和岗位信息,自动分配相应系统操作权限(若已在系统后台进行权限映射设置)。对于首次扫码登录的用户,系统提示用户完善部分必要信息。
- 企业微信配置管理流程:在配置管理页面,对于企业微信应用ID、应用密钥等敏感信息,采用加密存储(如AES加密算法)。同步组织架构按钮增加操作确认提示,防止误操作。同步完成后,系统以弹窗形式展示同步结果,同时在日志列表中详细记录同步操作的详细信息。
- 企业微信手工同步功能及日志流程:手工同步功能支持选择同步部分数据(如仅同步新增人员或仅同步部门信息)。同步日志中,对于同步成功的人员和部门,记录同步前后的关键信息变化(如人员岗位变动、部门负责人变更等)。
-
系统角色和权限管理模块
- 角色定义流程:为不同角色设置详细的操作指南和权限说明文档,在系统后台可随时查看。超级管理员可设置系统的全局参数,普通管理员可在授权范围内管理系统配置,明确角色职责。
- 权限分配流程:权限分配页面采用可视化的树形结构展示,方便管理员直观地为角色分配和管理权限。对于页面元素权限,提供预览功能,确保权限分配的准确性。
- 企业微信用户映射流程:在映射企业微信用户与系统账户时,支持批量映射功能,通过上传Excel文件进行快速映射。映射关系建立后,系统自动验证映射用户的权限是否符合企业微信中的岗位信息,若存在权限异常,提示管理员进行调整。
- 权限变更记录流程:权限变更记录中,对于权限变更涉及的具体操作,以详细的操作步骤形式记录,同时记录变更操作的IP地址,方便审计人员进行追溯和审查。
-
列表自定义筛选模块
- 筛选字段选择流程:在筛选字段选择弹窗中,为每个筛选字段提供详细的描述信息。筛选字段可根据用户的使用频率进行排序,常用字段优先显示。
- 筛选条件设置流程:在设置筛选条件时,为每个条件提供示例说明。当用户设置多个筛选条件时,系统提供可视化的条件组合展示,支持用户对已设置的条件进行拖拽排序。
- 筛选结果展示流程:筛选结果展示页面增加筛选结果的统计信息。当筛选结果为空时,系统提供智能提示,并引导用户修改筛选条件。在筛选结果中,对于重点数据以特殊颜色或样式突出显示。
- 筛选条件保存与共享流程:用户保存筛选方案时,系统自动生成筛选方案的简要描述,用户可根据实际情况进行修改。共享筛选方案时,可设置访问权限,对于共享的筛选方案,其他用户可查看相关信息。
-
固定资产信息维护模块
- 字段自定义排序流程:在固定资产详情页面和列表页面,用户可通过鼠标拖拽的方式调整字段显示顺序。在拖拽过程中,系统实时预览调整效果,方便用户直观查看字段排列变化。若用户需要恢复系统默认的字段显示顺序,点击“重置排序”按钮即可。系统会记录每个用户的字段排序设置,当用户在不同设备上登录时,系统将按照用户之前的设置展示字段顺序。
- 选项字段值维护流程:当用户对选项字段值进行修改时,系统自动记录修改前后的所有选项值、修改人以及修改时间等详细信息,以便进行数据追溯和版本管理。修改操作提交后进入审批流程,审批人可在审批页面查看修改的具体内容和修改原因。若审批不通过,系统将自动把修改内容回滚到修改前的状态,并向修改人发送通知。在新增选项字段值时,用户可以设置该值的默认启用状态,同时还能定义该值与其他字段的关联关系,比如设置某个固定资产组别对应特定的使用状态范围,确保数据的逻辑性和一致性。
-
ERP对接功能模块
- ERP系统集成流程:在输入ERP系统连接信息并成功建立连接后,系统自动对ERP系统中的固定资产数据进行初步验证。验证内容包括检查数据的完整性,如是否存在资产编码、名称、采购日期等关键字段缺失的情况;同时验证数据格式的准确性,例如日期字段是否符合标准格式要求。对于不符合要求的数据,系统生成详细的错误报告,明确指出问题所在,协助企业在ERP系统中修正数据后再进行同步。在数据同步前,系统还会对ERP数据进行预处理,将数据中的特殊字符进行规范化处理,避免因字符问题导致数据同步错误。考虑到不同ERP系统的接口规范差异,系统开发通用的接口适配层。针对主流ERP系统(如SAP、Oracle ERP、用友、金蝶等),分别定制接口适配方案,确保能够顺利获取和传输固定资产数据。接口设计具备扩展性,预留可扩展的数据传输字段,方便对接新的ERP功能模块或满足企业特殊的数据对接需求,以便未来企业更换或升级ERP系统时,能够快速进行适配调整。
- 固定资产数据同步流程:系统支持增量同步功能,除了定时自动同步和手动触发同步外,在每次同步时,系统通过对比ERP系统和固定资产管理系统中资产数据的关键标识(如资产编码和修改时间戳),仅同步在ERP系统中新增、修改或删除的资产数据,从而减少数据传输量和同步时间,提高同步效率。对于增量同步的数据,系统进行单独的日志记录,详细说明每条数据的变更类型(新增、修改、删除)以及变更内容,方便用户追溯和审计。当ERP系统和固定资产管理系统中的资产数据发生冲突时(如同一资产在两个系统中的价值不同),系统提供多种冲突解决策略供用户选择。用户可以设置以ERP系统数据为准、以固定资产管理系统数据为准,或者选择手动干预解决。在手动干预模式下,系统将冲突数据以可视化的方式呈现,对比两个系统中数据的差异,方便用户进行分析和决策。解决冲突后,系统记录处理结果和处理人,确保数据的一致性和可追溯性。
- 数据范围管理流程:建立ERP系统与固定资产管理系统的字段映射关系是数据同步的关键。系统提供可视化的字段映射配置页面,用户可以直观地看到两个系统中固定资产相关字段的对应关系。对于常见的ERP系统,系统预设默认的字段映射模板,如ERP系统中的“资产编号”对应固定资产管理系统的“资产编码”,“购置日期”对应“采购日期”等。用户可以根据企业实际情况对预设映射进行调整和修改。在映射配置过程中,系统提供字段类型和数据格式的校验功能,确保映射的字段类型兼容,避免数据转换错误。若ERP系统中存在固定资产管理系统未记录的新增资产,系统在同步时自动将这些资产信息导入到固定资产管理系统中。导入过程中,根据预设的字段映射关系进行数据转换和填充。同时,系统对新增资产进行标记,提醒资产管理员进行必要的确认和补充信息操作,如核实资产的存放位置、保管人等信息。当ERP系统中的资产数据发生修改时,系统根据资产编码匹配固定资产管理系统中的对应资产,并根据字段映射关系更新相应的数据。对于关键数据的修改(如资产价值、使用状态),系统记录修改前和修改后的数值,生成变更记录,供用户查看和审计。若修改涉及到业务流程的变化(如资产所属部门变更影响到资产的使用和管理流程),系统自动触发相关的业务流程调整,如通知新的部门资产管理员接收资产信息。如果ERP系统中删除了某项固定资产,系统在同步时将该资产在固定资产管理系统中标记为“已删除(ERP同步删除)”状态,并保留一定期限的历史数据,以便后续查询和审计。在保留期限内,用户可以根据需要恢复被删除的资产数据。同时,系统检查该资产是否存在未完成的业务关联(如正在进行的盘点、维修记录等),若存在,则提示用户先处理相关业务,确保数据的完整性和业务的连贯性。
三、系统设计
3.3 数据库设计
- 数据表结构:系统采用关系型数据库管理系统(如MySQL、MariaDB或PgDB),以表格形式存储数据,通过外键关联实现数据之间的关系。详细的数据表结构如下:
- 用户表(tb_user)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|user_id|INT PRIMARY KEY AUTO_INCREMENT|用户ID,唯一标识每个用户|主键,自增长|
|username|VARCHAR(50)|用户名,用于登录系统|非空,唯一|
|password|VARCHAR(255)|用户密码,加密存储|非空|
|email|VARCHAR(100)|用户邮箱,用于找回密码等|非空,唯一|
|phone|VARCHAR(20)|用户手机号,用于接收通知|非空,唯一|
|role_id|INT|用户角色ID,关联角色表|非空,外键|
|department_id|INT|用户所属部门ID,关联部门表|非空,外键|
|is_locked|BOOLEAN|账户锁定状态,默认为false|非空| - 角色表(tb_role)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|role_id|INT PRIMARY KEY AUTO_INCREMENT|角色ID,唯一标识每个角色|主键,自增长|
|role_name|VARCHAR(50)|角色名称,如超级管理员、普通管理员等|非空,唯一|
|permissions|TEXT|角色拥有的权限,以JSON格式存储|非空| - 部门表(tb_department)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|department_id|INT PRIMARY KEY AUTO_INCREMENT|部门ID,唯一标识每个部门|主键,自增长|
|department_name|VARCHAR(100)|部门名称|非空,唯一|
|parent_id|INT|上级部门ID,若为顶级部门则为null|外键,可空|
|department_head|VARCHAR(50)|部门负责人姓名|非空|
|department_size|INT|部门人数|非空,默认为0| - 固定资产表(tb_fixed_asset)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|asset_id|INT PRIMARY KEY AUTO_INCREMENT|资产ID,唯一标识每个资产|主键,自增长|
|asset_name|VARCHAR(100)|资产名称|非空|
|asset_code|VARCHAR(50)|资产编码,唯一标识|非空,唯一|
|model|VARCHAR(50)|资产型号|非空|
|specification|VARCHAR(100)|资产规格|非空|
|brand|VARCHAR(50)|资产品牌|非空|
|keeper_id|INT|资产保管人ID,关联用户表|非空,外键|
|department_id|INT|资产所属部门ID,关联部门表|非空,外键|
|creator_id|INT|资产创建人ID,关联用户表|非空,外键|
|storage_location|VARCHAR(100)|资产存放位置|非空|
|usage_status|VARCHAR(20)|资产使用状态,如使用中、闲置中、停用中|非空|
|asset_group|VARCHAR(50)|资产组别,如生产设备、研发设备等|非空|
|purchase_date|DATE|资产采购日期|非空|
|purchase_price|DECIMAL(10,2)|资产采购价格|非空|
|supplier|VARCHAR(100)|资产供应商|非空|
|purchase_contract_number|VARCHAR(50)|资产采购合同编号|非空|
|is_deleted|BOOLEAN|资产删除状态,默认为false|非空| - 固定资产入库表(tb_asset_entry)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|entry_id|INT PRIMARY KEY AUTO_INCREMENT|入库记录ID,唯一标识每次入库操作|主键,自增长|
|asset_id|INT|资产ID,关联固定资产表|非空,外键|
|entry_date|DATE|入库日期|非空|
|entry_operator_id|INT|入库操作人员ID,关联用户表|非空,外键|
|is_verified|BOOLEAN|入库验收状态,默认为false|非空|
|verification_report|TEXT|入库验收报告,验收不合格时填写|可空| - 固定资产盘点表(tb_asset_inventory)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|inventory_id|INT PRIMARY KEY AUTO_INCREMENT|盘点记录ID,唯一标识每次盘点操作|主键,自增长|
|asset_id|INT|资产ID,关联固定资产表|非空,外键|
|inventory_date|DATE|盘点日期|非空|
|inventory_operator_id|INT|盘点操作人员ID,关联用户表|非空,外键|
|actual_quantity|INT|实际盘点数量|非空|
|quantity_difference|INT|数量差异,实际数量与系统记录数量差值|非空|
|difference_reason|VARCHAR(255)|差异原因,如盘盈、盘亏、资产损坏等|非空|
|attachment|TEXT|盘点差异证明照片路径,以JSON格式存储|可空| - 固定资产报废表(tb_asset_scrap)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|scrap_id|INT PRIMARY KEY AUTO_INCREMENT|报废记录ID,唯一标识每次报废操作|主键,自增长|
|asset_id|INT|资产ID,关联固定资产表|非空,外键|
|scrap_date|DATE|报废申请日期|非空|
|scrap_reason|VARCHAR(255)|报废原因,如损坏无法修复、技术淘汰等|非空|
|attachment|TEXT|报废证明文件路径,以JSON格式存储|可空|
|applicant_id|INT|报废申请人ID,关联用户表|非空,外键|
|approval_status|VARCHAR(20)|报废审批状态,如待审批、通过、拒绝、退回修改|非空|
|approver_id|INT|审批人ID,关联用户表|可空,外键|
|approval_date|DATE|审批日期|可空|
|rejection_reason|VARCHAR(255)|审批拒绝或退回原因|可空|
|scrap_disposal_method|VARCHAR(50)|报废处理方式,如出售、拆解、捐赠等|可空|
|disposal_date|DATE|报废处置日期|可空|
|disposal_income|DECIMAL(10,2)|报废处置收入|可空| - 人员表(tb_personnel)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|personnel_id|INT PRIMARY KEY AUTO_INCREMENT|人员ID,唯一标识每个人|主键,自增长|
|name|VARCHAR(50)|人员姓名|非空|
|gender|VARCHAR(10)|人员性别,取值为男或女|非空|
|id_number|VARCHAR(18)|人员身份证号|非空,唯一|
|contact_number|VARCHAR(20)|人员联系方式|非空|
|department_id|INT|人员所属部门ID,关联部门表|非空,外键|
|position|VARCHAR(50)|人员岗位|非空|
|entry_date|DATE|人员入职日期|非空|
|skills|TEXT|人员技能,以JSON格式存储|可空|
|is_departed|BOOLEAN|人员离职状态,默认为false|非空|
|departure_date|DATE|人员离职日期|可空| - 操作日志表(tb_operation_log)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|log_id|INT PRIMARY KEY AUTO_INCREMENT|日志ID,唯一标识每条操作日志|主键,自增长|
|user_id|INT|操作人员ID,关联用户表|非空,外键|
|operation_module|VARCHAR(50)|操作模块,如账户管理、固定资产入库等|非空|
|operation_type|VARCHAR(50)|操作类型,如创建、编辑、删除等|非空|
|operation_time|DATETIME|操作时间|非空|
|operation_details|TEXT|操作详细内容,涉及数据修改时记录修改前后数据|非空| - 系统日志表(tb_system_log)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|log_id|INT PRIMARY KEY AUTO_INCREMENT|日志ID,唯一标识每条系统日志|主键,自增长|
|log_time|DATETIME|日志记录时间|非空|
|log_type|VARCHAR(50)|日志类型,如系统启动、关闭、错误等|非空|
|log_message|TEXT|日志详细信息,如错误信息、系统资源使用情况等|非空| - 审计日志表(tb_audit_log)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|log_id|INT PRIMARY KEY AUTO_INCREMENT|日志ID,唯一标识每条审计日志|主键,自增长|
|user_id|INT|操作主体ID,关联用户表|非空,外键|
|operation_type|VARCHAR(50)|操作类型,如权限变更、重要数据删除等|非空|
|operation_time|DATETIME|操作时间|非空|
|operation_reason|VARCHAR(255)|操作原因|非空|
|operation_details|TEXT|操作详细内容|非空| - 数据字典表(tb_data_dictionary)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|dictionary_id|INT PRIMARY KEY AUTO_INCREMENT|字典项ID,唯一标识每个字典项|主键,自增长|
|dictionary_name|VARCHAR(50)|字典项名称,如固定资产类别、使用状态等|非空,唯一|
|dictionary_code|VARCHAR(50)|字典项代码,用于系统内部标识|非空,唯一|
|description|VARCHAR(255)|字典项描述|可空|
|is_active|BOOLEAN|字典项是否启用,默认为true|非空| - 数据字典值表(tb_data_dictionary_value)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|value_id|INT PRIMARY KEY AUTO_INCREMENT|字典值ID,唯一标识每个字典值|主键,自增长|
|dictionary_id|INT|所属字典项ID,关联数据字典表|非空,外键|
|value_name|VARCHAR(50)|字典值名称,如生产设备、使用中|非空|
|value_code|VARCHAR(50)|字典值代码,用于系统内部标识|非空,唯一|
|is_default|BOOLEAN|是否为默认值,默认为false|非空| - 通知表(tb_notification)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|notification_id|INT PRIMARY KEY AUTO_INCREMENT|通知ID,唯一标识每条通知|主键,自增长|
|notification_type|VARCHAR(50)|通知类型,如系统公告、审批结果通知、提醒通知等|非空|
|notification_title|VARCHAR(100)|通知标题|非空|
|notification_content|TEXT|通知内容|非空|
|publication_date|DATETIME|通知发布时间|非空|
|sender_id|INT|通知发送人ID,关联用户表|非空,外键|
|receiver_type|VARCHAR(20)|通知接收对象类型,如全体用户、特定部门、特定角色等|非空|
|receiver_value|TEXT|通知接收对象值,如部门ID、角色ID列表,以JSON格式存储|非空|
|attachment|TEXT|通知附件路径,以JSON格式存储|可空|
|is_read|BOOLEAN|通知阅读状态,默认为false|非空| - 系统配置表(tb_system_config)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|config_id|INT PRIMARY KEY AUTO_INCREMENT|配置ID,唯一标识每个配置项|主键,自增长|
|config_name|VARCHAR(50)|配置项名称,如每页显示记录数、日期时间格式等|非空,唯一|
|config_value|VARCHAR(255)|配置项值|非空|
|config_type|VARCHAR(20)|配置项类型,如全局参数、系统接口配置、系统安全配置等|非空| - 企业微信配置表(tb_wechat_config)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|config_id|INT PRIMARY KEY AUTO_INCREMENT|配置ID,唯一标识每个配置项|主键,自增长|
|app_id|VARCHAR(50)|企业微信应用ID|非空,唯一|
|app_secret|VARCHAR(255)|企业微信应用密钥|非空|
|callback_url|VARCHAR(255)|企业微信回调地址|非空|
|sync_interval|INT|企业微信同步时间间隔,单位为小时|非空|
|sync_status|VARCHAR(20)|企业微信同步状态,如成功、失败、进行中|非空| - ERP配置表(tb_erp_config)
|字段名|数据类型|描述|约束|
|—|—|—|—|
|config_id|INT PRIMARY KEY AUTO_INCREMENT|配置ID,唯一标识每个配置项|主键,自增长|
|erp_system|VARCHAR(50)|ERP系统名称,如SAP、Oracle ERP、用友、金蝶等|非空|
|server_address|VARCHAR(100)|ERP服务器地址|非空|
|port|INT|ERP服务器端口号|非空|
|username|VARCHAR(50)|ERP系统用户名|非空|
|password|VARCHAR(255)|ERP系统密码|非空|
|database_name|VARCHAR(50)|ERP系统数据库名称(若需要)|可空|
|sync_interval|INT|ERP数据同步时间间隔,单位为天|非空|
|sync_status|VARCHAR(20)|ERP数据同步状态,如成功、失败、进行中|非空|
|field_mapping|TEXT|ERP系统字段与本系统字段映射关系,以JSON格式存储|非空|
- 用户表(tb_user)
- 视图设计
- 部门资产统计视图(view_department_asset_statistics)
CREATE VIEW view_department_asset_statistics AS
SELECT
d.department_id,
d.department_name,
COUNT(a.asset_id) AS asset_count,
SUM(a.purchase_price) AS total_asset_value,
COUNT(CASE WHEN a.usage_status = '使用中' THEN 1 END) AS in_use_asset_count,
COUNT(CASE WHEN a.usage_status = '闲置中' THEN 1 END) AS idle_asset_count,
COUNT(CASE WHEN a.usage_status = '停用中' THEN 1 END) AS stopped_asset_count,
COUNT(CASE WHEN a.asset_group = '生产设备' THEN 1 END) AS production_equipment_count,
COUNT(CASE WHEN a.asset_group = '研发设备' THEN 1 END) AS r_d_equipment_count,
COUNT(CASE WHEN a.asset_group = '电子电气设备' THEN 1 END) AS electronic_equipment_count,
COUNT(CASE WHEN a.asset_group = '办公家具及其他' THEN 1 END) AS office_furniture_count,
COUNT(CASE WHEN a.asset_group = '营销设备' THEN 1 END) AS marketing_equipment_count,
COUNT(CASE WHEN a.asset_group = '运输工具' THEN 1 END) AS transportation_equipment_count
FROM
tb_department d
LEFT JOIN
tb_fixed_asset a ON d.department_id = a.department_id
GROUP BY
d.department_id, d.department_name;
该视图通过将部门表(tb_department)和固定资产表(tb_fixed_asset)进行关联,以部门为维度,统计各部门的资产数量、总价值,以及按使用状态和资产组别分类的资产数量。这有助于企业快速了解各部门的资产分布情况,为资源分配和管理决策提供数据支持 。例如,企业可以通过该视图查看某个部门的生产设备数量是否满足业务需求,或者分析闲置资产较多的部门,以便进行资产调配。
- 人员名下资产视图(view_personnel_assets)
CREATE VIEW view_personnel_assets AS
SELECT
p.personnel_id,
p.name AS personnel_name,
p.department_id,
a.asset_id,
a.asset_name,
a.asset_code,
a.model,
a.specification,
a.brand,
a.usage_status,
a.storage_location,
a.asset_group,
a.purchase_date,
a.purchase_price
FROM
tb_personnel p
LEFT JOIN
tb_fixed_asset a ON p.personnel_id = a.keeper_id;
此视图将人员表(tb_personnel)和固定资产表(tb_fixed_asset)通过保管人ID进行关联,展示了人员名下的固定资产信息。通过该视图,企业可以方便地查看每个人员所保管的资产明细,包括资产的基本信息、使用状态、存放位置等。这对于资产的日常管理、盘点以及责任追溯具有重要意义。比如,在进行资产盘点时,可依据该视图快速获取每个人员名下的资产清单,提高盘点效率;在资产出现问题时,也能通过视图快速确定资产的保管人。
- 存储过程与函数
- 创建固定资产入库记录存储过程(sp_create_asset_entry)
DELIMITER //
CREATE PROCEDURE sp_create_asset_entry(
IN p_asset_id INT,
IN p_entry_date DATE,
IN p_entry_operator_id INT
)
BEGIN
INSERT INTO tb_asset_entry (asset_id, entry_date, entry_operator_id, is_verified)
VALUES (p_asset_id, p_entry_date, p_entry_operator_id, FALSE);
-- 记录操作日志
INSERT INTO tb_operation_log (user_id, operation_module, operation_type, operation_time, operation_details)
VALUES (p_entry_operator_id, '固定资产入库', '创建', NOW(), CONCAT('创建资产ID为 ', p_asset_id, ' 的入库记录'));
END //
DELIMITER ;
该存储过程用于在固定资产入库时,向tb_asset_entry
表插入入库记录,并在tb_operation_log
表记录操作日志。调用时需传入资产ID、入库日期和入库操作人员ID。这能确保入库操作有详细记录,方便后续查询和审计,比如可追溯资产入库的具体时间和操作人员信息。
- 处理固定资产报废申请存储过程(sp_process_asset_scrap_application)
DELIMITER //
CREATE PROCEDURE sp_process_asset_scrap_application(
IN p_scrap_id INT,
IN p_approval_status VARCHAR(20),
IN p_approver_id INT,
IN p_approval_date DATE,
IN p_rejection_reason VARCHAR(255),
IN p_scrap_disposal_method VARCHAR(50),
IN p_disposal_date DATE,
IN p_disposal_income DECIMAL(10, 2)
)
BEGIN
DECLARE v_asset_id INT;
-- 获取资产ID
SELECT asset_id INTO v_asset_id FROM tb_asset_scrap WHERE scrap_id = p_scrap_id;
UPDATE tb_asset_scrap
SET approval_status = p_approval_status,
approver_id = p_approver_id,
approval_date = p_approval_date,
rejection_reason = p_rejection_reason,
scrap_disposal_method = p_scrap_disposal_method,
disposal_date = p_disposal_date,
disposal_income = p_disposal_income
WHERE scrap_id = p_scrap_id;
IF p_approval_status = '通过' THEN
UPDATE tb_fixed_asset
SET is_deleted = TRUE
WHERE asset_id = v_asset_id;
END IF;
-- 记录操作日志
INSERT INTO tb_operation_log (user_id, operation_module, operation_type, operation_time, operation_details)
VALUES (p_approver_id, '固定资产报废', '审批', NOW(), CONCAT('处理资产ID为 ', v_asset_id, ' 的报废申请,审批结果:', p_approval_status));
END //
DELIMITER ;
此存储过程用于处理固定资产报废申请,根据审批状态更新tb_asset_scrap
表的相关信息。若审批通过,将tb_fixed_asset
表中对应资产标记为已删除,并在tb_operation_log
表记录操作日志。调用时需传入报废记录ID、审批状态等多个参数,为报废审批流程提供了完整的记录和数据更新机制,方便审计和跟踪报废资产的处理情况。
- 计算部门资产总价值函数(fn_calculate_department_asset_value)
DELIMITER //
CREATE FUNCTION fn_calculate_department_asset_value(p_department_id INT)
RETURNS DECIMAL(10, 2)
DETERMINISTIC
BEGIN
DECLARE total_value DECIMAL(10, 2);
SELECT SUM(purchase_price) INTO total_value
FROM tb_fixed_asset
WHERE department_id = p_department_id AND is_deleted = FALSE;
RETURN total_value;
END //
DELIMITER ;
该函数用于计算指定部门的固定资产总价值。通过查询tb_fixed_asset
表,对指定部门且未删除的资产采购价格求和并返回。在企业进行成本核算、预算编制或资产价值评估时,可利用此函数快速获取部门资产价值数据,为财务决策提供支持。
- 获取人员名下资产数量函数(fn_get_personnel_asset_count)
DELIMITER //
CREATE FUNCTION fn_get_personnel_asset_count(p_personnel_id INT)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE asset_count INT;
SELECT COUNT(*) INTO asset_count
FROM tb_fixed_asset
WHERE keeper_id = p_personnel_id AND is_deleted = FALSE;
RETURN asset_count;
END //
DELIMITER ;
此函数用于获取指定人员名下的固定资产数量。通过查询tb_fixed_asset
表,统计由指定人员保管且未删除的资产数量并返回。在分配资产盘点任务、评估人员资产保管工作量等场景下,该函数能提供准确的数据依据。