$PBExportHeader$uo_order_wkp_jd.sru forward global type uo_order_wkp_jd from nonvisualobject end type end forward global type uo_order_wkp_jd from nonvisualobject end type global uo_order_wkp_jd uo_order_wkp_jd forward prototypes public function integer uof_order_add_wrk_jd (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer uof_order_add_wrk_jd (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Decimal ld_finishqty Long ll_dftwrkgrpid DateTime ldt_tmp datastore ds ds = Create datastore IF arg_orderid = 0 THEN rslt = 0 arg_msg = "没有审核对象" GOTO ext END IF Long ll_sc_wkpid SELECT wrkGrpid INTO :ll_sc_wkpid FROM u_order_ml WHERE scid = :arg_scid And orderid = :arg_orderid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查找安排车间失败,"+sqlca.SQLErrText GOTO ext END IF Long i,cnt Long ll_i i = 1 Long ll_wrkgrpid DateTime ldt_sdate,ldt_edate Decimal lde_fqty,lde_sqty Long ll_jdtype,ll_jdnum String ls_sql_updatestr string ls_wrkgrpname boolean lb_GetMx = false ds.DataObject = "ds_rp_order_wkp_jd_workgroup_1" ds.SetTransObject(sqlca) cnt = ds.Retrieve( arg_scid, arg_orderid) if cnt = 0 then rslt = 1 goto ext elseif cnt < 0 then rslt = 0 arg_msg = "读取工组数据失败" goto ext end if IF cnt > 0 THEN // /////////////////// //拼Update语句 ls_sql_updatestr = " update u_order_wrk_jd " ls_sql_updatestr += " set " FOR i = 1 To cnt ll_jdnum = ds.Object.jdnum[i] ll_wrkgrpid = ds.Object.u_ordermtrl_workgroup_wrkgrpid[i] ls_wrkgrpname = ds.Object.u_sc_workgroup_wrkgrpname[i] lde_fqty = ds.Object.fqty[i] lde_sqty = ds.Object.sqty[i] ldt_sdate = ds.Object.sdate[i] ldt_edate = ds.Object.edate[i] if isnull(lde_fqty) then lde_fqty = 0 if isnull(lde_sqty) then lde_sqty = 0 if ll_jdnum = 0 then continue if ll_jdnum > 50 then continue if ll_jdnum = 0 or ll_jdnum > 50 then rslt = 0 arg_msg = "指令工组进度更新失败,工组["+ls_wrkgrpname+"]进度序号超出赋值范围, 进度序号当前只支持在1~~50间取值" goto ext end if lb_GetMx = true //按工组序号动态更新进度表 ls_sql_updatestr += " wgid"+String(ll_jdnum)+" = "+String(ll_wrkgrpid) +", " ls_sql_updatestr += " fqty"+String(ll_jdnum)+" = "+String(lde_fqty) +", " ls_sql_updatestr += " sqty"+String(ll_jdnum)+" = "+String(lde_sqty) +", " ls_sql_updatestr += " sdate"+String(ll_jdnum)+" = '"+String(ldt_sdate, "yyyy-mm-dd hh:00:00") +"', " ls_sql_updatestr += " edate"+String(ll_jdnum)+" = '"+String(ldt_edate, "yyyy-mm-dd hh:00:00") +"' " IF i <> cnt THEN ls_sql_updatestr += ", " END IF NEXT ls_sql_updatestr += " where scid = "+String(arg_scid) ls_sql_updatestr += " and orderid = "+String(arg_orderid) ///////////////////////////////////// // if not lb_GetMx then ls_sql_updatestr = "" end if ELSE ls_sql_updatestr = "" END IF //检查是否有当前指令记录 Long ll_cnt SELECT count(1) INTO :ll_cnt FROM u_order_wrk_jd WHERE scid = :arg_scid AND orderid = :arg_orderid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '指令工组进度查询失败,原因:'+sqlca.SQLErrText GOTO ext END IF IF ll_cnt = 0 THEN INSERT INTO u_order_wrk_jd (scid, orderid , wrkgrpid) VALUES (:arg_scid, :arg_orderid, :ll_sc_wkpid ); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '指令工组进度插入失败,原因:'+sqlca.SQLErrText GOTO ext END IF END IF IF cnt > 0 THEN //更新指令进度表数据 EXECUTE Immediate :ls_sql_updatestr; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '指令工组进度更新失败,请检查工组资料进度序号设置,可用范围为[1,50],原因:'+sqlca.SQLErrText GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK; // p_reset() ELSEIF arg_ifcommit And rslt = 1 THEN COMMIT; END IF destroy ds RETURN rslt end function on uo_order_wkp_jd.create call super::create TriggerEvent( this, "constructor" ) end on on uo_order_wkp_jd.destroy TriggerEvent( this, "destructor" ) call super::destroy end on