公司的ERP采用的是NC6.5系统,财务每月都要输出对账单给到客户及供应商,之前的做法是在NC系统中查询所有客户及供应商的对账单的原始数据,然后财务手工输出没个客户及供应商的对账单,因此为了减轻财务的重复工作量,我们信息部门经过调研决定采用python+django的方式给财务批量输出对账单
搭建所使用的环境:
windows 2012 server IIS7.0+wfastcgi
python 3.8
django3.2
oracle 11g
bootstrap 3
项目中所使用的第三方库:xlsxwriter (用于生成excel文件)
开发工具:pycharm
先来一张简单的最终效果图(稍显简陋,但功能已满足业务需求)
1、创建项目及基础配置
使用pycharm或者使用命令行创建一个django 项目,这里我使用pycharm
打开pycharm,点击“file”--“New Project”
设置项目,项目文件的保持的目录、添加虚拟环境
添加好项目之后,在pycharm中打开“terminal”,执行命令
python manage.py startapp reportdzd
来新建一个APP
接下来就是配置数据库的信息了
打开settings.py ,按以下信息进行配置
DATABASES = {
'default': {
#数据库引擎
'ENGINE': 'django.db.backends.oracle',
#数据库名
'NAME': 'orcl',
#用户名
'USER':'NCTEST',
#密码
'PASSWORD':'NCTEST',
#数据库服务器IP或名称
'HOST':'192.168.0.252',
#端口号
'PORT':'1521'
}
}
配置中文环境及时区
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
配置服务器
IIS7.0部署django详细步骤可参考以下链接
https://www.cnblogs.com/djangocn/p/10227006.html
2、本地开发
安装依赖库,
在pycharm中安装依赖库
也可以在“Terminal”中输入命令
pip install 库名[==版本号]
#安装Xlsxwriter库
pip install xlsxwriter == 1.4
3、新建文件sql_text.py,创建拼接SQL语句的方法get_sql(start_date,end_date,pk_org),
该方法主要是从给定的三个参数,然后根据给定的参数拼接对账单的查询SQL语句,对账单数据的开始时间start_date、结束时间 end_date及业务单元pk_org三个参数 , 部分代码如下
def get_sql(start_date,end_date,pk_org):
sql_str='''
SELECT DISTINCT substr(ic_saleout_b.dbizdate, 1, 10) dbizdate,so_saleorder.vbillcode vbillcode,
ht_soquickcreation_h.vbillcode sovbillcode, bd_customer.name khname,
ic_saleout_h.vbillcode vbillcode1, so_saleinvoice.vbillcode fpvbillcode,
ht_soquickcreation_h.dbilldate dbilldate1, so_saleinvoice_b.crowno crowno1,
bd_material.code code1, bd_material.name wname, bd_material.materialtype materialtype,bd_measdoc.name dname,
so_saleinvoice_b.nnum nnum,so_s