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