ERP系统中要管理用户为单据上传的一些附件,比如增值税发票,退货发票,ROHS检测报告,这时,需要设计一个通用的附件管理模块来管理用户上传的附件。
数据表设计
IF OBJECT_ID ('dbo.Attachment') IS NOT NULL DROP TABLE dbo.Attachment GO CREATE TABLE dbo.Attachment ( Index INT NOT NULL, MasterTable NVARCHAR (50) DEFAULT ('') NOT NULL, MasterKey DECIMAL (10) DEFAULT ((0)) NOT NULL, FileType NVARCHAR (10) DEFAULT ('') NOT NULL, FilePath NVARCHAR (250) NULL, CreatedDate DATETIME NULL, CreatedBy NVARCHAR (10) NULL, RevisedDate DATETIME NULL, RevisedBy NVARCHAR (10) NULL, Description NVARCHAR (60) NULL, KeySegment1 NVARCHAR (30) NULL, KeySegment2 NVARCHAR (30) NULL, KeySegment3 NVARCHAR (30) NULL, KeySegment4 NVARCHAR (30) NULL, KeySegment5 NVARCHAR (30) NULL, Size DECIMAL (18) NULL, File IMAGE NULL, UploadedBy NVARCHAR (10) NULL, UploadedDate DATETIME NULL, Md5Hash NVARCHAR (32) NULL, CONSTRAINT PK_Attachment PRIMARY KEY (Index,MasterTable,MasterKey) ) GO
5个Key Segment是用来查找附件用的,相当于文章的关键字,用来标记此附件的大致内容。这里不提供附件内容的实际搜索功能,而只对设置的Key Segment进行查找与比较。我的另一个项目Data Solution对搜索存储于SQL Server中的文件字节流进行搜索,进行了探索和尝试。
4个必须要有的字段,Created By, Created Date, Revised By ,Revised Date用来记录创建和修改附件的用户,对IT审计有作用。ERP系统中的日记帐表基本上都有这4个字段供分析审计。
FileType 是自定义的可上传的文件类型,比如传真文件tif,图片文件jpg/bmp/gif,Office 办公文件Word/Excel/PPT
还有跨平台的通用文件格式PDF。
注意工具栏最后一个按钮上面有个数字8,表示此客户有附带8个附件文件,点击该按钮,弹出附件管理窗口
工具栏中有新增,删除按钮,可对附件数据进行操作。
当附件的数量相当多的时候,还需要写一个通用的附件浏览工具,以查看附件内容。
执行功能SAMFAB或SQAPTR,打开附件浏览器程序。
找到客户编号001,可以从图中看到,它有8个附件,在这里以附件类型进行了分组呈现。
双击一个附件图标文件,File Explorer可为您打开它的内容,进行在线浏览。如果想把附件保存到本地,可以选中附件,点工具栏中的Export按钮,弹出另存为对话框,为您保存附件文档。
左边的树是从一个配置文件中读取的,它保存数据表的分类以供加载到不同的模块组别中。
读取这个文件的方式是Linq to xml技术,自从掌握了Linq技术之后,简单的几句话完成复杂的读取和写入功能,代码简洁,容易维护。
string sql = Kingston.SystemAdminstration.Properties.Resources.LibraryExplorer; byte[] array = Encoding.ASCII.GetBytes(sql); MemoryStream stream = new MemoryStream(array); XDocument doc = XDocument.Load(stream); string library = doc.Root.Name.ToString(); treeView.BeginUpdate(); treeView.Nodes.Clear(); UltraTreeNode root=new UltraTreeNode(library,library); root.Tag = "Library"; root.LeftImages.Add(imgList.Images[0]); foreach(XElement node in doc.Root.Elements()) { UltraTreeNode module = new UltraTreeNode(node.Name.ToString(), node.Name.ToString()); module.Tag = "Module"; module.LeftImages.Add(imgList.Images[1]); foreach (XElement table in node.Elements()) { UltraTreeNode tableNode = new UltraTreeNode(table.Attribute("Name").Value, table.Attribute("Name").Value); tableNode.Tag = "Table"; tableNode.LeftImages.Add(imgList.Images[2]); module.Nodes.Add(tableNode); } root.Nodes.Add(module); } treeView.Nodes.Add(root); treeView.EndUpdate();
以资源文件嵌入到程序集中,读取时它是个字符串,XDocument可接受一个文件名,或是一个字节流,所以开头几句我把它转化为流来供Linq解析。
在系统设置中,有一个参数是控制附件的保存方式。系统是保存附件的路径(File Path),还是保存附件的内容(字节流)。
如图所示,Control Checklist的最后一项设定 Attachment Save into Database,即把附件的字节流保存到数据(Image)字段中,此选项会影响数据库大小,但也有好的移植性。
以文件保存在本地为例,它只是对文件进行一个简单的Copy动作,代码如下所示
AttachmentEntity attachment = item.Tag as AttachmentEntity; SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.Filter = "Excel 97-2003|*.xls|Microsoft Word|*.doc|Adobe PDF|*.pdf|All File|*.*"; saveDialog.FileName = attachment.FilePath; if (saveDialog.ShowDialog() == DialogResult.OK) { string fileName = saveDialog.FileName; if (!string.IsNullOrWhiteSpace(attachment.FilePath)) { File.Copy(attachment.FilePath, saveDialog.FileName); } }
VB或DELPHI程序的习惯,会拖动一个SaveFileDialog 组件(component)到界面中,然后在这里直接引用。我倾向于在这里直接创建一个SaveFileDialog ,用完了让它Dispose。use it and burn it,电影里面讲到人与人的雇佣关系时,常用这个句子,用完了就抛弃。
相关推荐
管理查询:提供一步到位的实时管理查询功能,直接实时反映所有资金结余情况,费用发生情况,商品库存情况,应收应付情况、员工借款还款情况,经营利润情况、资产负债情况,用户不需要编制任何会计凭证便可获得管理...
通用报销管理系统需求分析说明书主要目的是明确系统的设计与开发目标,为后续的设计和实施阶段提供指导。这份文档由纪凯拟制,并在2007年3月12日获得批准,其内容涵盖了系统的整体设计和具体功能规定。 1.1 编写...
功能矩阵系统后台集成了主流的通用功能,如:登录验证、系统配置、操作日志管理、角色权限、职位职称、数据权限、功能菜单、模块管理、关键字管理、附件管理、文件上传、数据备份/还原、基础数据、审批流程、员工...
net的强大功能实现复杂的需求。 可插拔的体系架构,允许企业将BPM体统和企业现有业务系统整合到一起,比如:利用企业现有的弹出式消息系统发送BPM通知消息。 四、有效保障流程管理工作持续、深入开展 可靠、稳定、...
华创信息管理平台是一款开放式的管理平台,能管理各种数据和资料,实现信息互通共享,从而提高管理质量与效率。 华创信息管理平台功能与特点 ●传统软件弊端 企业实施信息化,传统方式有 2 种,一是购买成品软件...
"会计电算化用友ERP―U8软件账务处理系统特点及数据处理流程...会计电算化用友ERP-U8软件账务处理系统是一个功能强大、综合性强的电算化会计软件系统,它能够满足企业的会计电算化需求,提高企业的财务管理水平和效率。
9. **集成与自动化**:现代企业可能会选择将传真功能与现有的业务流程和系统(如CRM或ERP)集成,实现自动化的传真发送和接收,提高效率。 10. **移动设备上的传真**:也有应用程序允许用户通过智能手机或平板电脑...
OA(Office Automation,办公自动化)系统是现代企业信息化建设的重要组成部分,主要用于提升工作效率,实现组织内部的信息共享与协同工作。在选择OA系统时,需要考虑多个方面,包括技术架构、访问方式、产品设计...
ERP-EBS系统中的会计凭证是企业财务管理和会计核算的核心元素,它是记录企业经济活动,确保会计信息准确性和合法性的基础。会计凭证分为多种类型,包括原始凭证和记账凭证。 原始凭证是会计流程的第一步,它反映了...
帝隆云专注于协同办公,提供通用的办公管理功能,并预设与其他业务系统的接口。蓝凌更注重知识管理,其LKS系统作为知识管理解决方案的基础。金蝶的OA系统偏向ERP类型,涵盖广泛但可能存在功能堆砌的问题。开思的系统...
同时,BOM还需要与CAD、CAPP、PDM、MRPⅡ、ERP等系统集成,以实现整个产品生命周期的管理。 本文对BOM的详细讲解,旨在帮助读者更好地理解BOM在静态数据中的作用,并结合实际情况进行管理和应用。
8. **接口集成**:可能具备与其他办公软件或系统(如CRM、ERP)的接口,实现信息的无缝对接和流转。 尽管没有具体的标签来进一步说明程序特性,但从“信息办公”这个大类可以推测,SSx分类信息程序可能是一个通用的...
### ORACLE EBS 系统主数据管理(J) ...综上所述,Oracle EBS 的客户数据管理功能强大且灵活,通过这些细致的功能设计,企业可以有效地管理其庞大的客户数据库,确保数据的准确性和一致性,从而提高业务效率和服务质量。
Compiere是一款开源的企业资源规划(ERP)和客户关系管理(CRM)系统,适用于中小型企业。本指南将详细解析Compiere 3.10版本的中文...在实践中不断探索和学习,用户将能充分利用Compiere的功能,实现业务的高效管理。
综上所述,自动邮件发送系统涉及的内容广泛,从邮件内容的生成、队列管理、SMTP协议到安全与合规,每一个环节都需要精心设计和实现。而提供的文件名可能暗示了这个系统专注于邮件发送的某一方面,如流量监控或性能...
最后,PLC还能与其他计算机系统集成,例如制造执行系统(MES)或企业资源计划(ERP),实现信息化管理和工业4.0概念下的智能化生产。 综上所述,PLC应用于组合机床中,不仅能提升机床控制的性能,还能为实现自动化、...
〔3〕其他应用软件 如辅助财务管理、大型工程设计、建筑装潢设计、服装裁剪、网络服务工具以与各种 各样的管理信息系统等应用软件. 3.嵌入式系统 概念:嵌入式系统是把计算机的硬件与软件嵌入到各种应用产品中的...
- **按扩展模块计量**:对于某些特定功能或模块,如财务报告、供应链管理等,则采用了按扩展模块进行计量的方式。 - **按业务线或行业组合计量**:针对特定行业的解决方案(如石油天然气、保险业等),SAP提供了按...
她可以用于所有的Web应用程序,例如网站管理后台、CMS、CRM、ERP、OA这类的系统和移动端Api。 YiShaAdmin 版本 .NET Core 版本 是否支持 3.1(当前) 3.1 支持 2.2 2.2 支持(Released) 内置功能 员工管理:员工是...