uo_order_wkp_jd.sru 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. $PBExportHeader$uo_order_wkp_jd.sru
  2. forward
  3. global type uo_order_wkp_jd from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_order_wkp_jd from nonvisualobject
  7. end type
  8. global uo_order_wkp_jd uo_order_wkp_jd
  9. forward prototypes
  10. public function integer uof_order_add_wrk_jd (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
  11. end prototypes
  12. public function integer uof_order_add_wrk_jd (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  13. Decimal ld_finishqty
  14. Long ll_dftwrkgrpid
  15. DateTime ldt_tmp
  16. datastore ds
  17. ds = Create datastore
  18. IF arg_orderid = 0 THEN
  19. rslt = 0
  20. arg_msg = "没有审核对象"
  21. GOTO ext
  22. END IF
  23. Long ll_sc_wkpid
  24. SELECT wrkGrpid
  25. INTO :ll_sc_wkpid
  26. FROM u_order_ml
  27. WHERE scid = :arg_scid
  28. And orderid = :arg_orderid;
  29. IF sqlca.SQLCode <> 0 THEN
  30. rslt = 0
  31. arg_msg = "查找安排车间失败,"+sqlca.SQLErrText
  32. GOTO ext
  33. END IF
  34. Long i,cnt
  35. Long ll_i
  36. i = 1
  37. Long ll_wrkgrpid
  38. DateTime ldt_sdate,ldt_edate
  39. Decimal lde_fqty,lde_sqty
  40. Long ll_jdtype,ll_jdnum
  41. String ls_sql_updatestr
  42. string ls_wrkgrpname
  43. boolean lb_GetMx = false
  44. ds.DataObject = "ds_rp_order_wkp_jd_workgroup_1"
  45. ds.SetTransObject(sqlca)
  46. cnt = ds.Retrieve( arg_scid, arg_orderid)
  47. if cnt = 0 then
  48. rslt = 1
  49. goto ext
  50. elseif cnt < 0 then
  51. rslt = 0
  52. arg_msg = "读取工组数据失败"
  53. goto ext
  54. end if
  55. IF cnt > 0 THEN
  56. // /////////////////// //拼Update语句
  57. ls_sql_updatestr = " update u_order_wrk_jd "
  58. ls_sql_updatestr += " set "
  59. FOR i = 1 To cnt
  60. ll_jdnum = ds.Object.jdnum[i]
  61. ll_wrkgrpid = ds.Object.u_ordermtrl_workgroup_wrkgrpid[i]
  62. ls_wrkgrpname = ds.Object.u_sc_workgroup_wrkgrpname[i]
  63. lde_fqty = ds.Object.fqty[i]
  64. lde_sqty = ds.Object.sqty[i]
  65. ldt_sdate = ds.Object.sdate[i]
  66. ldt_edate = ds.Object.edate[i]
  67. if isnull(lde_fqty) then lde_fqty = 0
  68. if isnull(lde_sqty) then lde_sqty = 0
  69. if ll_jdnum = 0 then continue
  70. if ll_jdnum > 50 then continue
  71. if ll_jdnum = 0 or ll_jdnum > 50 then
  72. rslt = 0
  73. arg_msg = "指令工组进度更新失败,工组["+ls_wrkgrpname+"]进度序号超出赋值范围, 进度序号当前只支持在1~~50间取值"
  74. goto ext
  75. end if
  76. lb_GetMx = true
  77. //按工组序号动态更新进度表
  78. ls_sql_updatestr += " wgid"+String(ll_jdnum)+" = "+String(ll_wrkgrpid) +", "
  79. ls_sql_updatestr += " fqty"+String(ll_jdnum)+" = "+String(lde_fqty) +", "
  80. ls_sql_updatestr += " sqty"+String(ll_jdnum)+" = "+String(lde_sqty) +", "
  81. ls_sql_updatestr += " sdate"+String(ll_jdnum)+" = '"+String(ldt_sdate, "yyyy-mm-dd hh:00:00") +"', "
  82. ls_sql_updatestr += " edate"+String(ll_jdnum)+" = '"+String(ldt_edate, "yyyy-mm-dd hh:00:00") +"' "
  83. IF i <> cnt THEN
  84. ls_sql_updatestr += ", "
  85. END IF
  86. NEXT
  87. ls_sql_updatestr += " where scid = "+String(arg_scid)
  88. ls_sql_updatestr += " and orderid = "+String(arg_orderid)
  89. ///////////////////////////////////// //
  90. if not lb_GetMx then
  91. ls_sql_updatestr = ""
  92. end if
  93. ELSE
  94. ls_sql_updatestr = ""
  95. END IF
  96. //检查是否有当前指令记录
  97. Long ll_cnt
  98. SELECT count(1)
  99. INTO :ll_cnt
  100. FROM u_order_wrk_jd
  101. WHERE scid = :arg_scid AND
  102. orderid = :arg_orderid;
  103. IF sqlca.SQLCode <> 0 THEN
  104. rslt = 0
  105. arg_msg = '指令工组进度查询失败,原因:'+sqlca.SQLErrText
  106. GOTO ext
  107. END IF
  108. IF ll_cnt = 0 THEN
  109. INSERT INTO u_order_wrk_jd
  110. (scid,
  111. orderid ,
  112. wrkgrpid)
  113. VALUES
  114. (:arg_scid,
  115. :arg_orderid,
  116. :ll_sc_wkpid
  117. );
  118. IF sqlca.SQLCode <> 0 THEN
  119. rslt = 0
  120. arg_msg = '指令工组进度插入失败,原因:'+sqlca.SQLErrText
  121. GOTO ext
  122. END IF
  123. END IF
  124. IF cnt > 0 THEN
  125. //更新指令进度表数据
  126. EXECUTE Immediate :ls_sql_updatestr;
  127. IF sqlca.SQLCode <> 0 THEN
  128. rslt = 0
  129. arg_msg = '指令工组进度更新失败,请检查工组资料进度序号设置,可用范围为[1,50],原因:'+sqlca.SQLErrText
  130. GOTO ext
  131. END IF
  132. END IF
  133. ext:
  134. IF rslt = 0 THEN
  135. ROLLBACK;
  136. // p_reset()
  137. ELSEIF arg_ifcommit And rslt = 1 THEN
  138. COMMIT;
  139. END IF
  140. destroy ds
  141. RETURN rslt
  142. end function
  143. on uo_order_wkp_jd.create
  144. call super::create
  145. TriggerEvent( this, "constructor" )
  146. end on
  147. on uo_order_wkp_jd.destroy
  148. TriggerEvent( this, "destructor" )
  149. call super::destroy
  150. end on