2、 系统环境变量有问题
排除办法:
运行cmd然后选择对应的系统盘,将bat文件丢进cmd命令窗口中,如果提示java不是内部命令,可能出错的就是java_home配置有问题,如果可以运行,打开bat如果还是秒退,可能就是系统环境变量有问题
解决办法:
1、 java_home配置有问题的话
右键点击sysconfig编辑
在if上面添加set JAVA_HOME=nc代码中的ufjdk路径或者 java的安装目录
2、 环境变量有问题的话
打开我的电脑-属性-高级-环境变量-path-变量值
将下面的变量值添加在原变量值的前面
%SystemRoot%\system32%SystemRoot%%SystemRoot%\System32\Wbem%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\
右边标记的是原系统变量值,将上述变量复制到它的前面确定保存即可
3、 服务器操作系统版本不匹配
当NC633以上版本装在Windows2003上时,由于版本问题,2003操作系统无法识别对应的cmd命令
解决办法:将NC63版本的ufjdk文件夹整个复制到NC63版本中,替换掉原系统中的ufjdk文件即可
分客户端和服务端来考虑,如果仅有一台客户端是这样的问题,基本可以锁定是客户端电脑内存或者硬盘的问题(特别古董的电脑还有其他的问题)。如果是全部客户端电脑都存在这个问题,基本可以锁定是服务器问题,这个要进行服务器监测才能有结论。从a功能跳转到b功能,并且把a功能的部分数据带到b功能初始化界面,包括常规txt文本内容,和参照内容,以及下来框内容的初始化。
1.a功能跳转到b功能并传值(inspectReportVO ),如下图:
public void doAction(ActionEvent e) throws Exception {
if (getModel().getSelectedData() != null) {
//获取当前表单数据
AggEarmPerpReportVO inspectReportVO = (AggEarmPerpReportVO) getModel().getSelectedData()
//跳转到付款结算录入功能
FuncRegisterVO funcRegisterVO = WorkbenchEnvironment.getInstance().getFuncRegisterVO("36070PBR")
FuncNodeLauncher.openFuncNode(funcRegisterVO.getFuncode(), String.valueOf(5), new AggEarmPerpReportVO[]{inspectReportVO})
}
}
2.给b功能增加配置文件,并且修改初始化监听配置
增加配置文件
3.监听类实现,其中包括参照设值,下拉框设值,文本框设值赋初值
package nc.ui.cmp.bill
import java.util.HashMap
import java.util.Map
import java.util.Vector
import javax.swing.event.ChangeEvent
import javax.swing.table.TableColumnModel
import nc.bs.dao.DAOException
import nc.bs.framework.common.NCLocator
import nc.funcnode.ui.FuncletInitData
import nc.ui.cmp.bill.actions.CmpBillBodyAddLineAction
import nc.ui.cmp.pub.itf.IPaymentStatementService
import nc.ui.pub.beans.MessageDialog
import nc.ui.pub.beans.UIComboBox
import nc.ui.pub.beans.UIRefPane
import nc.ui.pub.bill.BillCellEditor
import nc.ui.pub.bill.BillItem
import nc.ui.pub.bill.BillScrollPane.BillTable
import nc.ui.uif2.UIState
import nc.ui.uif2.model.AbstractAppModel
import nc.vo.hrwa.earmperpreport.AggEarmPerpReportVO
import nc.vo.hrwa.earmperpreport.EarmPerpReportBVO
public class AggEarmPerpReportInitListener extends CmpPayRelationQueryDataListener{
private AbstractAppModel model
private CmpBillBodyAddLineAction addLineAction
@Override
public void initData(FuncletInitData data) {
if (data != null &&data.getInitData() instanceof AggEarmPerpReportVO[]) {
super.initData(null)
// 如果一个节点已经打开并且正在编辑数据, 默认不再打开其他的数据
if (UIState.EDIT.equals(this.getModel().getUiState()) || UIState.ADD.equals(this.getModel().getUiState())) {
MessageDialog.showErrorDlg(getModel().getContext().getEntranceUI(),"错误","有未保存的数据,请先保存或取消!")
return
}
this.getModel().setUiState(UIState.ADD)
handleChange(data)
} else {
super.initData(data)
}
}
private void handleChange(FuncletInitData data) {
if (data.getInitData() instanceof AggEarmPerpReportVO[]) {
AggEarmPerpReportVO[] aggEarmPerpReportVO = (AggEarmPerpReportVO[])data.getInitData()
//模拟触发组织改变后事件
orgChangeEvent(aggEarmPerpReportVO[0])
//处理表头字段
headSetValue()
EarmPerpReportBVO[] bvos = (EarmPerpReportBVO[])aggEarmPerpReportVO[0].getChildrenVO()
//模拟触发卡片编码改变后事件
cardCodeChangeEvent(bvos, aggEarmPerpReportVO[0].getParentVO().getPk_org())
}
}
private void headSetValue() {
BillItem[] billItem = getBillFormEditor().getBillCardPanel().getHeadShowItems()
for(BillItem i : billItem){//设置交易对象类型为人员【文本框设值】
if("LBL_objecttype".equals(i.getLabelName())){
i.setValue(3)//0客户,1供应商,2部门,3人员,4散客
}
}
}
@SuppressWarnings("all")
private void cardCodeChangeEvent(EarmPerpReportBVO[] bvos,String pk_org) {
for(int y = 0y <bvos.lengthy++){【表体,多行的情况下进行循环增行和设值】
if(y+1 <bvos.length){
//子表表格增加一行
getAddLineAction().doAction()
}
//获取当前表格
BillTable table = (BillTable)getBillFormEditor().getBillCardPanel().getBillTable()
//获取列model
TableColumnModel tableColumnModel = table.getColumnModel()
Map queryMap = new HashMap()
Map resutlPsndocMap = new HashMap()
IPaymentStatementService service = NCLocator.getInstance().lookup(IPaymentStatementService.class)
try {
//查询薪资项目名称并初始化到单元格
queryMap.put("sql", "select name from wa_classitem where pk_wa_classitem='" + bvos[y].getPk_item() + "'")
Map resutlMap = service.queryMap(queryMap)
//设置普通单元格的值,薪资项目名称
table.setValueAt(resutlMap.get("name"), y, tableColumnModel.getColumnIndex("薪资项目"))
//查询用户卡3信息,后续将卡3信息初始化到银行卡信息列
queryMap.put("sql", "select distinct accnum, accname,t3.name as bankname,t3.code pk_bankdoc from bd_psnbankacc t1, bd_bankaccbas t2,bd_bankdoc t3 where t1.pk_bankaccbas = t2.pk_bankaccbas and t2.pk_bankdoc = t3.pk_bankdoc and t1.pk_psndoc = '" + bvos[y].getPk_psndoc() + "'")
resutlPsndocMap = service.queryMap(queryMap)
} catch (DAOException e) {
e.printStackTrace()
}
//薪资项目编码【文本框设值】
table.setValueAt(bvos[y].getPk_item(), y, tableColumnModel.getColumnIndex("薪资项目编码"))
//付款原币金额
table.setValueAt(bvos[y].getItemvalue(), y, tableColumnModel.getColumnIndex("付款原币金额"))
//付款组织本币金额
table.setValueAt(bvos[y].getItemvalue(), y, tableColumnModel.getColumnIndex("付款组织本币金额"))
//设置组织本币汇率
int curr = tableColumnModel.getColumnIndex("组织本币汇率")
if(y == 0){
table.setValueAt(1.00, y, curr)
}
//参照人员所属的列【参照设值】
int staffColumn = tableColumnModel.getColumnIndex("人员")
BillCellEditor staffCellEditor = ((BillCellEditor) table.getCellEditor(y, staffColumn))
UIRefPane staffCardRef = ((UIRefPane) ((BillCellEditor) table.getCellEditor(y, staffColumn)).getComponent())
//设置参照引用单元格的值,人员
Vector<Vector<Object>>staffRefValue = new Vector<>()
Vector staffvt = staffCardRef.getRefModel().getData()
for(int i = 0i <staffvt.size()i++){
Vector staffVector = (Vector) staffvt.get(i)
//比较主键,相同则设置默认的参照值
if(bvos[y].getPk_psndoc().equals(staffVector.get(10))){
staffRefValue.add(staffVector)
break
}
}
table.setEditingRow(y)
//需要两层vector,否则后续会报错
staffCardRef.getRefModel().setSelectedData(staffRefValue)
ChangeEvent staffChangeEvent = new ChangeEvent(staffCellEditor)
table.setCellEditor(table.getCellEditor(y, staffColumn))
table.setEditingColumn(staffColumn)
table.editingStopped(staffChangeEvent)
//交易对象类型
int transTypeColumn = tableColumnModel.getColumnIndex("交易对象类型")
BillCellEditor transTypeCellEditor = ((BillCellEditor) table.getCellEditor(y, transTypeColumn))
UIComboBox transTypeCardRef = ((UIComboBox) ((BillCellEditor) table.getCellEditor(y, transTypeColumn)).getComponent())
if(transTypeCardRef.getSelectdItemValue() == null || "".equals(transTypeCardRef.getSelectdItemValue())){
transTypeCardRef.setSelectedIndex(4)//设置默认值为"人员"
}
//设置参照引用单元格的值,交易对象类型
table.setEditingRow(y)
ChangeEvent transTypeChangeEvent = new ChangeEvent(transTypeCellEditor)
table.setCellEditor(table.getCellEditor(y, transTypeColumn))
table.setEditingColumn(transTypeColumn)
table.editingStopped(transTypeChangeEvent)
//账号信息参照设置
int accountColumn = tableColumnModel.getColumnIndex("收款银行账号")
BillCellEditor accountCellEditor = ((BillCellEditor) table.getCellEditor(y, accountColumn))
UIRefPane accountCardRef = ((UIRefPane) ((BillCellEditor) table.getCellEditor(y, accountColumn)).getComponent())
//设置参照引用单元格的值,账号信息
Vector<Vector<Object>>accountRefValue = new Vector<>()
String psnBankaccName = "个人银行账户"
accountCardRef.setRefNodeName(psnBankaccName)
accountCardRef.getRefModel().setPk_org(pk_org)
Vector accountVt = accountCardRef.getRefModel().getData()
for(int i = 0i <accountVt.size()i++){
Vector accountVector = (Vector) accountVt.get(i)
//比较主键,相同则设置默认的参照值
if(resutlPsndocMap.get("accnum") != null &&resutlPsndocMap.get("accnum").equals(accountVector.get(0))){
accountRefValue.add(accountVector)
break
}
}
table.setEditingRow(y)
accountCardRef.getRefModel().setSelectedData(accountRefValue)
ChangeEvent accountChangeEvent = new ChangeEvent(accountCellEditor)
table.setCellEditor(table.getCellEditor(y, accountColumn))
table.setEditingColumn(accountColumn)
table.editingStopped(accountChangeEvent)
}
}
private void orgChangeEvent(AggEarmPerpReportVO aggEarmPerpReportVO) {
//设置组织默认值
UIRefPane orgRefPane= (UIRefPane)getBillFormEditor().getBillOrgPanel().getComponents()[1]
orgRefPane.setPk_org(aggEarmPerpReportVO.getParentVO().getPk_org())
}
public AbstractAppModel getModel() {
return model
}
public void setModel(AbstractAppModel model) {
this.model = model
}
public CmpBillBodyAddLineAction getAddLineAction() {
return addLineAction
}
public void setAddLineAction(CmpBillBodyAddLineAction addLineAction) {
this.addLineAction = addLineAction
}
}
4.开发功能完成后,测试过程中发现,增加模板分配给用户,使用新用户使用跳转功能时,无法正常跳转
经过排查原因是配置新模板后,没有重启导致的。注意:配置新的模板,新增加的功能也需要一并配置上。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)