/** * 在此处简要描述此类的功能 * *
* 在此处添加此类的描述信息 *
* * Create on 2006-4-6 16:00:51 * * @author ufsoft * @version Your Project Ver5.0 @since V5 */ public class QueryPlugin extends nc.bs.pfxx.plugin.AbstractPfxxPlugin { // 2.查询此单据是否已经被导入过,有三个方法,具体使用哪一个请参考方法说明javadoc // 1.得到转换后的VO数据,取决于向导第一步注册的VO信息 CommonQueryVO resvo = (CommonQueryVO) vo; KeyValueVO[] keyValueVOs = resvo.getConditions(); int n = keyValueVOs.length; String[] keys = new String[n]; for (int i = 0; i < n; i++) { } keys[i] = keyValueVOs[i].getValue(); /** * 将由XML转换过来的VO导入NC系统。业务插件实现此方法即可。* 请注意,业务方法的校验一定要充分 * * @param vo * 转换后的vo数据,在NC系统中可能为 * 。 * @param swapContext * 各种交换参数,公司,帐簿,接受方,发送方,主体帐簿等等 * @param aggvo * 辅助信息vo * @return * @throws BusinessException * @date 2006-1-11 */ protected Object processBill(Object vo, ISwapContext swapContext, ValueObject,SuperVO,AggregatedValueObject,IExAggVO等 AggxsysregisterVO aggvo) throws BusinessException { 第 18 页
// 1) String vopk = PfxxPluginUtils.queryBillPKBeforeSaveOrUpdate(ufvo); // 2) String vopk = // // 3) String vopk = // PfxxPluginUtils.queryBillPKBeforeSaveOrUpdate(ufvo,resvo // .getPk_corp(),resvo.getPk_glogBook()); PfxxPluginUtils.queryBillPKBeforeSaveOrUpdate(ufvo,resvo.getPk_corp); // 3. 如果单据设置有辅助信息,xsysvo为用户配置的具体辅助信息 // 4.如果此单据没有导入过,那么准备保存新单据,保存单据前请进行必要的数据检查,并// TODO Logger.info(\如果此单据没有导入过,保存新单据...\ // 5.如果此单据已经导入过,请调用// ufvo)检查单据是否允许更新 // 如果不允许更新,此方法会抛出业务异常 // TODO Logger.info(\如果单据已经导入过则进行单据更新...\ // !!!!测试转换后的单据数据,正式代码里请删除 // Document doc = XMLUtil.getNewDocument(); // new com.thoughtworks.xstream.XStream().toXML(resvo,doc); // try // { // FileUtils.writeDocToXMLFile(doc, // PfxxServerSidePathVocabulary.EXPORTBILLS_PATH+ // \ // } catch (java.io.IOException e) // { // e.printStackTrace(); // } // !!!!测试代码结束 // !!!!查询NC数据,通过回执返回到外系统示例代码开始 Document resdoc = null; /* 获取导出服务 */ IPFxxEJBService runner = PfxxUtils.lookUpPFxxEJBService(); try { 给出明确的业务异常... // PfxxPluginUtils.checkBillCanBeUpdate(UfinterfaceVO // /* 查询需要导出的VO,这里查全部,实际应用应该通过XML传递条件过来进行查询 */ IAccsubjDataQuery queryService = 第 19 页
NCLocator.getInstance().lookup(IAccsubjDataQuery.class); // Collection col = (new // AccsubjVO[] vos = queryService.queryAccsubjVosByPks(keys); nc.bs.dao.BaseDAO()).retrieveByClause(CommonQueryVO.class,\ /* 实例代码仅演示ValueObject,如果是AGGVO请修改 */ resdoc = runner.exportBills(vos, swapContext.getAccount(), //get ids from document and insert to db String[] docids = new String[vos.length]; NodeList int total=basdocList.getLength(); for(int i=0;i } } // 7.准备返回值,此函数的返回值,最终会以字符串的形式返回给外系统, // 对于普通单据可以返回NC系统生成的PK值,对于凭证可能返回凭证号,具体视单据而定 // 对于查询插件要求返回org.w3c.dom.Node[]数组 或者org.w3c.dom.Node return resdoc; 回执结果