QAD 实现数据批量导入(WEB版) BaseCls
定义base类和接口
/*------------------------------------------------------------------------
File : Iwebcimode
Purpose :
Syntax :
Description :
Author(s) :
Created : Wed Apr 17 16:00:05 CST 2019
Notes :
----------------------------------------------------------------------*/
USING Progress.Lang.*.
INTERFACE spxcls.Iwebcimode:
DEFINE PUBLIC PROPERTY wbtitle AS CHARACTER NO-UNDO /*HTML 标题*/
GET.
SET.
DEFINE PUBLIC PROPERTY mytheme AS CHARACTER NO-UNDO /*用户KENDO UI主题*/
GET.
SET.
DEFINE PUBLIC PROPERTY kdjsrc AS CHARACTER NO-UNDO /*引用JS的路径 用优化用*/
GET.
SET.
DEFINE PUBLIC PROPERTY paction AS CHARACTER NO-UNDO /*POST目标程序 一般即入口程序*/
GET.
SET.
DEFINE PUBLIC PROPERTY csvtplate AS CHARACTER NO-UNDO /*CSV模板名称*/
GET.
SET.
DEFINE PUBLIC PROPERTY docpath AS CHARACTER NO-UNDO /*模板文件保存路径*/
GET.
DEFINE PUBLIC PROPERTY domain AS CHARACTER NO-UNDO /*域*/
GET.
SET.
DEFINE PUBLIC PROPERTY uid AS CHARACTER NO-UNDO /*userid*/
GET.
SET.
DEFINE PUBLIC PROPERTY username AS CHARACTER NO-UNDO /*username*/
GET.
SET.
DEFINE PUBLIC PROPERTY ulang AS CHARACTER NO-UNDO /*语言 language*/
GET.
SET.
DEFINE PUBLIC PROPERTY umailaddr AS CHARACTER NO-UNDO /*邮箱地址*/
GET.
SET.
DEFINE PUBLIC PROPERTY myjs1 AS CHARACTER NO-UNDO /*JS片段1*/
GET.
SET.
DEFINE PUBLIC PROPERTY myjs2 AS CHARACTER NO-UNDO /*JS片段2*/
GET.
SET.
DEFINE PUBLIC PROPERTY myjs3 AS CHARACTER NO-UNDO /*JS片段3*/
GET.
SET.
DEFINE PUBLIC PROPERTY myjs4 AS CHARACTER NO-UNDO /*JS片段4*/
GET.
SET.
DEFINE PUBLIC PROPERTY kdcolumns AS LONGCHAR NO-UNDO /*KENDO UI的列定义片段*/
GET.
SET.
DEFINE PUBLIC PROPERTY cfilename AS CHARACTER NO-UNDO /*上传文件原始名称路径*/
GET.
SET.
DEFINE PUBLIC PROPERTY cfile_dest AS CHARACTER NO-UNDO /*上传文件名称路径*/
GET.
SET.
DEFINE PUBLIC PROPERTY htmltb AS LONGCHAR NO-UNDO /*主数据HTML片段*/
GET.
SET.
DEFINE PUBLIC PROPERTY preview AS LOGICAL NO-UNDO /*可预览再更新*/
GET.
SET.
DEFINE PUBLIC PROPERTY isupdate AS LOGICAL NO-UNDO /*确认更新*/
GET.
SET.
DEFINE PUBLIC PROPERTY choicesync AS LOGICAL NO-UNDO /*可选择异步同步*/
GET.
SET.
DEFINE PUBLIC PROPERTY isasync AS LOGICAL NO-UNDO /*是否异步*/
GET.
SET.
DEFINE PUBLIC PROPERTY showdateformat AS LOGICAL NO-UNDO /*是否显示日期格式*/
GET.
SET.
DEFINE PUBLIC PROPERTY dateformat AS CHARACTER NO-UNDO
GET.
DEFINE PUBLIC PROPERTY istransm AS LOGICAL NO-UNDO /*是否整体导入为事务 YES-一条出错则整次导入回滚*/
GET.
SET.
DEFINE PUBLIC PROPERTY fshortlog AS LOGICAL NO-UNDO /*错误截取第一段 YES 全部-NO*/
GET.
SET.
DEFINE PUBLIC PROPERTY retainlog AS LOGICAL NO-UNDO /*是否保留导入日志 临时文件夹*/
GET.
SET.
DEFINE PUBLIC PROPERTY retainxxqkf AS LOGICAL NO-UNDO /*是否保留临时中间表 */
GET.
SET.
DEFINE PUBLIC PROPERTY paramslist AS CHARACTER NO-UNDO /*参数字符串 保留使用*/
GET.
SET.
DEFINE PUBLIC PROPERTY defaultdateformat AS CHARACTER NO-UNDO
GET.
SET.
DEFINE PUBLIC PROPERTY dfcimexec AS CHARACTER NO-UNDO /*默认执行导入的程序 用于检验原始菜单权限*/
GET. /*ADDED 2021-10-12*/
DEFINE PUBLIC PROPERTY cimtypeid AS CHARACTER NO-UNDO /*FOR LOW CODE CIMLOAD USE*/
GET. /*ADDED 2022-09-27*/
DEFINE PUBLIC PROPERTY checkerr AS LOGICAL NO-UNDO /*check后发现了errmsg*/
GET.
DEFINE PUBLIC PROPERTY csvmsg1 AS CHARACTER NO-UNDO
GET.
DEFINE PUBLIC PROPERTY csvmsg2 AS CHARACTER NO-UNDO
GET.
METHOD PUBLIC VOID gencsvtplate(INPUT csvname AS CHARACTER). /*#STEP0 生成csv导入模板*/
METHOD PUBLIC VOID mainblock(). /*主方法 包含以下注释的方法*/
//METHOD PUBLIC VOID gencolumns(). /*生成kdcolumns 列框架 #STEP0 类实例化 显示页面*/
//METHOD PUBLIC VOID getdata(INPUT filepath AS CHARACTER). /*#STEP1 取模板里的数据*/
//METHOD PUBLIC VOID checkdata(). /*#STEP2 检查数据*/
//METHOD PUBLIC VOID genxxqkf(). /*#STEP3 生成CIMLOAD临时表*/
//METHOD PUBLIC LOGICAL execload(INPUT exec AS CHARACTER). /*#STEP4 执行cimload*/
//METHOD PUBLIC VOID getresult(INPUT tphd AS HANDLE,INPUT xxcimtype AS CHARACTER). /*#STEP5 取导入结果*/
//METHOD PUBLIC VOID genhtmltb(). /*生成htmltb 列内容 #STEP6 显示导入结果*/
//METHOD PUBLIC VOID emptytb(). /*清空临时表 #STEP7*/
END INTERFACE.
/*------------------------------------------------------------------------
File : Iwebcimodej
Purpose : for aspx/jsp/ajax webcimload
Syntax :
Description :
Author(s) :
Created : Mon Mar 23 09:56:40 CST 2020
Notes :
----------------------------------------------------------------------*/
USING Progress.Lang.*.
USING spxcls.*.
INTERFACE spxcls.Iwebcimodej INHERITS Iwebcimode:
DEFINE PUBLIC PROPERTY xlstplate AS CHARACTER NO-UNDO /*EXCEL模板名称*/
GET.
SET.
METHOD PUBLIC CHARACTER gencolist().
METHOD PUBLIC CHARACTER gencoltype().
METHOD PUBLIC INTEGER getdataj(INPUT fphd AS HANDLE,OUTPUT omsg AS CHARACTER). /*#取JSON数据*/
METHOD PUBLIC HANDLE getdfhd().
END INTERFACE.
几种实现方式 按代码量从少到多排列:
0.继承webcimbase 实现Iwebcimode 实现全部由配置产生 零代码 现有实现类 webcimlcmodel 带tpstrval字段
1.继承webcimbase 实现Iwebcimode 单一临时表句柄赋给tptbhd 全部按默认设置 mainblock 里调用 vmainblock 实现 vcheckdata() vgenxxqkf() 例子 webcimwostat $$ 最简单逻辑的应用
若是多临时表 读取和显示的为不同临时表时 则可以插入变换tptbhd逻辑 重写gencolumns() genhtmltb()等部分方法 例子 webcimfcfsd
此种webcimcls除可以使用csv上传之外 还可以选择 JSP读EXCEL上传/JS读EXCEL AJAX上传 实现
2.继承webcimbase 实现Iwebcimode 单一临时表句柄赋给tptbhd 全部按默认设置 实现 mainblock checkdata() genxxqkf() 例子 webcimpil 复杂度正常的应用 *** 可以简化成1方式 ***
3.继承webcimbase 实现Iwebcimode 直接传单一临时表句柄 全部按默认设置 实现 mainblock checkdata() genxxqkf() 例子 webcimbkemc 复杂度正常的应用 *** 可以简化成1方式 ***
4.继承webcimbase 实现Iwebcimode 多临时表/有数组字段 重写 gencolumns() genhtmltb() getdata() getresult() 例子 webcimffd(预测导入) $$ 比较复杂的应用 定制
5.继承webcimbase 实现Iwebcimode 多临时表 重写 gencolumns() genhtmltb() getdata() getresult() backend 程序也单独写 例子 webcimcons(客户寄售使用量导入) 最复杂的应用 定制
额外功能:
1.如果 class里含有数据库 trigger 则设置xxcimtype 为class名称 并设置空参数 构造方法 供后台导入程序时调用 例子 webcomfadd(固定资产新增导入)
2.如果要支持中文描述 名称之类导入 设置dfcodepage = 'utf-8' 并设置成excel导入方式
3.非cimload模式 空参数vmainblock() => vgenxxqkf() 可以 #1 直接写数据库更新语句 #2 调用Progress Appserver #3 调用QXtend Inbound 例子 webcimeprdrafts

浙公网安备 33010602011771号