c++实现共享文件夹_创新大赛作品 | PDF图纸自动压缩的实现

由于船舶、产品的纸质图纸扫描文件较大,又需要在总部集中存储,分社在审阅时下载较为缓慢。为了解决这一问题,我们引入了由福昕的LuraTech图纸压缩软件。

图纸压缩功能简介

由于该软件为windows版,且仅提供针对本机指定目录的自动压缩功能,我们构想了几种实现方式:

b695ab29-7e1a-eb11-8da9-e4434bdf6706.png

经详细论证,我们发现:方案一中 ,由于ECI文件管理机制限制,所有文件必须使用API接口进行上传和读取,而压缩软件无法定制开发接口模块,方案一不可行。方案二中,由于每份任务单可能包含大量图纸,手工上传压缩太过费时费力,且操作较为繁琐,方案二不可行。故最终确定使用方案三。使用方案三时,需在图纸扫描系统中添加压缩任务管理,避免一次性传入太多图纸,同时实现空闲时历史图纸的自动上传压缩。以下分为任务调度和单次压缩任务的实现两部分进行详细描述。

图纸压缩的任务调度

任务调度模块的实现分为如下几个部分:

1)创建基于ServletContextListener的任务监听,并使用Timer计时器设置每分钟执行一次单次任务。代码如下:

b795ab29-7e1a-eb11-8da9-e4434bdf6706.png

2)基于TimerTask编制单次任务的执行内容:

b995ab29-7e1a-eb11-8da9-e4434bdf6706.png

单次压缩任务的实现

对于单次压缩的实现,我们操作逻辑如下:

》》在一台windows2000服务器上安装了LuraTech软件,并使其定时扫描监听指定目录的文件传入,新文件传入后自动按设定好的压缩比执行压缩,并将成功和失败的文件分别放入不同目录;

》》在该服务器架设ftp服务,由部署在其他服务器的java应用在每次任务启动时传入文件,传入后到成功和失败两个文件夹检索之前传入文件的执行结果;

》》对于从成功文件夹找到的文件,下载保存并标记为压缩成功,对于从失败文件夹找到的文件,执行删除并标记为压缩失败。

针对以上逻辑,我们的压缩service实现三个业务方法:

1)compressDraw():从任务表中取出最后添加的10个任务(每次传入图纸时自动插入新的任务),并执行图纸的下载和压缩服务器ftp上传。

2)uploadMini():检索压缩服务器成功和失败目录的文件,根据文件名称匹配历史任务,并进行相应标记。对于历史任务超过10小时未检索到结果的,也标记为失败。

3)autoCreatTask():如本次任务调度启动时,任务表中20分钟内没有未完成的任务,则自动从图纸表中抽取最后导入的10份未压缩历史图纸插入任务表。

结语

本功能有机整合了PDF压缩软件及任务调度和管理模块,实现了PDF图纸文件的自动压缩和历史文件自动处理,为图纸压缩管理带来了极大便利。

作品申报人:商雷博、张洋、吕萌

END ☞ 往期回顾: 信息中心成功举办第一届创新大赛 创新大赛作品 | 信息中心运维监控平台 创新大赛作品 | 自定义高级搜索的实现 创新大赛作品 | 区块链技术在数据共享平台的应用 创新大赛作品 | 移动应用创新“全家桶” 创新大赛作品 | 信息中心党建标准化规范化管理创新大赛作品 | CCS对外业务交互接口平台的研究与应用创新大赛作品 | 微信、论坛、自媒体多元化宣传渠道建设的探索

ba95ab29-7e1a-eb11-8da9-e4434bdf6706.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值