学习心得7

一、调用webservice接口新增报错逻辑梳理

1.初始化数据源、集团、用户
private void init(){
InvocationInfoProxy.getInstance().setUserDataSource(getEnvInfo(“datasource”));
InvocationInfoProxy.getInstance().setGroupId(getEnvInfo(“groupid”));
InvocationInfoProxy.getInstance().setUserId(getEnvInfo(“userid”));
}

2.new一个存放状态码和提示信息的对象

3.new一个jsonvo存放json中的表头和表体信息
CksqdJson jsonvo = new Gson().fromJson(jsonInfo, CksqdJson.class);

4.new一个aggvo、一个headvo以及一个bvoslist用来接收jsonvo中的数据

5.处理标记(如果标记存在则不允许新增)

6.给headvo赋默认值,把jsonvo中的表头信息传给headvo,headvo的状态设置为NEW

7.将headvo中的编码翻译为主键
SuperVOUtil.execFormulaWithVOs(new KfcksqdVO[]{headvo}, new String[]{
“personnel->getcolvalue(bd_psndoc,pk_psndoc,code,personnel)”,
“department->getcolvalue(org_dept,pk_dept,code,department)”
});

8.把赋完值的headvo传给aggvo

9.循环把jsonvo中的表体赋值给bodyvo(包括计算的字段),bodyvo的状态设置为NEW,将赋完值的bodyvo添加到bvoslist集合中

10.将bodyvo中的编码翻译为主键

11.把bvolist转换为数组,然后传给aggvo

12.调用新增保存的接口

13.设置状态码和提示信息

二、调用webservice接口删除回写逻辑梳理

1.初始化数据源、集团、用户
private void init(){
InvocationInfoProxy.getInstance().setUserDataSource(getEnvInfo(“datasource”));
InvocationInfoProxy.getInstance().setGroupId(getEnvInfo(“groupid”));
InvocationInfoProxy.getInstance().setUserId(getEnvInfo(“userid”));
}

2.new一个存放状态码和提示信息的对象

3.接收json中的标记字段
JSONObject jsonObject = JSONObject.parseObject(jsonInfo);
String flag = jsonObject.getString(“flag”);

4.通过标记查询该条记录的主键

5.通过主键查询该条记录对应的aggvo
BillQuery billQuery = new BillQuery< AggKfcksqdVO>( AggKfcksqdVO.class);
AggKfcksqdVO[] cksqdvos = billQuery.query(new String[]{listpk});

6.调用删除回写的接口

7.设置状态码和提示信息

8.注意事项:
8.1JSONObject导下面的这个包
import com.alibaba.fastjson.JSONObject;

8.2将json转成aggvo时用到的方法
方法一:jsonvo里面只能是字符串类型的
CksqdJson jsonvo = new Gson().fromJson(jsonInfo, CksqdJson.class);
方法二:param里面可以是任意类型的
GsonBuilder gsonBuilder = new GsonBuilder();
UFDataTypeDeserializer ufDeserializer = new UFDataTypeDeserializer();
gsonBuilder.registerTypeAdapter(UFDateTime.class, ufDeserializer);
gsonBuilder.registerTypeAdapter(UFDate.class, ufDeserializer);
gsonBuilder.registerTypeAdapter(UFBoolean.class, ufDeserializer);
gsonBuilder.registerTypeAdapter(UFDouble.class, ufDeserializer);
gsonBuilder.registerTypeAdapter(UFTime.class, ufDeserializer);
gsonBuilder.registerTypeAdapter(UFLiteralDate.class, ufDeserializer);
CksqdJson param = gsonBuilder.create().fromJson(jsonInfo.toString(),CksqdJson.class);

8.3sql语句中的exists用法
EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False

8.4json格式校验的网址
https://www.bejson.com/

8.5在调用接口生成单子的时候,需要把新增的表头表体的vo状态变为new
headvo.setStatus(VOStatus.NEW);
bvo.setStatus(VOStatus.NEW);

三、调用webservice接口传入单据日期,传出该单据日期下的所有出库申请单的单据号、单据日期、人员、部门(json格式)逻辑梳理

1.初始化数据源、集团、用户
private void init(){
InvocationInfoProxy.getInstance().setUserDataSource(getEnvInfo(“datasource”));
InvocationInfoProxy.getInstance().setGroupId(getEnvInfo(“groupid”));
InvocationInfoProxy.getInstance().setUserId(getEnvInfo(“userid”));
}

2.new一个存放状态码、提示信息和要传出数据的数组的对象
public class ResultParam1 {
private String code;
private String message;
private E[] datas;
}

3.接收json中的单据日期字段
JSONObject jsonObject = JSONObject.parseObject(jsonInfo);
String date = jsonObject.getString(“date”);

4.写sql语句查询该单据日期下的所有出库申请单的单据号、单据日期、人员、部门(包括人员和部门字段的翻译)

5.如果sql查询到的数据为空,返回错误信息

6.如果sql查询到的数据不为空,新建一个List存放要传出数据的数组

7.for循环把sql查出来的数据赋给传出数据的对象,然后添加到list集合中

8.返回查询正确信息和查询出来的json数据

四、问题汇总

1.通过字段查主键,主键查aggvo的方法,如果只是用到表头的信息就不要用这种方法获取里面的字段,用sql查询语句直接获取里面的字段就可以,这样可以省去查询表体数据的时间。

2.for循环里面一定不要写数据库查询语句,因为打开数据库关闭数据库很耗时间,不然查询效率会特别低。

3.调用接口新增保存时,jsonvo和元数据的字段名要保持一致。

4.接口那边传过来的字段类型不能乱改,接口那边是数值型,jsonvo这边也应该是BigDecimal或者UFDouble。

5.调用外部接口时一定要初始化数据源、集团、用户,这一步相当于模拟登录。

五、问题汇总

1.eclipse中clean的作用
eclipse —>project ----->clean 选项
将工程中的.class文件删除,同时重新编译工程(Java文件),类似于jbuild中的rebuild

2.在写新增保存接口时,前端不可编辑的字段也要传

3.查询详情接口和新增保存接口要传入的参数基本一致,自定义参照字段除外

4.自定义参照字段在写新增保存接口的时候只传主键就可以,在写查询详情接口的时候要返回一个参照对象(id、code、name),要通过id把code和name查询出来,然后封装到参照对象里面返回

5.在做接口的时候要一份测试用例,写开发方案的时候还要用到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和安韩Pro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值