uo_spring_send.sru 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511
  1. $PBExportHeader$uo_spring_send.sru
  2. forward
  3. global type uo_spring_send from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_spring_send from nonvisualobject
  7. end type
  8. global uo_spring_send uo_spring_send
  9. type variables
  10. Transaction commit_transaction //数据commit事务
  11. end variables
  12. forward prototypes
  13. 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)
  14. 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)
  15. 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)
  16. public function integer uf_getinfo (long arg_sendid, ref s_spring_send arg_s_send, ref string arg_msg)
  17. public function integer uf_save (ref s_spring_send s_send, ref string arg_msg)
  18. public function integer uf_getinfo_withmx (long arg_sendid, ref s_spring_send arg_s_send, ref string arg_msg)
  19. public function integer uf_del (long arg_sendid, ref string arg_msg, boolean if_commit)
  20. end prototypes
  21. 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
  22. SELECT TOP 1 GETDATE()
  23. INTO :dt_sertime
  24. From u_user Using commit_transaction;
  25. IF commit_transaction.SQLCode <> 0 THEN
  26. arg_msg = '查询当前时间失败,' + commit_transaction.SQLErrText
  27. RETURN 0
  28. END IF
  29. 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)
  30. end function
  31. 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);
  32. 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)
  33. end function
  34. 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);//====================================================================
  35. // 事件: uo_spring_send.uf_new_send()
  36. //--------------------------------------------------------------------
  37. // 描述: 添加到短信发送序列
  38. //--------------------------------------------------------------------
  39. // 参数:
  40. // value long arg_sendwayid 短信通道
  41. // value long arg_revtype 对方身份(0,1客户,2供应商,3员工)
  42. // value long arg_revid 对方ID
  43. // value string arg_revname 对方公司名
  44. // value string arg_revrep 对方名字
  45. // value string arg_revphone 对方手机
  46. // value string arg_sendmsg 内容
  47. // value datetime arg_sendtime 发送时间
  48. // value long arg_empid 发送者empid
  49. // value string arg_empname 发送者名字
  50. // reference string arg_msg 错误信息
  51. //--------------------------------------------------------------------
  52. // 返回: long 发送序列ID
  53. //--------------------------------------------------------------------
  54. // 作者: lwl 日期: 2012年01月12日
  55. //--------------------------------------------------------------------
  56. // LONGJOE
  57. //--------------------------------------------------------------------
  58. // 修改历史:
  59. //
  60. //====================================================================
  61. Long rslt = 1
  62. s_spring_send s_send
  63. s_send.sendway = arg_sendwayid
  64. s_send.msg = arg_sendmsg
  65. s_send.sendtime = arg_sendtime
  66. s_send.empid = arg_empid
  67. s_send.empname = arg_empname
  68. s_send.sendflag = 0
  69. s_send.mx[1].revtype = arg_revtype
  70. s_send.mx[1].revid = arg_revid
  71. s_send.mx[1].revname = arg_revname
  72. s_send.mx[1].revrep = arg_revrep
  73. s_send.mx[1].revphone = arg_revphone
  74. IF uf_save(Ref s_send, Ref arg_msg) = 0 THEN
  75. rslt = 0
  76. GOTO ext
  77. END IF
  78. rslt = s_send.sendid
  79. //Long ll_cnt
  80. //SELECT COUNT(0)
  81. // INTO :ll_cnt
  82. // FROM u_spring_sendway
  83. // Where sendwayid = :arg_sendwayid Using commit_transaction;
  84. //IF commit_transaction.SQLCode <> 0 THEN
  85. // rslt = 0
  86. // arg_msg = '查询短信通道失败,' + commit_transaction.SQLErrText
  87. // GOTO ext
  88. //END IF
  89. //
  90. //IF ll_cnt = 0 THEN
  91. // rslt = 0
  92. // arg_msg = '短信通道不存在,ID:' + String(arg_sendwayid)
  93. // GOTO ext
  94. //END IF
  95. //
  96. //Long ll_sendid
  97. //ll_sendid = f_sys_scidentity(0,"u_spring_send","Sendid",arg_msg,True,id_sqlca)
  98. //IF ll_sendid <= 0 THEN
  99. // rslt = 0
  100. // GOTO ext
  101. //END IF
  102. //
  103. //INSERT INTO u_spring_send(Sendid,
  104. // msg,
  105. // empid,
  106. // sendtime,
  107. // sendway,
  108. // empname)
  109. // VALUES(:ll_sendid,
  110. // :arg_sendmsg,
  111. // :arg_empid,
  112. // :arg_sendtime,
  113. // :arg_sendwayid,
  114. // :arg_empname) Using commit_transaction;
  115. //IF commit_transaction.SQLCode <> 0 THEN
  116. // rslt = 0
  117. // arg_msg = '插入待发短信失败,' + commit_transaction.SQLErrText
  118. // GOTO ext
  119. //END IF
  120. //
  121. //INSERT INTO u_spring_sendmx(sendid,
  122. // printid,
  123. // revtype,
  124. // revid,
  125. // revname,
  126. // revrep,
  127. // revphone)
  128. // VALUES(:ll_sendid,
  129. // 1,
  130. // :arg_revtype,
  131. // :arg_revid,
  132. // :arg_revname,
  133. // :arg_revrep,
  134. // :arg_revphone) Using commit_transaction;
  135. //IF commit_transaction.SQLCode <> 0 THEN
  136. // rslt = 0
  137. // arg_msg = '插入接收人失败,' + commit_transaction.SQLErrText
  138. // GOTO ext
  139. //END IF
  140. //
  141. //rslt = ll_sendid
  142. ext:
  143. IF rslt = 0 THEN
  144. ROLLBACK Using commit_transaction;
  145. ELSE
  146. COMMIT Using commit_transaction;
  147. END IF
  148. RETURN rslt
  149. end function
  150. public function integer uf_getinfo (long arg_sendid, ref s_spring_send arg_s_send, ref string arg_msg);Int rslt = 1
  151. Long ll_cnt
  152. SELECT COUNT(0)
  153. INTO :ll_cnt
  154. FROM u_spring_send
  155. WHERE sendid = :arg_sendid
  156. Using commit_transaction;
  157. IF commit_transaction.SQLCode <> 0 THEN
  158. rslt = 0
  159. arg_msg = '查询短信失败,' + commit_transaction.SQLErrText
  160. GOTO ext
  161. END IF
  162. IF ll_cnt = 0 THEN
  163. rslt = 0
  164. arg_msg = '短信已经被删除'
  165. GOTO ext
  166. END IF
  167. SELECT msg,
  168. sys_changetime,
  169. sendflag,
  170. empid,
  171. sendtime,
  172. errtime,
  173. errtext,
  174. sendway,
  175. empname
  176. INTO :arg_s_send.msg,
  177. :arg_s_send.sys_changetime,
  178. :arg_s_send.sendflag,
  179. :arg_s_send.empid,
  180. :arg_s_send.sendtime,
  181. :arg_s_send.errtime,
  182. :arg_s_send.errtext,
  183. :arg_s_send.sendway,
  184. :arg_s_send.empname
  185. FROM u_spring_send
  186. WHERE sendid = :arg_sendid
  187. Using commit_transaction;
  188. IF commit_transaction.SQLCode <> 0 THEN
  189. rslt = 0
  190. arg_msg = '查询短信失败,' + commit_transaction.SQLErrText
  191. GOTO ext
  192. END IF
  193. arg_s_send.sendid = arg_sendid
  194. ext:
  195. RETURN rslt
  196. end function
  197. public function integer uf_save (ref s_spring_send s_send, ref string arg_msg);Int rslt = 1
  198. Long ll_cnt
  199. Long ll_i
  200. Long ll_sendid
  201. SELECT COUNT(0)
  202. INTO :ll_cnt
  203. FROM u_spring_sendway
  204. Where sendwayid = :s_send.sendway Using commit_transaction;
  205. IF commit_transaction.SQLCode <> 0 THEN
  206. rslt = 0
  207. arg_msg = '查询短信通道失败,' + commit_transaction.SQLErrText
  208. GOTO ext
  209. END IF
  210. IF ll_cnt = 0 THEN
  211. rslt = 0
  212. arg_msg = '短信通道不存在,ID:' + String(s_send.sendway)
  213. GOTO ext
  214. END IF
  215. IF s_send.sendflag = 0 And UpperBound(s_send.mx) <= 0 THEN
  216. rslt = 0
  217. arg_msg = '待发短信没有接收号码,不能发送'
  218. GOTO ext
  219. END IF
  220. s_send.empid = sys_empid
  221. s_send.empname = publ_operator
  222. IF s_send.sendid = 0 THEN
  223. ll_sendid = f_sys_scidentity(0,"u_spring_send","Sendid",arg_msg,True,id_sqlca)
  224. IF ll_sendid <= 0 THEN
  225. rslt = 0
  226. GOTO ext
  227. END IF
  228. INSERT INTO u_spring_send(Sendid,
  229. msg,
  230. empid,
  231. sendtime,
  232. sendway,
  233. empname,
  234. sendflag)
  235. VALUES(:ll_sendid,
  236. :s_send.msg,
  237. :s_send.empid,
  238. :s_send.sendtime,
  239. :s_send.sendway,
  240. :s_send.empname,
  241. :s_send.sendflag) Using commit_transaction;
  242. IF commit_transaction.SQLCode <> 0 THEN
  243. rslt = 0
  244. arg_msg = '插入待发短信失败,' + commit_transaction.SQLErrText
  245. GOTO ext
  246. END IF
  247. FOR ll_i = 1 To UpperBound(s_send.mx)
  248. s_send.mx[ll_i].revname = Trim(s_send.mx[ll_i].revname)
  249. s_send.mx[ll_i].revrep = Trim(s_send.mx[ll_i].revrep)
  250. s_send.mx[ll_i].revphone = Trim(s_send.mx[ll_i].revphone)
  251. IF lena(s_send.mx[ll_i].revname) > 500 THEN
  252. rslt = 0
  253. arg_msg = '第' + String(ll_i) + '行,公司名大于500字节'
  254. GOTO ext
  255. END IF
  256. IF lena(s_send.mx[ll_i].revrep) > 30 THEN
  257. rslt = 0
  258. arg_msg = '第' + String(ll_i) + '行,联系人名大于30字节'
  259. GOTO ext
  260. END IF
  261. IF lena(s_send.mx[ll_i].revphone) > 20 THEN
  262. rslt = 0
  263. arg_msg = '第' + String(ll_i) + '行,电话号码大于20字节'
  264. GOTO ext
  265. END IF
  266. INSERT INTO u_spring_sendmx(sendid,
  267. printid,
  268. revtype,
  269. revid,
  270. revname,
  271. revrep,
  272. revphone)
  273. VALUES(:ll_sendid,
  274. :ll_i,
  275. :s_send.mx[ll_i].revtype,
  276. :s_send.mx[ll_i].revid,
  277. :s_send.mx[ll_i].revname,
  278. :s_send.mx[ll_i].revrep,
  279. :s_send.mx[ll_i].revphone) Using commit_transaction;
  280. IF commit_transaction.SQLCode <> 0 THEN
  281. rslt = 0
  282. arg_msg = '插入待发短信明细失败,' + commit_transaction.SQLErrText
  283. GOTO ext
  284. END IF
  285. s_send.mx[ll_i].sendid = ll_sendid
  286. s_send.mx[ll_i].printid = ll_i
  287. NEXT
  288. s_send.sendid = ll_sendid
  289. ELSE
  290. UPDATE u_spring_send
  291. SET msg = :s_send.msg,
  292. empid = :s_send.empid,
  293. sendtime = :s_send.sendtime,
  294. sendway = :s_send.sendway,
  295. empname = :s_send.empname,
  296. sendflag = :s_send.sendflag
  297. Where sendid = :s_send.sendid Using commit_transaction;
  298. IF commit_transaction.SQLCode <> 0 THEN
  299. rslt = 0
  300. arg_msg = '更新待发短信失败,' + commit_transaction.SQLErrText
  301. GOTO ext
  302. END IF
  303. IF commit_transaction.SQLNRows = 0 THEN
  304. rslt = 0
  305. arg_msg = '待发短信已被删除,不能保存'
  306. GOTO ext
  307. END IF
  308. DELETE From u_spring_sendmx Where sendid = :s_send.sendid Using commit_transaction;
  309. IF commit_transaction.SQLCode <> 0 THEN
  310. rslt = 0
  311. arg_msg = '删除待发短信旧明细失败,' + commit_transaction.SQLErrText
  312. GOTO ext
  313. END IF
  314. FOR ll_i = 1 To UpperBound(s_send.mx)
  315. s_send.mx[ll_i].revname = Trim(s_send.mx[ll_i].revname)
  316. s_send.mx[ll_i].revrep = Trim(s_send.mx[ll_i].revrep)
  317. s_send.mx[ll_i].revphone = Trim(s_send.mx[ll_i].revphone)
  318. IF lena(s_send.mx[ll_i].revname) > 500 THEN
  319. rslt = 0
  320. arg_msg = '第' + String(ll_i) + '行,公司名大于500字节'
  321. GOTO ext
  322. END IF
  323. IF lena(s_send.mx[ll_i].revrep) > 30 THEN
  324. rslt = 0
  325. arg_msg = '第' + String(ll_i) + '行,联系人名大于30字节'
  326. GOTO ext
  327. END IF
  328. IF lena(s_send.mx[ll_i].revphone) > 20 THEN
  329. rslt = 0
  330. arg_msg = '第' + String(ll_i) + '行,电话号码大于20字节'
  331. GOTO ext
  332. END IF
  333. INSERT INTO u_spring_sendmx(sendid,
  334. printid,
  335. revtype,
  336. revid,
  337. revname,
  338. revrep,
  339. revphone)
  340. VALUES(:s_send.sendid,
  341. :ll_i,
  342. :s_send.mx[ll_i].revtype,
  343. :s_send.mx[ll_i].revid,
  344. :s_send.mx[ll_i].revname,
  345. :s_send.mx[ll_i].revrep,
  346. :s_send.mx[ll_i].revphone) Using commit_transaction;
  347. IF commit_transaction.SQLCode <> 0 THEN
  348. rslt = 0
  349. arg_msg = '插入待发短信明细失败,' + commit_transaction.SQLErrText
  350. GOTO ext
  351. END IF
  352. s_send.mx[ll_i].sendid = s_send.sendid
  353. s_send.mx[ll_i].printid = ll_i
  354. NEXT
  355. END IF
  356. ext:
  357. IF rslt = 0 THEN
  358. ROLLBACK Using commit_transaction;
  359. ELSE
  360. COMMIT Using commit_transaction;
  361. END IF
  362. RETURN rslt
  363. end function
  364. public function integer uf_getinfo_withmx (long arg_sendid, ref s_spring_send arg_s_send, ref string arg_msg);Int rslt = 1
  365. IF uf_getinfo(arg_sendid, Ref arg_s_send, Ref arg_msg) = 0 THEN
  366. rslt = 0
  367. GOTO ext
  368. END IF
  369. s_spring_sendmx mx[]
  370. Long ll_cnt = 0
  371. s_spring_sendmx cur
  372. DECLARE cur1 CURSOR FOR
  373. SELECT sendid, printid, revtype, revid, revname, revrep, revphone
  374. FROM u_spring_sendmx
  375. Where sendid = :arg_sendid Using commit_transaction;
  376. OPEN cur1;
  377. FETCH cur1 Into : cur.sendid, :cur.printid, :cur.revtype, :cur.revid, :cur.revname, :cur.revrep, :cur.revphone;
  378. DO WHILE commit_transaction.SQLCode = 0
  379. ll_cnt ++
  380. mx[ll_cnt].sendid = cur.sendid
  381. mx[ll_cnt].printid = cur.printid
  382. mx[ll_cnt].revtype = cur.revtype
  383. mx[ll_cnt].revid = cur.revid
  384. mx[ll_cnt].revname = cur.revname
  385. mx[ll_cnt].revrep = cur.revrep
  386. mx[ll_cnt].revphone = cur.revphone
  387. FETCH cur1 Into : cur.sendid, :cur.printid, :cur.revtype, :cur.revid, :cur.revname, :cur.revrep, :cur.revphone;
  388. LOOP
  389. CLOSE cur1;
  390. arg_s_send.mx = mx
  391. ext:
  392. RETURN rslt
  393. end function
  394. public function integer uf_del (long arg_sendid, ref string arg_msg, boolean if_commit);Int rslt = 1
  395. DELETE From u_spring_sendmx Where sendid = :arg_sendid Using commit_transaction;
  396. IF commit_transaction.SQLCode <> 0 THEN
  397. rslt = 0
  398. arg_msg = '删除短信接收人失败,' + commit_transaction.SQLErrText
  399. GOTO ext
  400. END IF
  401. DELETE From u_spring_send Where sendid = :arg_sendid Using commit_transaction;
  402. IF commit_transaction.SQLCode <> 0 THEN
  403. rslt = 0
  404. arg_msg = '删除短信失败,' + commit_transaction.SQLErrText
  405. GOTO ext
  406. END IF
  407. ext:
  408. IF if_commit THEN
  409. IF rslt = 1 THEN
  410. COMMIT Using commit_transaction;
  411. ELSE
  412. ROLLBACK Using commit_transaction;
  413. END IF
  414. END IF
  415. RETURN rslt
  416. end function
  417. on uo_spring_send.create
  418. call super::create
  419. TriggerEvent( this, "constructor" )
  420. end on
  421. on uo_spring_send.destroy
  422. TriggerEvent( this, "destructor" )
  423. call super::destroy
  424. end on