$PBExportHeader$uo_spring_send.sru forward global type uo_spring_send from nonvisualobject end type end forward global type uo_spring_send from nonvisualobject end type global uo_spring_send uo_spring_send type variables Transaction commit_transaction //数据commit事务 end variables forward prototypes public function long uf_sendnow (long arg_sendwayid, long arg_revtype, long arg_revid, string arg_revname, string arg_revrep, string arg_revphone, string arg_sendmsg, ref string arg_msg) public function long uf_sendat (long arg_sendwayid, long arg_revtype, long arg_revid, string arg_revname, string arg_revrep, string arg_revphone, string arg_sendmsg, datetime arg_sendtime, ref string arg_msg) public function long uf_new_send (long arg_sendwayid, long arg_revtype, long arg_revid, string arg_revname, string arg_revrep, string arg_revphone, string arg_sendmsg, datetime arg_sendtime, long arg_empid, string arg_empname, ref string arg_msg) public function integer uf_getinfo (long arg_sendid, ref s_spring_send arg_s_send, ref string arg_msg) public function integer uf_save (ref s_spring_send s_send, ref string arg_msg) public function integer uf_getinfo_withmx (long arg_sendid, ref s_spring_send arg_s_send, ref string arg_msg) public function integer uf_del (long arg_sendid, ref string arg_msg, boolean if_commit) end prototypes public function long uf_sendnow (long arg_sendwayid, long arg_revtype, long arg_revid, string arg_revname, string arg_revrep, string arg_revphone, string arg_sendmsg, ref string arg_msg);DateTime dt_sertime SELECT TOP 1 GETDATE() INTO :dt_sertime From u_user Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询当前时间失败,' + commit_transaction.SQLErrText RETURN 0 END IF RETURN uf_new_send(arg_sendwayid, arg_revtype, arg_revid, arg_revname, arg_revrep, arg_revphone, arg_sendmsg, dt_sertime, sys_empid, publ_operator, arg_msg) end function public function long uf_sendat (long arg_sendwayid, long arg_revtype, long arg_revid, string arg_revname, string arg_revrep, string arg_revphone, string arg_sendmsg, datetime arg_sendtime, ref string arg_msg); RETURN uf_new_send(arg_sendwayid, arg_revtype, arg_revid, arg_revname, arg_revrep, arg_revphone, arg_sendmsg, arg_sendtime, sys_empid, publ_operator, arg_msg) end function public function long uf_new_send (long arg_sendwayid, long arg_revtype, long arg_revid, string arg_revname, string arg_revrep, string arg_revphone, string arg_sendmsg, datetime arg_sendtime, long arg_empid, string arg_empname, ref string arg_msg);//==================================================================== // 事件: uo_spring_send.uf_new_send() //-------------------------------------------------------------------- // 描述: 添加到短信发送序列 //-------------------------------------------------------------------- // 参数: // value long arg_sendwayid 短信通道 // value long arg_revtype 对方身份(0,1客户,2供应商,3员工) // value long arg_revid 对方ID // value string arg_revname 对方公司名 // value string arg_revrep 对方名字 // value string arg_revphone 对方手机 // value string arg_sendmsg 内容 // value datetime arg_sendtime 发送时间 // value long arg_empid 发送者empid // value string arg_empname 发送者名字 // reference string arg_msg 错误信息 //-------------------------------------------------------------------- // 返回: long 发送序列ID //-------------------------------------------------------------------- // 作者: lwl 日期: 2012年01月12日 //-------------------------------------------------------------------- // LONGJOE //-------------------------------------------------------------------- // 修改历史: // //==================================================================== Long rslt = 1 s_spring_send s_send s_send.sendway = arg_sendwayid s_send.msg = arg_sendmsg s_send.sendtime = arg_sendtime s_send.empid = arg_empid s_send.empname = arg_empname s_send.sendflag = 0 s_send.mx[1].revtype = arg_revtype s_send.mx[1].revid = arg_revid s_send.mx[1].revname = arg_revname s_send.mx[1].revrep = arg_revrep s_send.mx[1].revphone = arg_revphone IF uf_save(Ref s_send, Ref arg_msg) = 0 THEN rslt = 0 GOTO ext END IF rslt = s_send.sendid //Long ll_cnt //SELECT COUNT(0) // INTO :ll_cnt // FROM u_spring_sendway // Where sendwayid = :arg_sendwayid Using commit_transaction; //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询短信通道失败,' + commit_transaction.SQLErrText // GOTO ext //END IF // //IF ll_cnt = 0 THEN // rslt = 0 // arg_msg = '短信通道不存在,ID:' + String(arg_sendwayid) // GOTO ext //END IF // //Long ll_sendid //ll_sendid = f_sys_scidentity(0,"u_spring_send","Sendid",arg_msg,True,id_sqlca) //IF ll_sendid <= 0 THEN // rslt = 0 // GOTO ext //END IF // //INSERT INTO u_spring_send(Sendid, // msg, // empid, // sendtime, // sendway, // empname) // VALUES(:ll_sendid, // :arg_sendmsg, // :arg_empid, // :arg_sendtime, // :arg_sendwayid, // :arg_empname) Using commit_transaction; //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '插入待发短信失败,' + commit_transaction.SQLErrText // GOTO ext //END IF // //INSERT INTO u_spring_sendmx(sendid, // printid, // revtype, // revid, // revname, // revrep, // revphone) // VALUES(:ll_sendid, // 1, // :arg_revtype, // :arg_revid, // :arg_revname, // :arg_revrep, // :arg_revphone) Using commit_transaction; //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '插入接收人失败,' + commit_transaction.SQLErrText // GOTO ext //END IF // //rslt = ll_sendid ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSE COMMIT Using commit_transaction; END IF RETURN rslt end function public function integer uf_getinfo (long arg_sendid, ref s_spring_send arg_s_send, ref string arg_msg);Int rslt = 1 Long ll_cnt SELECT COUNT(0) INTO :ll_cnt FROM u_spring_send WHERE sendid = :arg_sendid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询短信失败,' + commit_transaction.SQLErrText GOTO ext END IF IF ll_cnt = 0 THEN rslt = 0 arg_msg = '短信已经被删除' GOTO ext END IF SELECT msg, sys_changetime, sendflag, empid, sendtime, errtime, errtext, sendway, empname INTO :arg_s_send.msg, :arg_s_send.sys_changetime, :arg_s_send.sendflag, :arg_s_send.empid, :arg_s_send.sendtime, :arg_s_send.errtime, :arg_s_send.errtext, :arg_s_send.sendway, :arg_s_send.empname FROM u_spring_send WHERE sendid = :arg_sendid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询短信失败,' + commit_transaction.SQLErrText GOTO ext END IF arg_s_send.sendid = arg_sendid ext: RETURN rslt end function public function integer uf_save (ref s_spring_send s_send, ref string arg_msg);Int rslt = 1 Long ll_cnt Long ll_i Long ll_sendid SELECT COUNT(0) INTO :ll_cnt FROM u_spring_sendway Where sendwayid = :s_send.sendway Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询短信通道失败,' + commit_transaction.SQLErrText GOTO ext END IF IF ll_cnt = 0 THEN rslt = 0 arg_msg = '短信通道不存在,ID:' + String(s_send.sendway) GOTO ext END IF IF s_send.sendflag = 0 And UpperBound(s_send.mx) <= 0 THEN rslt = 0 arg_msg = '待发短信没有接收号码,不能发送' GOTO ext END IF s_send.empid = sys_empid s_send.empname = publ_operator IF s_send.sendid = 0 THEN ll_sendid = f_sys_scidentity(0,"u_spring_send","Sendid",arg_msg,True,id_sqlca) IF ll_sendid <= 0 THEN rslt = 0 GOTO ext END IF INSERT INTO u_spring_send(Sendid, msg, empid, sendtime, sendway, empname, sendflag) VALUES(:ll_sendid, :s_send.msg, :s_send.empid, :s_send.sendtime, :s_send.sendway, :s_send.empname, :s_send.sendflag) Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '插入待发短信失败,' + commit_transaction.SQLErrText GOTO ext END IF FOR ll_i = 1 To UpperBound(s_send.mx) s_send.mx[ll_i].revname = Trim(s_send.mx[ll_i].revname) s_send.mx[ll_i].revrep = Trim(s_send.mx[ll_i].revrep) s_send.mx[ll_i].revphone = Trim(s_send.mx[ll_i].revphone) IF lena(s_send.mx[ll_i].revname) > 500 THEN rslt = 0 arg_msg = '第' + String(ll_i) + '行,公司名大于500字节' GOTO ext END IF IF lena(s_send.mx[ll_i].revrep) > 30 THEN rslt = 0 arg_msg = '第' + String(ll_i) + '行,联系人名大于30字节' GOTO ext END IF IF lena(s_send.mx[ll_i].revphone) > 20 THEN rslt = 0 arg_msg = '第' + String(ll_i) + '行,电话号码大于20字节' GOTO ext END IF INSERT INTO u_spring_sendmx(sendid, printid, revtype, revid, revname, revrep, revphone) VALUES(:ll_sendid, :ll_i, :s_send.mx[ll_i].revtype, :s_send.mx[ll_i].revid, :s_send.mx[ll_i].revname, :s_send.mx[ll_i].revrep, :s_send.mx[ll_i].revphone) Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '插入待发短信明细失败,' + commit_transaction.SQLErrText GOTO ext END IF s_send.mx[ll_i].sendid = ll_sendid s_send.mx[ll_i].printid = ll_i NEXT s_send.sendid = ll_sendid ELSE UPDATE u_spring_send SET msg = :s_send.msg, empid = :s_send.empid, sendtime = :s_send.sendtime, sendway = :s_send.sendway, empname = :s_send.empname, sendflag = :s_send.sendflag Where sendid = :s_send.sendid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新待发短信失败,' + commit_transaction.SQLErrText GOTO ext END IF IF commit_transaction.SQLNRows = 0 THEN rslt = 0 arg_msg = '待发短信已被删除,不能保存' GOTO ext END IF DELETE From u_spring_sendmx Where sendid = :s_send.sendid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除待发短信旧明细失败,' + commit_transaction.SQLErrText GOTO ext END IF FOR ll_i = 1 To UpperBound(s_send.mx) s_send.mx[ll_i].revname = Trim(s_send.mx[ll_i].revname) s_send.mx[ll_i].revrep = Trim(s_send.mx[ll_i].revrep) s_send.mx[ll_i].revphone = Trim(s_send.mx[ll_i].revphone) IF lena(s_send.mx[ll_i].revname) > 500 THEN rslt = 0 arg_msg = '第' + String(ll_i) + '行,公司名大于500字节' GOTO ext END IF IF lena(s_send.mx[ll_i].revrep) > 30 THEN rslt = 0 arg_msg = '第' + String(ll_i) + '行,联系人名大于30字节' GOTO ext END IF IF lena(s_send.mx[ll_i].revphone) > 20 THEN rslt = 0 arg_msg = '第' + String(ll_i) + '行,电话号码大于20字节' GOTO ext END IF INSERT INTO u_spring_sendmx(sendid, printid, revtype, revid, revname, revrep, revphone) VALUES(:s_send.sendid, :ll_i, :s_send.mx[ll_i].revtype, :s_send.mx[ll_i].revid, :s_send.mx[ll_i].revname, :s_send.mx[ll_i].revrep, :s_send.mx[ll_i].revphone) Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '插入待发短信明细失败,' + commit_transaction.SQLErrText GOTO ext END IF s_send.mx[ll_i].sendid = s_send.sendid s_send.mx[ll_i].printid = ll_i NEXT END IF ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSE COMMIT Using commit_transaction; END IF RETURN rslt end function public function integer uf_getinfo_withmx (long arg_sendid, ref s_spring_send arg_s_send, ref string arg_msg);Int rslt = 1 IF uf_getinfo(arg_sendid, Ref arg_s_send, Ref arg_msg) = 0 THEN rslt = 0 GOTO ext END IF s_spring_sendmx mx[] Long ll_cnt = 0 s_spring_sendmx cur DECLARE cur1 CURSOR FOR SELECT sendid, printid, revtype, revid, revname, revrep, revphone FROM u_spring_sendmx Where sendid = :arg_sendid Using commit_transaction; OPEN cur1; FETCH cur1 Into : cur.sendid, :cur.printid, :cur.revtype, :cur.revid, :cur.revname, :cur.revrep, :cur.revphone; DO WHILE commit_transaction.SQLCode = 0 ll_cnt ++ mx[ll_cnt].sendid = cur.sendid mx[ll_cnt].printid = cur.printid mx[ll_cnt].revtype = cur.revtype mx[ll_cnt].revid = cur.revid mx[ll_cnt].revname = cur.revname mx[ll_cnt].revrep = cur.revrep mx[ll_cnt].revphone = cur.revphone FETCH cur1 Into : cur.sendid, :cur.printid, :cur.revtype, :cur.revid, :cur.revname, :cur.revrep, :cur.revphone; LOOP CLOSE cur1; arg_s_send.mx = mx ext: RETURN rslt end function public function integer uf_del (long arg_sendid, ref string arg_msg, boolean if_commit);Int rslt = 1 DELETE From u_spring_sendmx Where sendid = :arg_sendid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除短信接收人失败,' + commit_transaction.SQLErrText GOTO ext END IF DELETE From u_spring_send Where sendid = :arg_sendid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除短信失败,' + commit_transaction.SQLErrText GOTO ext END IF ext: IF if_commit THEN IF rslt = 1 THEN COMMIT Using commit_transaction; ELSE ROLLBACK Using commit_transaction; END IF END IF RETURN rslt end function on uo_spring_send.create call super::create TriggerEvent( this, "constructor" ) end on on uo_spring_send.destroy TriggerEvent( this, "destructor" ) call super::destroy end on