123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516 |
- $PBExportHeader$uo_transmsg.sru
- forward
- global type uo_transmsg from nonvisualobject
- end type
- end forward
- global type uo_transmsg from nonvisualobject autoinstantiate
- end type
- type variables
- Long uo_msgid
- end variables
- forward prototypes
- public function integer f_trycreate_sys_admsg (ref string arg_msg)
- public function integer f_redeal_admsg (long arg_msgid, string arg_redealemp, ref string arg_msg, boolean ifcommit)
- public function integer f_del_admsg (long arg_msgid, string arg_del_emp, ref string arg_msg, boolean ifcommit)
- public function integer f_deal_admsg (long arg_msgid, long arg_sentdtint, long arg_empid, ref string arg_msg, boolean ifcommit)
- public function integer f_redeal_admsg (long arg_msgid, long arg_sentdtint, long arg_empid, ref string arg_msg, boolean ifcommit)
- public function long f_create_admsg (long arg_sendempid, string arg_sendemp, string arg_objdpm, string arg_msgtitle, string arg_s_msg, ref string arg_msg, long arg_scid, string arg_billcode, boolean ifcommit)
- public function integer f_save_fj (long arg_msgid, string arg_fjname, blob arg_blob, decimal arg_filesize, integer arg_filetype, ref string arg_msg, boolean arg_ifcommit)
- public function integer f_down_fj (long arg_fjid, string arg_fjname, ref blob arg_fjdata, ref string arg_msg)
- end prototypes
- public function integer f_trycreate_sys_admsg (ref string arg_msg);
- /////f_trycreate_Sys_admsg(arg_msg)
- long cnt,rslt=1
- string createsql_string,t_str
- createsql_string="CREATE TABLE Sys_admsg (msgid int not null PRIMARY KEY, senddt datetime NOT NULL DEFAULT (getdate()) , sendemp char (10) NOT NULL DEFAULT ('') ,dealflag tinyint NOT NULL DEFAULT (0) ,dealdt datetime NULL,dealemp char(10) NOT NULL DEFAULT (''),redealdt datetime NULL,objdpm char(30) NOT NULL DEFAULT ('') ,s_msg varchar(254) NOT NULL DEFAULT ('') ,rel_code varchar (50) NOT NULL DEFAULT ('') )"
- t_str="select count(*) from Sys_admsg"
- Execute immediate :t_str;
- if sqlca.sqlcode<>0 then //不存在该表,建立
- Execute immediate :createsql_string ;
-
- if sqlca.sqlcode<>0 then
- arg_msg='建立表Sys_admsg失败>>'+sqlca.sqlerrtext
- rollback ;
- rslt=0
- goto ext
- else
-
- commit ;
-
- end if
- end if
- ///
- ext:
- return rslt
- end function
- public function integer f_redeal_admsg (long arg_msgid, string arg_redealemp, ref string arg_msg, boolean ifcommit);////f_redeal_admsg
- ////状态为已处理:1,才可以设为完成
- ////
- ////
- long rslt=1,dealflag
- //string sendemp=''
- //if arg_msgid<=0 then
- // arg_msg='非有效消息ID'
- // rslt=0
- // goto ext
- //end if
- //
- // SELECT sys_admsg.dealflag ,sendemp
- // INTO :dealflag ,:sendemp
- // FROM sys_admsg
- // WHERE sys_admsg.msgid =:arg_msgid ;
- //
- //if sqlca.sqlcode<>0 then
- // arg_msg='查询消息ID失败>>'+sqlca.sqlerrtext
- // rslt=0
- // goto ext
- //end if
- //
- //if dealflag<>1 then
- // arg_msg='非[已处理]下不可以设为[完成]。'
- // rslt=0
- // goto ext
- //end if
- //if trim(arg_redealemp)<>trim(sendemp) and not sys_power_issuper then
- // arg_msg='非消息发起人或非超级用户不可以设为[完成]。'
- // rslt=0
- // goto ext
- //end if
- //
- // update sys_admsg
- // set dealflag=9,redealdt=getdate()
- // WHERE sys_admsg.msgid =:arg_msgid ;
- //
- //if sqlca.sqlcode<>0 then
- // arg_msg='更新消息状态(完成)失败>>'+sqlca.sqlerrtext
- // rollback;
- // rslt=0
- // goto ext
- //end if
- //
- //ext:
- //if ifCOMMIT and rslt=1 then
- // commit;
- //end if
- return rslt
- end function
- public function integer f_del_admsg (long arg_msgid, string arg_del_emp, ref string arg_msg, boolean ifcommit);//f_del_admsg(arg_msgid,arg_del_emp,arg_msg,ifcommit)
- //状态为完成:9,才可以删除
- //
- //
- Long rslt = 1,cnt = 0
- String sendemp
- IF arg_msgid <= 0 THEN
- arg_msg = '非有效消息ID'
- rslt = 0
- GOTO ext
- END IF
- SELECT count(*)
- INTO :cnt
-
- FROM sys_admsgmx
- Where sys_admsgmx.msgid = :arg_msgid AND sys_admsgmx.dealflag = 1 ;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询消息ID失败>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- arg_msg = '消息已有人确认不可以删除消息。'
- rslt = 0
- GOTO ext
- END IF
- DELETE FROM sys_admsg
- Where sys_admsg.msgid = :arg_msgid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '删除消息失败>>'+sqlca.SQLErrText
- ROLLBACK;
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF ifCOMMIT AND rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer f_deal_admsg (long arg_msgid, long arg_sentdtint, long arg_empid, ref string arg_msg, boolean ifcommit);//f_deal_admsg
- //状态为待处理:0,才可以设为已处理
- //
- //
- long rslt=1,dealflag
- if arg_msgid<=0 then
- arg_msg='非有效消息ID'
- rslt=0
- goto ext
- end if
- SELECT sys_admsgmx.dealflag
- INTO :dealflag
- FROM sys_admsgmx
- WHERE sys_admsgmx.msgid =:arg_msgid
- and sys_admsgmx.empid =:arg_empid
- and sys_admsgmx.senddtint =:arg_sentdtint;
- if sqlca.sqlcode<>0 then
- arg_msg='查询消息ID失败>>'+sqlca.sqlerrtext
- rslt=0
- goto ext
- end if
- if dealflag<>0 then
- arg_msg='非[待处理]下不可以设为[已处理]。'
- rslt=0
- goto ext
- end if
- update sys_admsgmx
- set dealflag=1,dealdt=getdate()
- WHERE sys_admsgmx.msgid =:arg_msgid
- and sys_admsgmx.empid =:arg_empid
- and sys_admsgmx.senddtint =:arg_sentdtint;
- if sqlca.sqlcode<>0 then
- arg_msg='更新消息状态(为已处理)失败>>'+sqlca.sqlerrtext
- rollback;
- rslt=0
- goto ext
- end if
- ext:
- if ifCOMMIT and rslt=1 then
- commit;
- end if
- return rslt
- end function
- public function integer f_redeal_admsg (long arg_msgid, long arg_sentdtint, long arg_empid, ref string arg_msg, boolean ifcommit);//f_deal_admsg
- //状态为待处理:0,才可以设为已处理
- //
- //
- long rslt=1,dealflag
- if arg_msgid<=0 then
- arg_msg='非有效消息ID'
- rslt=0
- goto ext
- end if
- SELECT sys_admsgmx.dealflag
- INTO :dealflag
- FROM sys_admsgmx
- WHERE sys_admsgmx.msgid =:arg_msgid
- and sys_admsgmx.empid =:arg_empid
- and sys_admsgmx.senddtint =:arg_sentdtint;
- if sqlca.sqlcode<>0 then
- arg_msg='查询消息ID失败>>'+sqlca.sqlerrtext
- rslt=0
- goto ext
- end if
- if dealflag<>0 then
- arg_msg='非[待处理]下不可以设为[已处理]。'
- rslt=0
- goto ext
- end if
- update sys_admsgmx
- set dealflag=1,dealdt=getdate()
- WHERE sys_admsgmx.msgid =:arg_msgid
- and sys_admsgmx.empid =:arg_empid
- and sys_admsgmx.senddtint =:arg_sentdtint;
- if sqlca.sqlcode<>0 then
- arg_msg='更新消息状态(为已处理)失败>>'+sqlca.sqlerrtext
- rollback;
- rslt=0
- goto ext
- end if
- ext:
- if ifCOMMIT and rslt=1 then
- commit;
- end if
- return rslt
- end function
- public function long f_create_admsg (long arg_sendempid, string arg_sendemp, string arg_objdpm, string arg_msgtitle, string arg_s_msg, ref string arg_msg, long arg_scid, string arg_billcode, boolean ifcommit);//f_create_admsg(arg_sendempid,arg_sendemp,arg_objdpm,arg_msgtitle,arg_s_msg,arg_msg,ifcommit)
- //新建
- //
- //
- Long rslt = 1
- Long msgid,ls_newid
- Long msgempid[]
- Long i,senddtint
- DateTime server_datetime
- uo_usergroup uo_ugp
- Boolean if_exist_super = FALSE
- Long arr_mxt
- uo_ugp = CREATE uo_usergroup
- SELECT Top 1 getdate() INTO :server_datetime FROM u_user ;
- //取得系统时间,借用操作员表
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败,日期 "
- GOTO ext
- END IF
- senddtint = Long(String(server_datetime,'yyyymmddhhmmss'))
- IF IsNull(arg_objdpm) THEN arg_objdpm = ''
- IF IsNull(arg_msgtitle) THEN arg_msgtitle = ''
- IF IsNull(arg_s_msg) THEN arg_s_msg = ''
- IF Trim(arg_objdpm) = '' THEN
- arG_MSG = '缺乏消息的发送对象'
- rslt = 0
- GOTO ext
- END IF
- uo_ugp.f_rst_msgemp_arr(sys_scid,arg_objdpm,msgempid[])
- IF UpperBound(msgempid) = 0 THEN
- arG_MSG = '缺乏消息的发送对象'
- rslt = 0
- GOTO ext
- ELSE
- IF arg_sendempid <> 0 THEN
- arr_mxt = UpperBound(msgempid)
- FOR i = 1 TO arr_mxt
- IF msgempid[i] = 0 THEN
- if_exist_super = TRUE
- EXIT
- END IF
- NEXT
- IF NOT if_exist_super THEN
- arr_mxt++
- msgempid[arr_mxt] = 0
- END IF
- END IF
- END IF
- IF Trim(arg_msgtitle) = '' THEN
- arG_MSG = '缺乏消息标题'
- rslt = 0
- GOTO ext
- END IF
- IF Trim(arg_s_msg) = '' THEN
- arG_MSG = '缺乏消息内容'
- rslt = 0
- GOTO ext
- END IF
- rslt = f_trycreate_Sys_admsg(arG_MSG)
- IF rslt = 0 THEN
- GOTO ext
- END IF
- ls_newid = f_sys_scidentity(sys_scid,"sys_admsg","msgid",arG_MSG,false,sqlca)
- IF ls_newid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
- msgid = ls_newid
- INSERT INTO sys_admsg
- ( msgid,
- senddt,
- sendemp,
- sendempid,
- objdpm,
- s_msgtitle,
- s_msg,
- scid,
- billcode)
- VALUES ( :msgid,
- getdate(),
- :arg_sendemp,
- :arg_sendempid,
- :arg_objdpm,
- :arg_msgtitle,
- :arg_s_msg,
- :arg_scid,
- :arg_billcode) ;
- IF sqlca.SQLCode <> 0 THEN
- arG_MSG = '新建消息失败>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- FOR i = 1 TO UpperBound(msgempid)
- INSERT INTO sys_admsgmx
- ( msgid,
- empid,
- s_msgtitle,
- dealflag,
- s_msg,
- senddtint,
- scid,
- billcode)
- VALUES ( :msgid,
- :msgempid[i],
- :arg_msgtitle,
- 0,
- :arg_s_msg,
- :senddtint,
- :arg_scid,
- :arg_billcode) ;
- IF sqlca.SQLCode <> 0 THEN
- arG_MSG = '发送消息失败>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
- uo_msgid = ls_newid
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF ifCOMMIT AND rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer f_save_fj (long arg_msgid, string arg_fjname, blob arg_blob, decimal arg_filesize, integer arg_filetype, ref string arg_msg, boolean arg_ifcommit);//保存附件
- Long rslt = 1
- Long ls_newid
- IF arg_msgid <= 0 THEN
- rslt = 0
- arg_msg = '保存附件失败(消息ID)'
- GOTO ext
- END IF
- IF IsNull(arg_fjname) OR arg_fjname = '' THEN
- rslt = 0
- arg_msg = '保存附件失败(附件名)'
- GOTO ext
- END IF
- ls_newid = f_sys_scidentity(0,"Sys_admsg_fj","fjid",arg_msg,FALSE,sqlca)
- IF ls_newid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
- INSERT INTO Sys_admsg_fj
- (fjid,
- msgid,
- filename,
- filesize,
- filetype)
- VALUES (
- :ls_newid,
- :arg_msgid,
- :arg_fjname,
- :arg_filesize,
- :arg_filetype);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其它原因保存附件失败>>'+sqlca.SQLErrText
- GOTO ext
- END IF
- commit;
- updateblob Sys_admsg_fj
- set fileblob = :arg_blob
- where fjid = :ls_newid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其它原因保存附件失败>>'+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer f_down_fj (long arg_fjid, string arg_fjname, ref blob arg_fjdata, ref string arg_msg);Long rslt = 1,cnt
- Blob ls_filedata
- IF arg_fjid <= 0 THEN
- rslt = 0
- arg_msg = '下载附件失败(错误附件ID)'
- GOTO ext
- END IF
- IF arg_fjname = '' THEN
- rslt = 0
- arg_msg = '下载附件失败(错误附件名)'
- GOTO ext
- END IF
- SELECT count(*)
- INTO :cnt
- FROM Sys_admsg_fj
- Where (fjid = :arg_fjid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询附件信息失败>>'+sqlca.SQLErrText
- GOTO ext
- END IF
- SELECTBLOB Fileblob
- INTO :ls_filedata
- FROM Sys_admsg_fj
- Where (fjid = :arg_fjid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '下载附件失败>>'+sqlca.SQLErrText
- GOTO ext
- END IF
- arg_fjdata = ls_filedata
- ext:
- RETURN rslt
- end function
- on uo_transmsg.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_transmsg.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|