package com.vci.client.uif.actions.client;
|
|
import java.util.HashMap;
|
import java.util.List;
|
|
import com.vci.client.bof.ClientBusinessObject;
|
import com.vci.client.bof.ClientLinkObject;
|
import com.vci.client.ui.swing.components.VCIJDialog;
|
import com.vci.client.ui.swing.components.VCIJDialog.DialogResult;
|
import com.vci.client.uif.engine.client.objopt.ObjectAddEditDialog;
|
import com.vci.client.uif.engine.common.ClientLOAndBOData;
|
import com.vci.client.uif.engine.common.IDataNode;
|
import com.vci.mw.ClientContextVariable;
|
|
/**
|
* 编辑保存按钮
|
*
|
* 现在调整BO或LO对象的设置属性值在编辑窗口中进行
|
* 在Action中不再执行校验吗,设置等操作
|
* @author VCI-STGK006
|
*
|
*/
|
public class EditLinkSaveAction extends DoseNotSelectDataAction {
|
|
/**
|
* 方法集合
|
*/
|
private UIFUtils operation =
|
new UIFUtils();
|
|
/**
|
* 判断是创建有link属性的BO,还是创建没有link属性的BO
|
* 0:无link属性(业务类型),1:有link属性(有链接属性)
|
*/
|
private int operationType = 0;
|
|
@Override
|
public String getKey() {
|
return "editlinksave";
|
}
|
|
@Override
|
public boolean checkHasRight(){
|
return true;
|
}
|
|
@Override
|
public boolean doPost() {
|
try {
|
//用户输入属性 期中以t_oid开始的为业务对象属性,其它为link对象属性
|
//获得按钮所属窗口,此窗口一定要是一个弹出窗口
|
//并且窗口的类型一定是ObjectAddEditDialog
|
ObjectAddEditDialog oaed = null;
|
VCIJDialog dialog = getOwnerDialog();
|
if(dialog instanceof ObjectAddEditDialog){
|
oaed = (ObjectAddEditDialog) dialog;
|
}
|
if(oaed == null){
|
return false;
|
}
|
//获得使用的表单类型
|
operationType = oaed.getTypeFlag();
|
//获得用户编辑数据
|
Object obj = getDataModel().getRootObject();
|
if(obj == null){
|
return false;
|
}
|
|
//根据表单类型判断要执行的操作
|
ClientLinkObject clo = null;
|
ClientBusinessObject to = null;
|
IDataNode idn = (IDataNode) obj;
|
if(this.operationType == 0){
|
//如果表单类型是0,表示编辑的是无属性的link
|
//获得to端对象
|
to = (ClientBusinessObject) idn.getMaterObject();
|
} else if(this.operationType == 1){
|
//编辑LO和BO
|
//如果表单类型是1,可以再Form中直接获得要创建的LO和BO对象
|
ClientLOAndBOData clbo = (ClientLOAndBOData) idn.getMaterObject();
|
List<ClientLinkObject> loList = clbo.getLoDatas();
|
if(loList.isEmpty()){
|
UIFUtils.showErrorMessage(ClientContextVariable.getFrame(),
|
"uifmodel.plm.uif.actions.createloerror", new Exception("系统异常:没有找到link对象"));
|
return false;
|
}
|
//在创建保存link中只会有一个LO对象
|
clo = loList.get(0);
|
to = clbo.getBOData(clo.getLinkObject().oid);
|
}
|
|
//设置link对象属性并修改link对象
|
boolean result = false;
|
//判断是否需要修改LO对象
|
if(this.operationType == 1){
|
result = operation.updateLinkObject(
|
ClientContextVariable.getFrame(), clo, null, new HashMap<String, String>());
|
if(!result){
|
UIFUtils.showMessage(ClientContextVariable.getFrame(),
|
"uifmodel.plm.uif.actions.updateError", "");
|
return false;
|
}
|
}
|
//上传文件
|
if(!UploadFile(oaed, to)){
|
//operation.showMessage(ClientContextVariable.getFrame(),
|
// "uifmodel.plm.uif.actions.createlinkerror");
|
//return false;
|
}
|
//设置业务对象属性并修改业务对象
|
result = operation.updateBusinessObject(
|
ClientContextVariable.getFrame(), to, new HashMap<String, String>());
|
//业务对象保存失败
|
if(!result){
|
return false;
|
}
|
|
// 调用后台保存数据
|
// 保存成功刷新UI
|
// add by xchao 2014.08.07 begin
|
// 取消调用 getDataModel().refresh(null); 解决数据修改后刷新时,数据重复显示的问题。
|
//getDataModel().refresh(null);
|
// add by xchao 2014.08.07 end
|
closeOwnerDailog(getOwnerDialog(), DialogResult.OK);
|
|
// 调用此按钮所在Dialog注册的回调函数
|
super.invokeOwnedDialogCallback();
|
return true;
|
} catch (Exception e){
|
UIFUtils.showErrorMessage(ClientContextVariable.getFrame(),
|
"uifmodel.plm.uif.actions.editloerror", e);
|
return false;
|
}
|
}
|
|
}
|