Tms中信系统培训相关文档

来自ling
跳转至: 导航搜索

目录

常用链接

Maven 第三方jar 文件:Maven Thirdparty.rar 可以直接覆盖在本地maven repository,也可以参考nuxus迁移

系统框架及代码结构介绍

系统框架介绍

增值税管理系统在德勤基础开发平台上完成相关业务开发.

开发平台体系结构

Pl.base.common.architecture.PNG

核心功能应用架构采用多层软件体系,通过这样的分层设计,可以实现分散关注、松散耦合、逻辑复用、标准定义的良好软件架构。具体的分层架构如图所示:
  • 展现层
展现层提供用户与系统交互界面,负责接收用户的输入信息并反馈相应的系统处理结果。动态页面这里采用了Dorado来进行控制和Ajax交互,并通过其自定义标签来获取数据进而对页面进行展现;
  • 服务外观层
服务外观层负责完成业务服务层与展现层间数据的传递,把业务服务层返回的数据转换成展现层可识别的数据类型,针对不同类型的展现层,都会有与之对应服务外观层。同时其起到隔离Servlet API依赖的作用;
  • 业务服务层
业务服务层定义了可用业务功能的集合,它封装了应用的业务逻辑、事务控制,通过组合不同业务领域组件方法来实现各种具体业务意义的业务处理功能;
  • 数据访问层
数据访问层提供数据访问的接口,基于Spring的O-R Mapping机制,通过使用数据库访问接口(JPA)及其O-R Mapping设置,把从数据库中获得的数据封装成对应的Repository仓储对象进行数据存储操作,以支持业务服务层的使用;
  • 数据提供层
数据提供层将选用通用的、成熟的ORACLE或DB2数据库来实现。为了提升系统数据访问能力,系统采用连接池技术实现层基层与数据层的交互;
  • 服务访问层
服务访问层提供了两种服务访问接口:实时服务访问接口和批量服务访问接口。业务服务层的一些业务逻辑需要通过调用该层提供的接口,来完成业务操作;
  • 服务提供层
服务提供层为服务访问层接口提供了统一的调用实现。为了提升系统对外部接口访问、控制和管理能力,本系统建立一个统一的接口管理平台对所有报文消息进行统一管理;

开发平台技术选型

maven

  • 主要用于管理jar包依赖和项目模块拆分以及模块拆分后的模块依赖.通过maven管理模块间依赖可以画出应用间的依赖关系图,以帮助架构师理清理关系,防止重复依赖.

spring

  • Spring框架主要用于与其他技术(struts,hibernate等)进行整合,利用Spring框架管理系统的各个组件(Action,Service,DAO),将应用程序中的Bean组件实现低耦合关联.最终可以提高系统扩展和维护性.
  • spring介绍

hibernate

  • 提供跨数据库支持,面向对象编程

应用架构

  • 增值税管理系统是德勤税务核心业务服务中的一部分,与德勤基础开发平台架构的关系如下:

Architecture.business.common.png

  • 增值税业务在整体应用的关系如下:

Architecture.business.zx.png

    • 主数据管理维护
在主数据管理维护中,主要是按照增值税管理要求,需进行客户、供应商、纳税主体等相关信息的管理
    • 销项发票管理
按照增值税发票管理相关的要求,已办理税务登记的单位和个人需按照管理要求做好增值税发票的管理工作,发票管理流程涉及发票购领、发票填开、发票保管等多个环节,针对每个环节会涉及不同的管理要求。例如,发票购领,一般分为提出购票申请、提供有关证件、持簿购买发票等环节,分环节开展购领相关工作;发票填开需要根据客户具体要求、客户资质、相关法律规定等开具增值税专用发票或者普通发票;发票保管需按照管理要求做好空白发票、发票存根和发票登记簿的管理工作。根据相关的管理要求,结合大型企业业务现状
    • 进项发票管理
进项发票管理需具备发票的登记、发票的签收、发票认证(防伪税控认证子系统)结果导入、发票认证结果匹配、发票退回、发票丢失、红字发票、进项税发票的风险监控及预警等主要功能,实现对进项发票的统一管理。

物理架构

  • 中信物理架构 应用采用was集群,共有一个管理节点,三个应用节点.数据库采用一主一备.具体的实施如下:更多参考was基础知识.
  • Architecture.physical.zx.png

代码模块,包结构等 (概要设计部分)

项目模块

项目使用maven管理项目间的依赖
增值税主要模块如下

Tms.vat.component.png

项目列表如下:
  • deloitte.tms.parent 项目顶层目录,定义的项目的公共jar包依赖,项目的编译级别,打包方式等内容
    • deloitte.tms.pl项目的基础模块顶层目录
      • deloitte.tms.pl.security.web 供web模块使用的系统权限基础模块
      • deloitte.tms.pl.attachment.config 附件管理模块配置
      • deloitte.tms.pl.attachment.core 附件管理基础模块
      • deloitte.tms.pl.autoproject 自动生成项目代码模块
      • deloitte.tms.pl.cache 缓存模块
      • deloitte.tms.pl.cache.config 缓存配置模块
      • deloitte.tms.pl.config 平台基础配置模块
      • deloitte.tms.pl.core 平台核心基础模块
      • deloitte.tms.pl.genjar 平台打包模块
      • deloitte.tms.pl.job 任务调度基础模块
      • deloitte.tms.pl.message 消息模块
      • deloitte.tms.pl.workflow 工作流基础模块
      • deloitte.tms.pl.security 权限基础模块
      • deloitte.tms.pl.security.config 权限配置模块
      • deloitte.tms.pl.web web模块基础
      • deloitte.tms.pl.d7 Dorado7基础模块
    • deloitte.tms.vat 增值税管理模块
      • deloitte.tms.vat.core 增值税核心模块
      • deloitte.tms.vat.web 增值税web层模块
      • deloitte.tms.vat.inf 增值税航信相关接口模块
        • deloitte.tms.vat.inf.aisino 增值税航信相关接口模块
          • deloitte.tms.vat.inf.aisino.core 增值税航信相关接口核心接口
          • deloitte.tms.vat.inf.aisino.bj 增值税航信北京webservice相关接口实现
      • deloitte.tms.vat.d7 增值税Dorado实现的web端模块
      • deloitte.tms.vat.kernel 增值税Dorado实现的web端模块对应的核心模块
      • deloitte.tms.vat.webservice 增值税外供webservice接口模块

包结构

增值税系统主要模块结构

Tms.vat.package.png

  1. Pl模块为系统基础架构模块,包含字典,权限,通知,工作流,任务调度,日志等系统基本功能,更多参考相关的包结构设计
  2. Vat模块为增值税业务模块,包含销项端业务,交易认定,进项端业务,纳税申报,税务核算等业务.
    1. salesinvoice 销项端发票管理
    2. purchinvoice 进项发票管理
  3. Base模块是所有业务的基础数据模块,包括了税务设置,主数据等业务模块
    1. masterdata 主数据管理
    2. taxsetting 税务相关设置
增值税系统主要包结构
基础设置包和核心类

Tms.base.package.png

发票流转核心类

Tms.vat.invoiceflow.package.png

销项发票开具包和核心类

Tms.vat.invoiceprint.package.png

销项发票开具包和核心类简单关系梳理
  • 销项发票主体流程如下:

Tms.vat.invoiceprint.sequence.png

  • 销项发票主体流程和相关类关系

Tms.vat.invoiceprint.classflow.png

接口设计说明(马老师ppt)

定时任务、异常处理

定时任务功能介绍

  1. 平台基础模块中的任务调度模块,以spring quartz为基础搭建,主要负责定时任务调度,定时批量数据处理
  2. 支持页面端任务配置,任务启动与暂停,支持任务调试,节假日设定,调度服务监控
  3. 页面如下:

Pl.job.view.mainpage.PNG

定时任务总体设计

Pl.job.class.diagram.png

定时任务的使用

  • 需要使用定时调度任务机制,需要继承BaseJob或直接实现org.quartz.Job, JobTest这2个接口.同时将这个类注册为一个spring的bean
@Component("preTrxFileInfJob")
public class PreTrxFileInfJob implements Job, JobTest {
	//JobTest 用于任务测试,开发时使用
	@Override
	public void execute() {
		JobContext log=new VatFileJobContext(null);
		log.setGroupId(VATLogDef.INF);
		log.setRelationId(VATLogDef.INF_TRX_PRE);
		log.setProcessId(System.currentTimeMillis()+"");
		processBusiness(log);
	}
	//JobTest 用于任务正式执行,自动调度时使用.如果不需要使用参数,调用execute()即可
	@Override
	public void execute(JobExecutionContext context) throws JobExecutionException {
		JobContext log=new VatFileJobContext(context);
		log.setGroupId(VATLogDef.INF);
		log.setRelationId(VATLogDef.INF_TRX_PRE);
		log.setProcessId(System.currentTimeMillis()+"");
		processBusiness(log);
	}
}
  • 在定时任务管理界面,新建一个任务,并设置使用的BeanId属性为上面定义的spring bean id,然后设置任务执行的频率(参考后面定时任务cron表达式设置).

Pl.job.view.new1.PNG

  • 中信增值税中的定时调度任务定义如下,更多请参考接口部分内容

Tms.vat.salesinvoice.job.png

定时任务cron表达式设置

  • 选择需要修改的任务,点击修改按钮

Pl.job.view.edit1.PNG

  • 点击cron表达式右边的...进入cron表达式设置界面

Pl.job.view.edit2.PNG

  • 设置需要执行的频率

Pl.job.view.edit3.PNG

  • 点击生成cron表达式按钮,并点击解析表达式查看执行计划是否满足需要

Pl.job.view.edit4.PNG

  • 点击确定确定cron表达式
  • 点击确定保存任务配置修改

Pl.job.view.edit3.PNG

定时任务的异常处理(监控与错误处理)

  • 从界面查看任务执行异常
  1. 如果任务执行历史是失败状态,表示任务调度出现了异常.
  2. 接口数据有异常,这里并不一定会是失败状态.具体是否需要人工干预,需要由监控规则决定.

Pl.job.view.fail.PNG

  • 从日志和监控查看异常明细
  1. 接口任务的日志都按规则存储到/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server11/vatinf/yyyyMMdd.log(yyyyMMdd为执行日期)
  2. 如果日志中出现关键字INF_ERRO;loglevel:4(erro日志级别);loglevel:5(fail日志级别)表示接口数据有异常,需要人工干预

系统环境介绍与搭建

系统环境说明

  • maven仓库与本地仓库
  • eclipse开发文件
  • 项目编译级别

  • 系统的发布流程如下

Publish flow.PNG

  • 开发环境 9080 9081

Architecture.physical.zx.devconfig.png

  • uat测试环境 9080 9081

Architecture.physical.zx.uatconfig.png

  • 正式环境

Architecture.physical.zx.detail.png

开发环境搭建

eclipse和源代码环境搭建

  • 请确认下面三个内容您已经获取:德勤提供的eclipse集成环境(eclipse_4.3.rar),本地maven环境(maven2.rar),svn地址
  • 解压eclipse_4.3.rar,设置eclipse.ini中jdk路径地址.
    • Eclipse.eclipse.ini.png
  • 解压maven2.rar
  • 打开eclipse,新建一个eclipse工作区间,并配置工作区间的以下内容
    • 去掉所有validation,(window-->preference-->validation-->disable all)
    • Eclipse.validation.png
    • 设置workspace的编码为utf-8(window-->preference-->general-->workspace-->utf-8
    • Eclipse.utf-8.png
    • 设置maven的目录为上面maven2.rar解压后的目录(window-->preference-->maven-->user settings)
    • Eclipse.mavenpath.png
  • 使用eclipse将源代码checkout,项目名称可以为deloitte.tms.parent
  • 使用eclipse的导入maven项目工具将maven项目都导入进来
  1. import-->existing maven projects-->选择上一步svn checkout目录
  2. Eclipse.import1.png
  3. 选择所有项目并选择finish
  4. Eclipse.import2.png
  5. 导入后maven会组建项目依赖并编译项目,最后的结果如下:
  6. Eclipse.result.PNG
  • 以下错误可以不管

Vat1 erro1.PNG

项目调试

  • 在deloitte.tms.vat.web项目上右键-->debug as-->run jetty
    • Eclipse.debugweb.png
  • 修改调试的端口和context
    • Eclipse.debugweb.config1.png
    • Eclipse.debugweb.config2.png

项目编译与打包

获取本次发布的增量列表
  • 在svn上打好本次发布的tag
  • 打开类DoDiff
  • 设置setUp()方法中last值为上一次发布svn版本地址,current为本次发布的svn版本tag地址,设置userName为你得svn用户名,password为您的svn密码
  1. Eclipse.svn.differlist.png
  • 运行testSvn()的单元测试得到增量文件列表diff_list.txt
    • Eclipse.svn.differlist2.png
  • 修改diff_list.txt,得到实际要发布的增量列表
编译项目
  • 回到本次需要发布的branches或tag 并保证代码为最新代码回到head.PNG
  • 在deloitte.tms.parent项目上右键 运行maven install 编译最新项目
    • Eclipse.maven.install.PNG
  • 运行DoDiff类中testJava单元测试,此方法会根据diff_list.txt 得到最终发布文件目录结构.文件在deloitte.tms.pl.genjar/result
    • Eclipse.svn.testjava.png
  • 确认最终发布文件正确性
  • 将result文件夹下的deloitte.tms.vat.web.war压缩为deloitte.tms.vat.web.war.zip

航信接口的调试

  • deloitte.tms.vat.inf.aisino.bj项目下的InvoiceIssueInfTest已经包含了所有和航信接口的单元测试
  • 在setUp()方法中设置webservice的地址和打印终端地址,然后调用响应的单元测试方法即可
    • Aisino.junit.setup.PNG

系统数据库设计说明及表结构介绍

数据库设计说明

数据库主要分以下几个模块

  1. 基础平台 项目框架支持,包含用户,权限,机构,流水号,定时任务等
  2. 基础设置 业务需要的基本数据,包含纳税实体,打印终端等
  3. 销项管理 销项发票部分,包含发票流转,发票开具打印
  4. 进项管理 进项部分

数据模型介绍--基础平台

数据模型介绍--基础设置

数据模型介绍--销项管理

  • 发票流转

Tms.vat.invoiceflow.db.physical.png

  • 销项发票开具

Tms.vat.invoiceprint..db.physical.png

数据模型介绍--进项管理

核心业务代码设计与实现

编码规范

jsp页面维护介绍

  • 功能与页面地址
  • 页面地址与对应jsp文件
  • 页面事件与后台java

Dorado页面维护介绍

  • 功能与页面地址
  • 页面地址与对应view.xml文件
  • 页面事件与后台java

基础平台

基础设置

销项管理

进项管理

核心开发处内部培训

系统监控与运维沟通

系统安装文档/生产环境安装配置

  • 新环境安装
  • 生产环境相关配置,包含was,数据库,各个property配置和作用,包含参数作用

系统监控与日志

系统数据备份策略

系统应急处理

  • 航信数据同步
  • 接口日志监控报警
  • 系统日志监控报警
  • was启动报错
  • 定时任务任务解锁
  • 主备切换
  • 手工新增机构后数据权限不生效
  • 与航信接口问题快速定位
  1. 假设航信打印webservice地址为:http://211.94.145.68:8020/TaxPBserver/kpservices/KpWebService 打印终端ip和端口为:192.168.33.103 8888
  2. 确定航信打印终端能通过开票软件开票
  3. 确定德勤应用服务器能telnet航信打印webservice服务器,命令为:telnet 211.94.145.68 8020 能访问:http://211.94.145.68:8020/TaxPBserver/kpservices/KpWebService?wsdl
  4. 确定航信webservice服务器能telnet打印终端,命令为:telnet 192.168.33.103 8888
  5. 确定打印终端能telnet webservice服务器telnet 211.94.145.68 8020
  6. 使用单元测试的testServerConnect方法测试,并根据异常定位问题

参考文档

  • 中信银行增值税管理系统接口说明书V1.4-20160419.xlsx
  • 培训安排.xlsx
  • 文件:营改增培训.ppt
  • 中信银行增值税管理系统与金税系统接口不一致的应急方案-V2.0.docx
  • 提交文档清单 - 增值税管理系统.xlsx
  • 发票票据状态控制-20160510.xlsx