8.5开发环境生成凭证时老是提示单据被锁定,但是DBLock里查不到锁定信息。
后台提示插入T_BOT_DBLOCK表时FServer不能为空。现提供一种简单的解决方案。
在开发环境中继承类BTPManagerControllerBean
代码如下
package com.kingdee.eas.base.btp.app;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.kingdee.bos.BOSException;
import com.kingdee.bos.Context;
import com.kingdee.eas.util.app.DbUtil;
import com.kingdee.jdbc.rowset.IRowSet;
/**
* 改代码为了解决生成凭证时报 单据被锁定,但是又查询不到锁定的问题
* 请勿部署 请勿部署 请勿部署
* @author
*/
public class BTPManagerControllerBeanEx extends BTPManagerControllerBean {
private static final long serialVersionUID = 1L;
@Override
protected boolean _requestDBLock(Context ctx, String srcID)
throws BOSException {
String sql = "select FID from T_BOT_DBLOCK where FID = ?";
List params = new ArrayList();
params.add(srcID);
IRowSet result = null;
try {
result = DbUtil.executeQuery(ctx, sql, params.toArray());
} catch (BOSException e) {
e.printStackTrace();
return false;
}
if (result.size() > 0) {
return false;
}
sql = "insert into T_BOT_DBLOCK(FID,FUSER,FUSERALIAS,FDATE,FTHREADID,FSERVER) values(?,?,?,?,?,?)";
params.clear();
params.add(srcID);
params.add(ctx.getCaller().toString());
params.add(ctx.getUserName().toString());
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateTime = dateFormat.format(date);
params.add(dateTime);
String threadInfo = new StringBuilder().append(Thread.currentThread().toString()).append("_").append(Thread.currentThread().getId()).toString();
params.add(threadInfo);
// 此代码是报错的根源,查询不到属性值,为空报错
// params.add(System.getProperty(BOTPDBlockTools.EAS_INSTANCE_NAME));
params.add("eas"); // 此处是数据中心代码
try {
DbUtil.execute(ctx, sql, params.toArray());
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
}
推荐阅读