金蝶客商同步

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、实现功能点

1.客户审核通过时供应商完成新增,提交,审核。(批量操作)

二、关键点

1.涉及供应商提交审核权限

(public static final String ISHASRIGHT=“ishasright”

操作可选参数:已经验权,执行操作服务时,不需要再次验权)
代码如下:

OperateOption supplierOption = OperateOption.create();
supplierOption.setVariableValue(OperateOptionConst.ISHASRIGHT,String.valueOf(true));

2.提交,审核时,如供应商校验字段出问题弹出问题会中断操作(实际业务场景需要记录下来,但不影响后续数据的操作)

代码如下(示例):
public static final String IGNOREINTERACTION=“ignoreinteraction”

自动化处理,忽略操作交互信息
2.public static final String MUTEX_IGNORE_VALIDATION=“ignoreValidation”

网控检查: 忽略网络控制的校验器,即不走网络控制校验器

OperateOption supplierOption = OperateOption.create();
supplierOption.setVariableValue(OperateOptionConst.IGNOREINTERACTION,String.valueOf(true));
supplierOption.setVariableValue(OperateOptionConst.MUTEX_IGNORE_VALIDATION,String.valueOf(true));

因为涉及多次select数据库,所以在做操作之前先一次性查询出数据,转为map再次运用

List<Object> customerIds = new ArrayList<Object>();
        List<Object> supplierNumbers = new ArrayList<Object>();
        Map<String, DynamicObject> customerMapByNumber = new HashMap<String, DynamicObject>();
        for (DynamicObject bill : e.getDataEntities()) {
            customerIds.add(bill.getPkValue());
            supplierNumbers.add(bill.getString("number"));
            customerMapByNumber.put(bill.getString("number"),bill);
        }
        // 查询所有的客户
        DynamicObject[] customers = BusinessDataServiceHelper.load(customerIds.toArray(), MetadataServiceHelper.getDataEntityType("bd_customer"));

        // 客户转成map
        Map<Object, DynamicObject> customerMap = new HashMap<Object, DynamicObject>();
        for (DynamicObject customer : customers) {
            customerMap.put(customer.getPkValue(), customer);
        }

        //查询所有的客户关联分类
        DynamicObject[] customerDetailArr = BusinessDataServiceHelper.load("bd_customergroupdetail", "id,standard,group,customer" , new QFilter[]{new QFilter("customer.id", QCP.in, customerIds.toArray())});

        // 客户客户分类标准、分类转成map
        Map<String, DynamicObject> customerDetailMap = new HashMap<String, DynamicObject>();
        for(DynamicObject customerDetailObj: customerDetailArr){
            customerDetailMap.put(customerDetailObj.getDynamicObject("customer").getPkValue().toString(), customerDetailObj.getDynamicObject("group"));
        }

        // 查询客户分类
        DynamicObject[] customerGroupsArr = BusinessDataServiceHelper.load("bd_customergroup", "id,ki40_suppgroup", null);//客户分类单据体

        // 客户分类转成map
        Map<String, DynamicObject> customerGroupMap = new HashMap<String, DynamicObject>();
        for(DynamicObject customerGroupsObj: customerGroupsArr){
            customerGroupMap.put(customerGroupsObj.getPkValue().toString(), customerGroupsObj.getDynamicObject("ki40_suppgroup"));
        }

        //查询所有供应商标准
        DynamicObject[] supstandGroupArr = BusinessDataServiceHelper.load("bd_suppliergroup", "id,standard",null);
        Map<String, DynamicObject> supplierGroupMap = new HashMap<String, DynamicObject>();
        for(DynamicObject supstandGroupObj: supstandGroupArr){
            supplierGroupMap.put(supstandGroupObj.getPkValue().toString(), supstandGroupObj.getDynamicObject("standard"));
        }

        //查询所有客户银行单据体
        DynamicObject[] customerbankEntiry = BusinessDataServiceHelper.load( "bd_customer", "id,entry_bank,bankaccount,accountname,iban,bank,currency,isdefault_bank",new QFilter("id", QCP.in, customerIds.toArray()).toArray());
        //客户-银行转map
        Map<Object, DynamicObjectCollection> customerBankMap = new HashMap<Object, DynamicObjectCollection>();
        for(DynamicObject bankObj: customerbankEntiry){
            customerBankMap.put(bankObj.getString("id"),bankObj.getDynamicObjectCollection("entry_bank"));
        }
        // 查询对应供应商
        DynamicObject[] suppliers = BusinessDataServiceHelper.load("bd_supplier", "id,number", new QFilter("number", QCP.in, supplierNumbers.toArray()).toArray());

        List<Object> idsList = new ArrayList<Object>();
        Map<Long,String> supNumByIdMap = new HashMap<Long,String>();
        for (DynamicObject pkArray : suppliers) {
            idsList.add(pkArray.getPkValue());
            supNumByIdMap.put((Long) pkArray.getPkValue(),pkArray.getString("number"));
        }
        // 查询所有的供应商字段
        DynamicObject[] suppliersAll = BusinessDataServiceHelper.load(idsList.toArray(), MetadataServiceHelper.getDataEntityType("bd_supplier"));

        // 供应商转map
        Map<Object, DynamicObject> supplierMap = new HashMap<Object, DynamicObject>();
        for (DynamicObject supplier : suppliersAll) {
            supplierMap.put(supplier.getString("number"), supplier);
        }

总结

提示:这里对文章进行总结:
例如:以上是我在做客商同步的时候特别需要注意的小tips第一次写的时候老是碰到各种小问题,改了很多版本心态逐渐崩溃

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值