EAS BOS后端代码调用BOTP生成下游单据(备忘)

2023-11-15

BOS开发再服务端调用BOTP生成目标单据,记录下

(自用备忘)

@Override
	protected void _audit(Context ctx, IObjectValue model) throws BOSException {
		try {
			this._submit(ctx, model);
		} catch (EASBizException e) {
			e.printStackTrace();
		}
		String pKString = this.getpkBysql(ctx, model);
		this.test1Totest2ByBOTP(ctx,model,pKString);
		
	} 
	/**
	 * 开始执行转换规则
	 * @param ctx 
	 * 		服务器上下文
	 * @param model
	 * 		IObkjectValue类型,通过这个接口可以获得一些单据中控件的值
	 * @param Pk
	 * 		通过向数据库查询得到的源单据主键
	 * @throws BOSException
	 */
	private void test1Totest2ByBOTP(Context ctx,IObjectValue model,String Pk) throws BOSException{
		//Test01Collection t1Coll = this.getTest01Collection(ctx);
		Test01Info t1Info=null;
		try {
			System.err.println((IObjectPK)new ObjectStringPK(Pk));
			 t1Info = this.getTest01Info(ctx, (IObjectPK)new ObjectStringPK(Pk));//通过主键获取原单据实体
		} catch (EASBizException e1) {
			e1.printStackTrace();
		}
		IBTPManager botManager = BTPManagerFactory.getLocalInstance(ctx);//获取转换规则管理器
		IBOTMapping botMapping = BOTMappingFactory.getLocalInstance(ctx);//获取转换规则接口
		
		EntityViewInfo ev = this.getEntityViewInfo("name", "test1Totest2"); //设置转换规则的过滤条件
		
		BOTMappingCollection bopMappingColl = null;
		try {
			bopMappingColl = botMapping.getBOTMappingCollection(ev); //获取转换规则的集合,其实就只有一个。
		} catch (BOSException e) {
			e.printStackTrace();
		}
		
		//构建idList的参数,原始对象的id
		String[] idList = new String[1];
		idList[0] = t1Info.getId().toString();	//将原单据值对象的ID放到一个数组中(后面方法用得到)
		
		Test02Info t2Info = new Test02Info();
		List list = new ArrayList(); //(后面方法用得到)
		SelectorItemCollection selector = null; //(后面方法用得到)
		BTPTransformResult result = null;
		
		try {
			result = botManager.transformForBotp(idList,
						new String[1],list,selector,
						t2Info.getBOSType().toString(),
						new ObjectUuidPK(bopMappingColl.get(0).getId().toString()), 
						t1Info.getBOSType().toString());
			if(result!=null){
			}
		} catch (BTPException e) {
			e.printStackTrace();
		}
		Test02Collection t2Coll = (Test02Collection)result.getBills();
//		BOTRelationCollection botRelColl = result.getBOTRelationCollection();
		t2Info = (Test02Info)t2Coll.getObject(0);
	}
	/**
	 * 使用类似于JDBC(可能是封装了JDBC)的方法向数据库查询原单据的字符串类型的主键
	 * 
	 * @param ctx
	 * 		服务器上下文
	 * @param model
	 * @return
	 * 		原单据主键
	 */
	private String getpkBysql(Context ctx,IObjectValue model){
		StringBuffer sql = new StringBuffer();
		sql.append("select FID from T_CUS_Test01 where FNumber = '"+model.get("number")+"'");
		IRowSet row = null;;
		try {
			row = com.kingdee.eas.util.app.DbUtil.executeQuery(ctx, sql.toString());
		} catch (BOSException e1) {
			e1.printStackTrace();
		}
		String pKString = null;
		try {
			while(row.next()){
				pKString = row.getString("FID");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return pKString;
	}
	/**
	 * 设置过滤条件
	 * @param filter1
	 * 	要查询的属性名字
	 * @param filter2
	 * 	属性名字的过滤条件
	 * @return
	 */
	private EntityViewInfo getEntityViewInfo(String filter1,String filter2){
		EntityViewInfo ev0 = new EntityViewInfo();
		FilterInfo filter = new FilterInfo();
		filter.getFilterItems().add(new FilterItemInfo("name","test1Totest2"));
		ev0.setFilter(filter);
		
		return ev0;
	}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EAS BOS后端代码调用BOTP生成下游单据(备忘) 的相关文章

  • 互斥机制之自旋锁(spinlock)

    一 基础 自旋锁 如果测试结果表明锁仍被占用 程序将在一个小的循环内重复这个 测试并设置 操作 即进行所谓的 自旋 1 定义自旋锁 spinlock t spin 2 初始化自旋锁 spin lock init lock 该宏用于动态初始化
  • 【论文笔记】Masked Autoencoders Are Scalable Vision Learners

    论文 论文标题 Masked Autoencoders Are Scalable Vision Learners 发表于 CVPR2021 论文链接 https arxiv org pdf 2111 06377 pdf 论文代码 https
  • WebGL学习系列-片元着色器简介

    前言 到目前为止 我们绘制过点 三角形 矩形等 但使用的都是单色系 之前曾经说过着色器的概念 着色器分为顶点着色器和片元着色器 我们一直在使用顶点着色器 而对片元着色器基本没有提及过 本小节将展开对片元着色器的简单介绍 彩色的点 之前提到过
  • Sybase IQ常用函数大全--杂项函数

    Sybase IQ常用函数大全 杂项函数 查询索引 COALESCE 函数 返回列表中的第一个非 NULL 表达式 IFNULL 函数 返回第一个非空值表达式或 NULL ISNULL 函数 返回参数列表中的第一个非 NULL 表达式的值
  • 笔记~【软件测试基础知识】——黑盒测试和白盒测试

    这里写目录标题 一 黑盒测试 二 白盒测试 一 黑盒测试 黑盒测试概述 黑盒测试也称功能测试或数据驱动测试 它已知产品所应具有的功能 通过测试来检测每个功能是否能够正常使用 主要针对软件界面和软件功能 在测试时 把程序看作一个不能打开的黑盒
  • cv::Mat的翻转和转置

    cv Mat的本质是矩阵 openCV对Mat类型的处理 实际上也是矩阵操作 这里给个小例子 介绍转置操作和翻转操作 这段代码受了 http www tuicool com articles emIr2u 的启发 原图 Mat m1 imr
  • 【数据预处理】Pandas缺失的数据处理

    目录 缺少数据基础 何时 为何 数据丢失 被视为 缺失 的值 日期时间 插入缺失数据 缺少数据的计算 Sum Prod of Empties Nans GroupBy中的NA值 清理 填写缺失数据 填充缺失值 fillna 用PandasO
  • flutter -- 自定义音乐播放器/视频播放器

    写在前头 flutter 自定义实现音乐播放的文章挺多的 但是在开发中还是碰见了超级无语的情况 没想到需求竟然要音频的1倍到2倍的播放倍速 我一度质疑这个功能的实际用途 但是既然提出来了 开发就得撅屁股实现 这里采用了第三方的视频播放器来实
  • 如何使用BurpSuite(后续)

    前面那篇文章是我前几天写的 我发现我把简单的问题弄得复杂了 今天我给大家再写一篇关于BurpSuite的使用 1 下载安装免费版或者收费版 这里就不演示了 2 运行软件 一直NEXT就可以 3 打开工具 此时拦截状态显示OFF 4 在打开的
  • Python中类成员变量与实例成员变量相互影响的原因超详细解释

    今天在看python学习手册时看到了两句话 一 第26章中 类对象提供默认行为 二 第26章中 实例对象是具体的元素 书中给的例子是这样的 但上网查了一下好像第二句话不是非常准确 如下面的文章 原文 https www jb51 net a
  • 优化算法学习(LM算法)

    文章目录 推荐书籍 理论理解 程序实现 ceres安装 代码 推荐书籍 建议学习 METHODS FOR NON LINEAR LEAST SQUARES PROBLEMS http www2 imm dtu dk pubdb views
  • Eclipse导入Maven项目,实在算得上是历经千辛万苦

    私下接触了一个项目 架构师那边用的是idea 并且是一个Maven项目 架构师说他那边idea可以自动将Maven项目转换为Web项目 但我已经习惯用Eclipse了 所以还需要自己动手试一试 这一试 一上午的时间算是过去了 尤其是中间遇到
  • 商品关联度分析(关联三度,附Python实战) 我的钱就是这么没的,不只有皮尔森系数的相关分析

    引言 上一年组织烧烤活动买食材时 我在超市的货架29买了一个烧烤架 然后到货架27买了瓶1 5L的可乐 最后在货架25找到了我需要的塑料小碗 今年再去那家超市的时候 特地再去烧烤架所在的货架查看了一下 看看有没有什么值得记录的灵感 果不其然
  • Mybatis处理枚举

    Springboot 集成 Mybatis 处理枚举 mybatis自带了两个处理枚举的 类 EnumTypeHandler EnumOrdinalTypeHandler 一个使用枚举的name 一个使用枚举的下标 做项目时 会节省数据库资
  • 业务逻辑漏洞总结

    业务逻辑漏洞总结
  • 纯前端实现excel表格导入导出

    前言 github https github com stardew516 以往做excel表格下载功能的时候 都是后端生成好表格后 存储在某个地方 然后给前端一个链接 前端使用a标签加download下载 或者使用node 其实纯前端也是
  • CSP 202209-1 如此编码

    答题 题目就是字多 include
  • ARIMA序列分析

    1 什么是平稳序列 stationary series 基本上不存在趋势的序列 各观察值基本上在某个固定的水平上波动或虽有波动 但并不存在某种规律 而其波动可以看成是随机的 2 ARMA模型 ARIMA的优缺点 优点 模型十分简单 只需要内
  • 关于谷歌浏览器安装油猴插件失败的解决方法

    今天拿到了一台二手电脑 刷完之后开始安装需要的程序 在给谷歌浏览器安装油猴插件的时候出现了很多错误 现在一一道来 希望对大家有所帮助 一 不知道如何找油猴插件 上某度搜了一下 都是exe执行文件 运行一下不知道会带来多少 兄弟姐妹 官网又没
  • 刷脸支付为高效便捷的生活这样应运而生

    科技让我们的生活更加便捷 没有人会拒绝更加高效便捷的生活 刷脸支付便是这样应运而生 拿我们的爷爷奶奶举例 他们并不精通手机 扫码支付对他们来说十分繁琐 甚至还没现金支付来的方便 因此刷脸支付便替他们解决了这一难题 不需任何操作 也无需记住密

随机推荐