2018.6.8问题小结

今天完成样板工程GUI的基本功能,能够实现采购申请单的增删改查,现在来总结下这周完成的。。。

1.首先,整个的一个开发流程是,先依次建立好元数据,包括实体、关系、数据表、查询、视图、枚举。最好一开始就配置好其中的关联关系,否则后面运行时报错就麻烦了,又要发布,刷新java代码,可能还要重启服务器,总之就是一旦前面元数据的配置有问题,调试起来就特别麻烦。

配置元数据最初有个易出错的问题,那就是多重性和判断聚合(composition)还是关联(association),两个有关系的对象如果独立开来不能存在,或者说没有存在的意义,则为聚合关系;否则为关联关系。

2.配置好元数据之后就可以跳到java代码页面来编辑代码了,开发修改java代码的主要是修改3个java文件的代码:*EditUI.java、*ListUI.java、*ControllerBean.java。下面介绍下在*EditUI.java和*ListUI.java文件中几个重要的方法:

*EditUI.java:

1.

createNewData:创建一个新业务对象,在新增的时候被调用;可以在这里为业务对象赋默认值。

@Override
	protected IObjectValue createNewData() {

		ZxPurReqBillInfo objectValue = new ZxPurReqBillInfo();
		UserInfo currentUserInfo = SysContext.getSysContext().getCurrentUserInfo();

		// 填写制单人、最后修改人信息
		objectValue.setCreator(currentUserInfo);
		objectValue.setLastUpdateUser(currentUserInfo);
		try {
			Timestamp currentDate = SCMClientUtils.getServerDate();
			objectValue.setCreateTime(currentDate);
			objectValue.setReqTime(currentDate);
			objectValue.setLastUpdateTime(currentDate);
		} catch (Exception e) {
			handleException(e);
		}

		// 设置单据状态为保存
		objectValue.setBillState(ZxPurStateEnum.SAVE);

		return objectValue;
	}


2.

getBizInterface:获取列表对应实体的业务接口,以便调用业务方法。

@Override
	protected ICoreBase getBizInterface() throws Exception {
		return ZxPurReqBillFactory.getRemoteInstance();
	}

3.

onLoad:界面初始化事件。可以在此:
1、获取UI的上下文和初始化数据
2、设置控件风格
3、设置界面组件的状态

@Override
	public void onLoad() throws Exception {
		String cuId = SysContext.getSysContext().getCurrentCtrlUnit().getId().toString();
		FDCClientUtils.setPersonF7(prmtReqPerson, this, cuId, true);
		super.onLoad();

		initEntriesTable();

		// 处理编码规则
		setAutoNumberByOrg();

		if (this.getOprtState().equals(OprtState.ADDNEW)) {
			// 初始化新增界面时默认新增一行分录
			this.addLine(this.kdtEntrys);
		}

	}

4.

loadFields:将业务数据加载到控件。
@Override
	public void loadFields() {
		super.loadFields();

		// 填写分录的物料名称、规格型号
		for (int i = 0; i < this.kdtEntrys.getRowCount(); i++) {
			MaterialInfo materialInfo = (MaterialInfo) this.kdtEntrys.getRow(i).getCell(
					ENTRIES_MATERIAL).getValue();
			if (materialInfo != null) {
				// 由物料带出物料名称和规格型号
				this.kdtEntrys.getRow(i).getCell(ENTRIES_MATERIAL_NAME).setValue(
						materialInfo.getName());
				this.kdtEntrys.getRow(i).getCell(ENTRIES_MATERIAL_MODEL).setValue(
						materialInfo.getModel());
			}
		}
	}

5.

storeFields:从控件中获得最新的业务数据
@Override
	public void storeFields() {
		// TODO Auto-generated method stub
		super.storeFields();
	}

6.

createNewDetailData:增加分录
@Override
	protected IObjectValue createNewDetailData(KDTable table) {
		ZxPurReqBillEntryInfo info = new ZxPurReqBillEntryInfo();
		info.setEntryState(ZxPurStateEnum.SAVE);
		return info;
	}

*ListUI.java:

1.

getKeyFieldName:选择一个主键属性字段
@Override
	protected String getKeyFieldName() {
		// TODO Auto-generated method stub
		return "id";
	}

2.

getEditUIName:设置编辑页面
	@Override
	protected String getEditUIName() {
		// TODO Auto-generated method stub
		return ZxPurReqBillEditUI.class.getName();
	}

3.

getEditUIModal:修改编辑页面打开方式为NEWWIN
@Override
	protected String getEditUIModal() {
		return UIFactoryName.NEWWIN;
	}

4.

getMergeColumnKeys:分录合并
@Override
	public String[] getMergeColumnKeys() {
		String[] columns = new String[] { "number", "purchaseOrg.name", "supplier.name",
				"reqDept.name", "reqPerson.name", "description" };
		return columns;
	}


猜你喜欢

转载自blog.csdn.net/weixin_42386685/article/details/80627625
今日推荐