




已阅读5页,还剩76页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java OA函数宝典Java OA函数宝典文档ID版本编号1.0.0相关文档作者甘承坚审核状态密级程度发布日期2006年6月30日生效日期其它信息版本更新摘要版本号日期审阅人更新摘要1.0.02005-10-6甘承坚初稿2006-6-16朱成福修订2006-6-19朱成福修订2006-6-30林娇格式修订 目 录第1章概述61.1文档目标61.2读者对象6第2章工作流二次开发接口62.1二次开发说明62.1.1可以进行代码编写的地方62.1.2对象说明72.1.3各节点可以使用的对象72.1.4对象详细说明72.2典型样例102.2.1将指定节点的工作项处理人在后继步骤“提交过滤”的执行者列表中过滤掉102.2.2如果相连接的节点有工作项没有完成,则本工作项不启动112.2.3当后继步骤“打印”被选择时,修改表单数据122.2.4当节点工作项数量大于1时,后继步骤“结束”不出现在后继步骤列表122.2.5当节点任意一个工作项完成时,自动完成其余的工作项122.2.6从执行角色(组)中筛选出与拟稿人相同部门的人员132.2.7如何避免将公文发给自己的情况发生152.2.8将节点中执行角色的单选改为多选162.2.9如何将公文发给流程中指定节点的处理人172.2.10根据用户的不同指定不同的后继步骤和接收人182.2.11如何把表单中数据写入相关表中192.2.12根据表单数据控制公文流向192.2.13将公文发送给指定的用户202.2.14将公文发送给指定的组202.2.15将公文发送给指定的部门212.2.16根据某步骤执行人数控制流程的流向212.2.17自动获取接收人员222.2.18获取与拟稿人相同部门的人员,并从指定组别中过滤。242.2.19在流程中设置文件流水号242.2.20在流程中设置代理人252.2.21拟稿人在领导组里,归档时的执行角色为公司运转人;拟稿人不在公司领导组,归档时的执行角色为部门运转人,并且要求部门运转人和拟稿人同一个部门。262.3公文处理API27第3章表单二次开发接口283.1内置函数283.1.1getCurrWorkItemInfo(attrName)283.1.2getDsValueByDsName(dsName,bDisplay,param1,param2,param3)293.1.3getFormObjectIdByHTMLObjectName(strName)293.1.4getFormObjectTypeByObjectId(strId)293.1.5setDsValueByDsName(param1,param2,param3)303.1.6sys_selectAddress(param1,param2,param3)303.1.7sys_selectOrg(param1,param2,param3)303.1.8getModified()303.1.9setModified(bValue)303.1.10getDsValueByObjectName(objName,dsName,bDisplay,param1,param2,param3)313.1.11setDsValueByObjectName(objName,dsName,param1,param2,param3)313.1.12sys_ExecuteButton(strType,param1,param2,param3)313.1.13getCurrDocInstXMLDocument()323.1.14getOpinionInstByCondtions(dsName,actName,deptName,strEditor,bShowActName,param1,param2)323.1.15setFormObjectArr(objName,arrName,arrValue,param1,param2,param3)333.1.16getFormObjectArr(objName,arrName,param1,param2,param3)333.1.17getSysSerialNumber(unitId,ziHao,oldZiHao,oldWenHao,param1,param2)343.1.18SQLUtil_ExecuteSQL (strSql,params, strSqlType,param2)343.1.19string2Date(strValue,param1)353.1.20formatDateTime(dt,strFm,param1,param2,param3)353.1.21SQLParam(type,value)363.1.22isNumberKeyCode(keyCode,param1,param2)363.1.23setFocusToFormObject(strId,param1,param2)363.1.24stringTrim (data)363.1.25sys_selectDt (param1,param2)373.1.26getButtonObjectByHTMLId(strId)373.1.27getOpinionInstVOsArrayByCondtions(dsName,actName,deptName,strEditor,startEditDt,endEditDt,param1)373.1.28completeWorkItemAndDocInst(workItemdId,param1,param2,param3)383.2事件383.2.1formInst_Onload()383.2.2formInst_Page_Onchange(objectId,pageTitle)393.2.3address_OnSelect(objectId,objectName,dsName,param1,param2,param3)393.2.4org_OnSelect(objectId, objectName,dsName,param1,param2,param3)393.2.5getDsValueByDsName_Event(ctrlID,ctrlType,realDsValue,dsValue,dsName,param1,param2,param3)403.2.6formInst_OnBeforeLoad()403.2.7docInst_OnBeforeSave(param1,param2,param3,param4)413.2.8docInst_OnAfterSave(param1,param2,param3,param4)413.2.9formObject_onkeyDown(objectId, objectName,dsName,param1,param2,param3)423.2.10formObject_onkeyPress(objectId, objectName,dsName,param1,param2,param3)423.2.11formObject_onmouseOver(objectId, objectName,dsName,param1,param2,param3)423.2.12formObject_onmouseOut(objectId, objectName,dsName,param1,param2,param3)433.2.13formObject_onmouseDown(objectId, objectName,dsName,param1,param2,param3)433.2.14formObject_onmouseUp(objectId, objectName,dsName,param1,param2,param3)443.2.15formObject_onkeyUp(objectId, objectName,dsName,param1,param2,param3)443.2.16formObject_onChange(objectId, objectName,dsName,param1,param2,param3)443.2.17formObject_onClick(objectId, objectName,dsName,param1,param2,param3)453.2.18formObject_onDblClick(objectId, objectName,dsName,param1,param2,param3)453.2.19formObject_onFocus(objectId, objectName,dsName,param1,param2,param3)453.2.20formObject_onBlur(objectId, objectName,dsName,param1,param2,param3)463.2.21dateTime_OnSelect(objectId,objectName,dsName,param1,param2,param3)463.2.22docInst_OnBeforeSend(sendType,param1,param2,param3)473.2.23docInst_OnAfterSend(sendType,param1,param2,param3)473.2.24toolButton_onclick(btnName,strTitle,param,appendicular_Info1,appendicular_Info2)483.3综合范例483.3.1外部程序483.3.2javascript或vbscript脚本543.3.3车辆管理模块和流程表单的整合71第4章部分数据字典734.1用户管理734.1.1表清单734.1.2用户管理中部门、组和人员的共同信息父表:um_common734.1.3组:um_group744.1.4组和用户对应表:um_group_user744.1.5用户信息:um_user744.1.6部门:um_organization754.1.7部门管理员对应关系表:um_org_admin754.1.8部门跟用户对应关系表: um_org_user764.1.9常建组模板表:um_group_model764.1.10主键生成表:um_key764.1.11用户行政级别表:um_official_level764.1.12领导表:um_leader764.1.13领导秘书表:um_secretary774.2公文处理774.2.1表清单774.2.2公文实例:mv_formset_inst774.2.3表单数据实例:mv_form_data_inst794.2.4数据历史纪录:mv_data_history794.2.5公文相关文件:mv_form_file804.2.6批示意见表:mv_opinion_inst804.2.7工作项:mv_workitem814.3数据结构82编写部门:客户服务中心 第 5 页 共 81 页第1章 概述1.1 文档目标通过本文档能顺利实施和维护好JavaOA项目的流程和表单二次开发脚本。1.2 读者对象JavaOA项目的实施人员和维护人员。第2章 工作流二次开发接口2.1 二次开发说明2.1.1 可以进行代码编写的地方 节点的以下属性可以编写二次开发代码。在以下几个执行环境中,都有一些对象在环境初始化的时候由系统自动初始化,用户可以直接调用。代码在Rhino V1.5R5环境下执行,由mozilla发布,开源软件。所有对象的更改只对当次操作有效,不写入数据库,如需写入数据库,需要调用相应接口或在表单提交时写入。 n 执行者过滤器:对节点的后续步骤作进一步的过滤,在读取后续步骤完成后、显示后续步骤前执行。 n 启动前执行的外部程序:在节点发送完成后,启动节点前执行,针对目标节点。 n 完成后执行的外部程序:在节点发送完成后,但是在生成后面的工作项前执行,针对源节点。注意:在流程中进行二次开发使用java代码,不能使用javascript或vbscript脚本。 2.1.2 对象说明 2.1.3 各节点可以使用的对象 属性helperoutworkItemVOformsetInstVOuserInfotargetsroutes 输入流对象当前工作相对象当前的公文实例对象当前登录用户对象执行者过滤器可用可用可用可用不可用不可用可用 启动前执行的外部程序可用可用可用可用可用不可用不可用 完成后执行的外部程序可用可用可用可用可用可用不可用 2.1.4 对象详细说明 helper: 助手对象,里面包含几个静态常用对象。 cessor: MissiveProcessorLocal(com.excellence.platform.missive.session.missiveprocessor.ejb. MissiveProcessorLocal),可用的方法包括: 方法参数描述 completeConcurrentWorkItems(int workItemId)工作项ID完成与本工作项同时发出的其他工作项 getWorkItemsByActivityNames(int formsetInstId,String actNames)实例ID,节点名称数组根据节点名称返回相关工作项,如果actNames为空则返回所有工作项 getParticipantsByActivityNames(int formsetInstId,String actNames)实例ID,节点名称数组根据节点名称返回相关执行者,如果actNames为空则返回所有执行者 helper.admin: MissiveAdminLocal(com.excellence.platform.missive.session.missiveprocessor.ejb.MissiveAdminLocal)helper.serviceLocator: ServiceLocator,可用的方法包括: 方法参数描述 getLocalHome(String jndiName)EJB的JNDI名称得到EJB的local接口 helper.sqlUtil: SQLUtil(mon.util.SQLUtil) out: 就是System.out,可以在后台输出一些信息。 workItemVO(com.excellence.platform.missive.vo. WorkItemVO): 工作项类。属性如下: 属性类型描述 idint工作项Id activityTypeshort工作项类型:1:办件,2:阅件senderIdint发送者Id senderString发送者名称 receiverIdint接收人Id receiverString接收人名称 statusshort状态formSetInstIdint公文实例IDopenTimeDate工作项被打开时间destString发送目标步骤名称delegantString授权人姓名delegantIdInt授权人IDactivityIdint工作项对应的步骤IDappTypeNameString工作项对应的步骤名称formsetInstVO(com.excellence.platform.missive.vo.FormSetInstVO): 实例类。属性如下: 属性类型描述 idint实例Id nameString实例名称 createTimeDate创建时间creatorString创建人姓名creatorIdint创建人IDcreatorDeptString创建人所在部门名称creatorDeptIdint创建人所在部门IDformsetNameString对应表单模版名称procInfoIdint对应流程模版版本IDstatusshort状态extXX(1-30)String或int或Date数据项内容(1-22 String,23-26 int,27-30 Date) 扩展字段FormDataInstVOgetFormDataInstVOByDsName(数据源名称)setFormDataInstVOValueByDsName(数据源名称, 数据源值)userInfo(mon.UserInfo): 当前用户信息类。属性如下: 属性类型描述 accountString帐号 usernameString用户名 orgString主机构id orgNameString主机构名字 unitIdint单位id unitNameString单位名字 idString用户id ipString用户登录时使用的ip地址 machineString用户登录时使用的机器名 targets: 发送步骤列表(ArrayList,里面包含SendTargetVO)。SendTargetVO中可用的属性如下: 属性类型描述 activityIdint节点Id participantsArrayList节点角色列表(里面包含的对象是ParticipantVO) routes: 后续步骤列表(ArrayList,里面包含SendTargetVO)。SendTargetVO中可用的属性如下: 属性类型描述 activityIdint节点Id activityNameString节点名称 activityTypeshort节点类型 transitionNameString连线名称 participantsArrayList节点角色列表(里面包含的对象是ParticipantVO实例) filtershort根据行政级别的角色过滤 roleObjectItemsArrayList选择的角色控件中的用户信息(里面包含的对象是ParticipantVO) rejectedRoleObjectItemsArrayList需要过滤的角色控件中的用户信息(里面包含的对象是ParticipantVO) conditionString连线的条件 addressBookExtensionString地址本扩展参数 mutexString互斥信息 ParticipantVO(com.excellence.platform.missive.vo.ParticipantVO): 执行者 属性类型描述 nameString执行者名称 objectIdint执行者ID objectTypeshort执行者类型,用户为2 2.2 典型样例 2.2.1 将指定节点的工作项处理人在后继步骤“提交过滤”的执行者列表中过滤掉/节点的执行者过滤器/功能:读取节点“中间步骤1”和“传阅”的工作项,把这些工作项的接收者在后续步骤“提交过滤”的执行者列表中过滤掉 var acts=new Array();actsacts.length=中间步骤1;actsacts.length=传阅;var items=cessor.getWorkItemsByActivityNames(workItemVO.getFormSetInstId(),acts);var parts=new java.util.ArrayList();for (var i=0;iitems.size();i+)var item=items.get(i);var part=new P.excellence.platform.missive.vo.ParticipantVO();part.setObjectId(item.getReceiverId();part.setName(item.getReceiver();part.setObjectType(2); /组别为1;用户为2parts.add(part); for (var i=0;iroutes.size();i+)var st=routes.get(i);if (st.getTransitionName().equals(“提交过滤”) st.getRejectedRoleObjectItems().addAll(parts); 2.2.2 如果相连接的节点有工作项没有完成,则本工作项不启动 /完成后执行的外部程序/功能:读取节点“科室办理”和“内部处理”的工作项,如果有工作项没有完成,则本工作项不能启动 。前提:“科室办理”和“内部处理”均有连线连接到本节点。/这段代码置于“启动前执行的外部程序”和“完成后执行的外部程序”中,均无法实现该功能,将有多个工作项处于“等待中”状态(待完善)var acts=new Array();actsacts.length=”科室办理”;actsacts.length=”内部处理”;var list=cessor.getWorkItemsByActivityNames(workItemVO.getFormSetInstId(),acts);var b=true;for (var i=0;ilist.size();i+)var w=list.get(i);if (w.getStatus()!=8&w.getStatus()!=9) /状态(0-等待,1-新收到,2-已保存,3-已阅读,4-被催办,5-被退回,7-已回收,8-已过期,9-已处理,11-可以被阅读,12-不能被阅读(只能看到标题)b=false;break; if (!b)var wh=helper.serviceLocator.getLocalHome(“java:comp/env/ejb/missive/WorkItem”);var wl=wh.findByPrimaryKey(new java.lang.Integer(workItemVO.getId();wl.setStatus(0); 2.2.3 当后继步骤“打印”被选择时,修改表单数据/完成后执行的外部程序/功能:当后续步骤“打印”被选择时,把表单的数据ext2的值置成aa for (var i=0;i1&st.getTransitionName().equals(“结束”) i.remove(); 2.2.5 当节点任意一个工作项完成时,自动完成其余的工作项 /完成后执行的外部程序/功能:当节点任意一个工作项完成时,自动完成其余的工作项 pleteConcurrentWorkItems(workItemVO.getId();2.2.6 从执行角色(组)中筛选出与拟稿人相同部门的人员/节点名称:审稿/节点属性:执行者过滤器/功能:从后继步骤节点的执行角色(组)中筛选出与拟稿人相同部门的人员/acts1中表示步骤名称的集合var acts1 = new Array();/将“拟稿”步骤加入集合中acts1acts1.length = “拟稿”;/如果有多个步骤需要处理,可以采用如下方式添加到集合中:/acts1acts1.length = “核稿”;/./获取拟稿步骤人员的id,姓名,部门id,部门名称等信息/1.根据当前工作项对应的流程实例id和流程步骤名,获取该实例中指定步骤的工作项集合items1。Var items1 = cessor.getWorkItemsByActivityNames(workItemVO.getFormSetInstId(),acts1);var parts1 = new java.util.ArrayList();var sendMap1 = new java.util.HashMap();/2.对于拟稿步骤,属于流程的启动步骤,只有一个工作项,所以采用get(0)的方式获取工作项item。var item=items1.get(0);/3.拟稿步骤工作项的接收者就是拟稿人,可以获取拟稿人的id,拟稿人的姓名var initUserId = item.getReceiverId();var initUserName = item.getReceiver();/4.如果需要调用UserService类中的方法需要获取该类的实例。var us = P.excellence.platform.um.dao.UserService.getInstance();/5.根据用户id获取用户所在主部门的Common对象var mainOrg = us.getMainOrganizationByUserId(initUserId);/6.调用Common对象中的方法可以获取用户主部门的id和主部门的名称varinitUserOrgId = mainOrg.getId();var initUserOrgName = mainOrg.getName();/根据用户主部门id,需要过滤的组,以及用户条件,获取满足条件:/用户in (部门id1 or部门id2 or .) and (组id1 or组id2 or .) and ()/的用户集合/1.部门id的集合var orgColl2 = new java.util.Vector();orgColl2.add(new java.lang.Integer(initUserOrgId);/如果有多个部门,则再增加:/orgColl2.add(new java.lang.Integer(initUserOrgId2);/./2.组id的集合/本例中,组id为各流程中相关步骤的执行角色,为已知参数,只需要加入组id集合中var groupColl2 = new java.util.Vector();groupColl2.add(new java.lang.Integer(1115);/如果有多个组,则再增加:/groupColl2.add(new java.lang.Integer(1116);/./3.用户条件的集合/如果不需要该条件,只需要下面语句就可以var con=new java.util.HashMap();/如果需要加入用户条件,可以采用如下方式:/4.获取满足条件的用户集合,集合中对象为Common类型var users = us.getUsersByConditions(orgColl2,groupColl2,con);/将满足条件的用户Common对象集合包装成执行角色集合/1.新建一个执行角色集合var parts2 = new java.util.ArrayList();var sendMap2 = new java.util.HashMap();/2.从用户Common集合中逐个取出对象,包装成执行者对象,添加到执行角色集合中for(var it=users.iterator();it.hasNext();)var userCommon = it.next();var part=new P.excellence.platform.missive.vo.ParticipantVO();part.setObjectId(userCommon.getId();part.setName(userCommon.getName();part.setObjectType(2);var receiver = sendMap2.get(new java.lang.Integer(userCommon.getId();if (receiver = null) sendMap2.put(new java.lang.Integer(userCommon.getId(), part);parts2.add(part);/在本步骤的所有后继连线中,找出需要进行控制的连线,设置相关参数for(var i=routes.iterator();i.hasNext();)var st = i.next();/如:找出需要控制的后继连线名称为“送核稿”(注意送核稿连线的过滤只能为“所有”)if (st.getTransitionName().equals(“送核稿”)/如:指定送核稿连线的对应的后继步骤的执行角色为parts2,用户在选择发送人时,只能从parts2中选择用户,从而达到过滤的作用。st.setParticipants(parts2);/如果需要设置自动选择parts2中的人,可以使用如下语句:/st.getRoleObjectItems().addAll(parts2);/如果需要将parts2中的人从送核稿连线对应的后继步骤中过滤掉parts2中的用户,可以使用如下语句:/st.getRejectedRoleObjectItems().addAll(parts2);/st.setFilter(-105);/0:所有;1:本股;2:本科;3:本处;4:本局;5:本厅;-101:流程所有处理人;-102:节点所有处理人;-103:节点最后处理人;-104:发送人;-105相关发送人;-106:流程启动者2.2.7 如何避免将公文发给自己的情况发生/流程节点:部门领导/节点属性:执行者过滤器/功能:将节点处理人从接收人中过滤掉,避免自己可以发给自己的情况发生/获取“部门领导”节点处理人信息var acts = new Array();actsacts.length = “部门领导”;var items = cessor.getWorkItemsByActivityNames(workItemVO.getFormSetInstId(),acts);var parts = new java.util.ArrayList();var sendMap = new java.util.HashMap();for(var i=0;iitems.size();i+)var item=items.get(i);var part=new P.excellence.platform.missive.vo.ParticipantVO();part.setObjectId(item.getReceiverId();part.setName(item.getReceiver();part.setObjectType(2);var receiver = sendMap.get(new java.lang.Integer(item.getReceiverId();if (receiver = null) sendMap.put(new java.lang.Integer(item.getReceiverId(), part);parts.add(part);/查找“部门领导”节点的后继连线,如果后继连线名称为“送承办科室”,/则将“部门领导”节点的处理人(其实就是本人)从“送承办科室”连线所指向的节点的执行者中过滤掉。/也就是避免发生自己送自己的情况发生。for(var i=routes.iterator();i.hasNext();)var st = i.next();if (st.getTransitionName().equals(“送承办科室”)st.getRejectedRoleObjectItems().addAll(parts);2.2.8 将节点中执行角色的单选改为多选/节点名称:办公室分办/节点属性:执行者过滤器/功能:将某步骤的单选改为多选。/描述:在流程设计时,节点“主办科室审批”的“外部jsp页面”中设置了“单选”;/ 如果是由节点“办公室分办”处理人送“主办科室审批”,可以选择多个接收人;否则,如果由其他节点送“主办科室审批”,只能选择一个接收人。for(var i=routes.iterator();i.hasNext();)var st = i.next();var tn=st.getTransitionName();/获取从本节点发出的连接的名称if (tn=”主办科室审批”)/获取后继步骤的地址本的控制方式,也就是节点的“外部jsp页面”中的字符串。var ext=st.getAddressBookExtension();/删除原来设计时的“单选”约束,用空串替换“单选”。送主办科室审批时,保证可以选择多个接收人st.setAddressBookExtension(ext.replaceAll(“单选”,”);2.2.9 如何将公文发给流程中指定节点的处理人/节点名称:局长/节点属性:执行者过滤器/功能:“局长”节点处理人通知时,只想通知流转中的“拟稿人”和“部门领导”两个节点的处理人,而不是所有节点处理人/获取需要通知的人员:“拟稿人”和“部门领导”节点的处理人var acts=new Array();actsacts.length=”拟稿人”;actsacts.length=”部门领导”;var items=cessor.getWorkItemsByActivityNames(workItemVO.getFormSetInstId(),acts);var parts=new java.util.ArrayList();var sendMap = new java.util.HashMap();for(var i=0;i0 & tn=”已阅”) i.remove(); else if (secId=0 & tn = “送办理”) i.remove(); if (secId0 & tn = “送秘书”) /送给各自的秘书st.getRoleObjectItems().add(part); 2.2.11 如何把表单中数据写入相关表中/把借款单数据存放到业务系统的借款单(loan)数据表中var data = new java.util.HashMap();data.put(“proposer”,formsetInstVO.getExt7();data.put(“loan_sum”,new java.lang.Integer(formsetInstVO.getExt26();data.put(“loan_demo”,formsetInstVO.getExt22();/插入数据库helper.sqlUtil.insert(“loan”,data);注:需要在数据库中有如下表:/*l 创建借款单表l proposer 申请人l loan_sum 借款金额l loan_demo借款事由 */create table loan(proposer varchar2(64),loan_sum numbe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Feruloylacetyl-CoA-feruloylacetyl-coenzyme-A-生命科学试剂-MCE
- Ezutromid-Standard-生命科学试剂-MCE
- 农发行潍坊市高密市2025秋招笔试综合模拟题库及答案
- 农发行滁州市凤阳县2025秋招笔试英文行测高频题含答案
- 农发行秦皇岛市抚宁区2025秋招笔试性格测试题专练及答案
- 固态电池在电动汽车充电基础设施2025年市场渗透率预测报告
- 2025年汽车行业汽车玻璃市场应用与技术创新分析
- 农发行宜春市上高县2025秋招笔试EPI能力测试题专练及答案
- 2025年氢能重卡商业化运营技术创新与电力设备运输报告
- 农发行资阳市安岳县2025秋招笔试热点题型专练及答案
- GB/T 23902-2021无损检测超声检测超声衍射声时技术检测和评价方法
- 邀请函模板完整
- 2020新译林版高中英语选择性必修二全册课文及翻译(英汉对照)
- 大学物理第14章光的衍射课件
- 家长会 课件(共44张ppt) 九年级上学期
- 钻孔灌注桩施工安全控制培训教材课件
- 福建省莆田市各县区乡镇行政村村庄村名明细
- 大班幼儿随访电访记录表内有内容
- 干细胞精品课件
- 太阳能路灯说明书完整版
- 中国老龄化社会的潜藏价值(中英)
评论
0/150
提交评论