发票布奖资料0525.docx
- 文档编号:5314943
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:12
- 大小:975.62KB
发票布奖资料0525.docx
《发票布奖资料0525.docx》由会员分享,可在线阅读,更多相关《发票布奖资料0525.docx(12页珍藏版)》请在冰豆网上搜索。
发票布奖资料0525
项目简介
第一步:
我们做的项目是:
XX市地方税务局刮开式有奖发票布奖印制软件.开发该软件的目的是:
税务局鼓励纳税人索取发票,防止逃税。
该项目整体思路是:
税局对要实施刮奖的发票种类设定相应的发票布奖池,每个布奖池可根据税局设定的发票布奖数量,奖项等级、数量等信息进行随机布
奖,并对布奖信息加密。
由征管系统下达发票印制计划,发票布奖系统根据发票印制计划,由发票种类查找对应的奖池,与奖池中的布奖信息相结合,
采用座位号的方式对每一种发票进行布奖,并生成发票印制文件发送到印刷厂进行印刷。
印刷厂的印刷控制软件可以实行对发票印制文件进行的解密,监控。
税务局在收到印刷厂发送的监控信息后核对发票印制情况、
并进行纠错、补损等操作。
该系统还具备兑奖、领奖登记的功能。
第二步:
我们采用了:
struts+jdbc+oracle8.17+weblogic8.1的构架方式(mvc模式)。
1.采用了des加密技术,用于用户登录密码的加密。
1、采用了DH非对称加密技术。
主要用于奖项的加密。
2:
跟印刷厂的数据传输采用了数字签名技术。
2、大批量数据的处理。
第三步:
主要的模块:
1:
答大的模块:
不要详细介绍:
系统管理--奖池管理---布奖管理---印制管理----兑奖管理
你们的项目是否很简单?
答:
这个项目是个产品。
项目不大,但是技术含量高,业务逻辑很复杂。
我们的发票布奖可以跨奖池,跨批次,跨段号。
(完毕)
什么是跨奖池跨批次跨段号?
跨奖池:
一种发票可以布奖在多个奖池中。
一个奖池也可以给多种发票布奖。
跨批次:
列如:
该种发票的一个批次布50000万张。
但是这次征管系统下达的印制计划是30000万张,此时还有2000万张不能
印刷。
那么只能在下个批次中接着上一个批次的印刷。
跨段号:
发票每隔10000张。
号码必须跨100位。
如:
印刷50000张:
000001----1000010010----2000020010---30000…….
该项目遇到什么样的困难?
1:
因为数据量比较大,用到了循环并且用到了大对象处理。
List中存放有奖无奖数据对象,内存出现了溢出程序终止运行。
解决方案:
在每一种发票布奖完成后,调用垃圾回收器:
system.gc()清除内存,再循环下一种发票种类。
2:
因为用到了jdbc的预处理prepareStatement对象,在布奖后根据发票印制计划生产发票印制文件时,由于业务逻辑复杂,频繁操作数据库,也出现了weblogic报内存溢出错误,程序终止。
解决方案:
在weblogic中设置jdbc连接池的缓存(StatementCacheSize:
)。
并且调整虚拟机内存的大小。
默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:
java.lang.OutOfMemoryError。
DH非对称加密算法:
乙方向甲方发送数据:
数字签名
该系统的运行环境:
1:
数据库:
用oracle9i部署在小型机上:
和税务局的税控系统公用一个数据库,只是用户不同,表空间不同。
2:
开发用tomcat服务器,部署时是在weblogic8.2上面。
因为是大数据量操作。
测试一般用5000---50000条数据
真实运行情况:
一个批次要部署1000—5000万张发票。
3:
该系统是税务局内部使用,不对公网发布。
布奖都要公证处的人在场做公证的。
只有兑奖才对公网开放
4:
去印刷厂的印刷数据是写文件的,采用了非对称加密技术DH加密算法。
用户登陆管理采用了des加密技术。
5:
项目接口科室:
信息中心和征收管理科。
6:
生成的发票文件名称:
奖池id+布奖批次号+发票代码.dat文件中的奖项名称一栏是采用了DH加密算法的。
本系统的功能是负责布奖和产生发票印制文件,发票印制是给印刷厂负责印刷。
印刷厂有接口程序:
根据密钥进行解密
并且自动印刷。
并在奖项一栏填充颜色使用户看不见,必须刮掉上面的一层才能看到中没有中奖。
熟悉以下税务局的组织机构
布奖的奖项表
奖项信息表
奖池信息表:
布奖信息表:
发票种类表:
奖池和发票种类对照表:
(发票种类入池表)
领奖表:
无奖发票信息表
有奖发票信息表:
布奖中生成按钮完成的操作流程:
每种发票布奖的有奖无奖数据放到一个大的数据对象中:
list如:
datavo1-----datavo6
Datavo1
000000000001
餐饮发票
000000000001
谢谢你的参与
Datavo2
000000000001
餐饮发票
000000000002
二等奖
Datavo3
000000000001
餐饮发票
000000000003
一等奖
Datavo4
000000000001
餐饮发票
000000000004
谢谢你的参与
Datavo5
000000000001
餐饮发票
000000000005
谢谢你的参与
Datavo6
000000000001
餐饮发票
000000000006
谢谢你的参与
列转行写文件的内容如下:
此时的匹数是3
按生成按纽要做的事情:
1:
获取该条数据的开始座位号和结束座位号:
作为循环次数:
生成的发票号码就等于座位号(转12位数字)
2:
根据该批次布奖的奖项从开始座位号和结束座位号中:
产生随机数。
有几个一等奖就产生几个一等奖的随机数
其他奖项依次类推。
3:
将有奖的发票信息和无奖的发票信息分别存放到有浆的list1和无奖的list2.
将有奖和无奖的数据分别插入到有奖和无奖数据表中。
4:
在内存中把有奖和无奖的list存放到一个list中:
list1.addAll(list2)并且打乱顺序.Collections.shuffle(list)
5:
有奖和无奖的list合并后,完成上图中的写文件。
产生随机数的代码:
见工程:
jdbcTestProject中的Tools类
//得到一个处于iMaxPass,iMinPass之间的一个长度为:
length的随机数:
publicstaticStringgetRandom(intiMaxPass,intiMinPass,intlength){
intpwd=(int)(Math.random()*(iMaxPass-iMinPass+1))+iMinPass;
returngetCode(String.valueOf(pwd),length);
}
//凑齐位数
privatestaticStringgetCode(Stringvalue,intLength){
for(inti=value.length();i value="0"+value; } returnvalue; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 发票 资料 0525
![提示](https://static.bdocx.com/images/bang_tan.gif)