主要介绍列表型的档案的方法调用过程。
在NC列表档案节点中,新增记录时会调用PlanperiodAddLineAction类中的setDefaultData方法设置列的默认值,
public class PlanperiodAddLineAction extends BatchAddLineAction {
private static final long serialVersionUID = 1L;
@Override
protected void setDefaultData(Object obj) {
super.setDefaultData(obj);
PlanPeriodVO baseDocVO = (PlanPeriodVO) obj;
baseDocVO.setPk_group(this.getModel().getContext().getPk_group());//设置集团,这里设置为当前登录用户所属集团
baseDocVO.setCreator(this.getModel().getContext().getPk_loginUser());//设置创建者,这里设置为当前登录用户
long currentTime = System.currentTimeMillis(); //获取系统当前时间
UFDateTime creationTime = new UFDateTime(currentTime);
baseDocVO.setCreationtime(creationTime);//设置创建时间
}
}
然后再通过调用BodyAfterEditHandler类里面的编辑后事件handleAppEvent方法,设置新增的行的属性,点击保存时,
new 一个 BatchOperateVO调用构造方法:
public BatchOperateVO() {
addObjs = null;
delObjs = null;
updObjs = null;
addIndexs = null;
updIndexs = null;
delIndexs = null;
}
BatchOperateVO类的属性:
private Object addObjs[];
private Object delObjs[];
private Object updObjs[];
private int addIndexs[];
private int updIndexs[];
private int delIndexs[];
拿到当前的VO
public BatchOperateVO getCurrentSaveObject()
{
Object newAddObj[] = newRows.toArray();//将新增行集合转换成数组
Object delObj[] = getDeleteRows();//删除
Object updObj[] = getUpdRows();//修改
int addIndexs[] = new int[newRows.size()];//声明动态长度的数组,长度为newRows.size()
int updIndexs[] = new int[updRows.size()];
for(int i = 0; i < newRows.size(); i++)
addIndexs[i] = rows.indexOf(newRows.get(i));//给新增的行,即数组赋值
for(int i = 0; i < updRows.size(); i++)
updIndexs[i] = findBusinessDataIndex((String)updRows.get(i), rows);
BatchOperateVO vo = new BatchOperateVO();//实例化一个BatchOperateVO
vo.setAddObjs(newAddObj);//设置值
vo.setDelObjs(delObj);
vo.setUpdObjs(updObj);
vo.setAddIndexs(addIndexs);//设置值,即新增恒行下标
vo.setUpdIndexs(updIndexs);
vo.setDelIndexs(getDelIndexs(delIndexs));
return vo;//返回当前VO
}