KingDee根据当前登录用户信息,默认带出当前用户的部门 & 公司

这篇博客介绍了一个基于KingDee平台的动态表单插件实现。该插件在创建新数据时,能够自动填充当前登录用户的部门和公司信息。同时,当用户输入物料时,插件会自动搜索并填入物料的计量单位。通过`RequestContext`获取用户信息,使用`UserServiceHelper`和`OrgUnitServiceHelper`查询部门和公司,确保数据的正确填充。此外,插件还监听`propertyChanged`事件,实时更新物料的计量单位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.KingDee根据当前登录用户信息,默认带出当前用户的部门 & 公司

package erkai.idedemo.officeapp.formplugin;

import kd.bos.context.RequestContext;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.login.thirdauth.UserAccount;
import kd.bos.servicehelper.org.OrgUnitServiceHelper;
import kd.bos.servicehelper.user.UserServiceHelper;

import java.util.EventObject;
import java.util.Map;

/*
* AbstractFormPlugin :动态表单插件基类
* 已经实现了动态表单界面插件事件接口  IFormPlugin 和 IDataModelListener
* 自定义的动态表单界面插件,必须派生自此类
* */
public class DyBillDemoPlugin extends AbstractFormPlugin {
    //默认带出当前用户的部门 & 公司

    @Override
    public void afterCreateNewData(EventObject e) {
        //获取到当前用户的ID,通过上下文 获取当前用户的信息
        long userId = RequestContext.get().getCurrUserId();
        //获取用户姓名
        String userName = RequestContext.get().getUserName();
        //查询部门
        long userMainOrgId = UserServiceHelper.getUserMainOrgId(userId);
        //查询公司
        Map<String, Object> companyfromOrg = OrgUnitServiceHelper.getCompanyfromOrg(userMainOrgId);

        //所有的操作必须赋值为id,不能直接赋字符串

        this.getModel().setValue("kdec_applyorg",userMainOrgId);
        this.getModel().setValue("kdec_applicant",userId);
        this.getModel().setValue("org",companyfromOrg.get("id"));
    }

2.propertyChanged事件,根据当前填入物料,自动搜索物料的计量单位,并填入

@Override
    public void propertyChanged(PropertyChangedArgs e) {
        super.propertyChanged(e);

        /*
        * PropertyChangedArgs:含字段值改前后的内容
        *
        * 方法描述:
        *   getChangeSet()  返回发生改变的数据
        *   getProperty()   返回发生改变的字段p
        * */
        String name = e.getProperty().getName();
        ChangeData changeData = e.getChangeSet()[0];
        int rowIndex = changeData.getRowIndex();
        //如果是物料字段发生了变化
        if("kdec_materiel".equals(name)){
            /*
            * ChangeData:  含老数据和新数据
            *     private Object oldValue;
            *     private Object newValue;
            * */
            Object newValue = changeData.getNewValue();
            if(newValue != null){
                DynamicObject material = (DynamicObject) newValue;
                Object baseUnit = material.get("baseunit");
                getModel().setValue("kdec_unit",baseUnit,rowIndex);
            }
        }
    }
}
//kdec_unit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值