使用引入插件干预数据,自定义校验信息原创
3人赞赏了该文章
3,278次浏览
编辑于2023年01月19日 10:36:04
1.需求背景
单据引入如何使用引入插件干预数据,查到一个基础资料的属性填充到另一个字段上,查询不到就返回自定义校验信息
单据元数据请查看附件,java插件代码请查看实现过程或者附件。
2.配置引入模板
3.Java代码
public class ImportBatchImportPlugin extends BatchImportPlugin { @Override protected ApiResult save(List<ImportBillData> rowdatas, ImportLogger logger) { Iterator<ImportBillData> it = rowdatas.iterator(); while(it.hasNext()){ ImportBillData data = it.next(); Map<String , Object> billData = data.getData(); JSONArray entryentity = (JSONArray) billData.get("ki5f_entryentity");//单据体 for (int i = 0; i < entryentity.size(); i++) { JSONObject entry = entryentity.getJSONObject(i); JSONObject material = entry.getJSONObject("ki5f_material");//物料 String number = material.getString("number");//物料.编码 QFilter qFilter = new QFilter("number", QCP.equals,number); DynamicObject bd_material = BusinessDataServiceHelper.loadSingle("bd_material", "id,name,baseunit", qFilter.toArray()); if(bd_material==null){ //返回校验信息 String validMsg = "物料.编码:" + number + "找不到对应的物料"; //有校验提示,校验不通过,记录日志,移除数据 logger.log(data.getStartIndex(), validMsg).fail(); it.remove(); }else{ entry.put("ki5f_name",number); //组装需要带出的基本单位(基础资料) JSONObject baseunit = new JSONObject(); baseunit.put("importprop","number"); baseunit.put("number",bd_material.getDynamicObject("baseunit").getString("number")); entry.put("ki5f_baseunit",baseunit); } } } // 调用缺省方法保存合法的数据 return super.save(rowdatas, logger); } }
4.效果图
4.1 没加插件效果图
4.2 加了插件效果图
4.3 加了插件,自定义校验信息效果图
5.链接
5.1 参考链接
5.2 相关链接
开发商标志不一致处理:https://developer.kingdee.com/article/127784023740974592?productLineId=29
引入单据+Java代码.zip(5.68KB)
赞 3
3人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读