BOS开发环境生成凭证提示单据被锁定原创
金蝶云社区-RyeC
RyeC
2人赞赏了该文章 634次浏览 未经作者许可,禁止转载编辑于2021年07月20日 14:07:25

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 

 * @email 

 */

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;

}


}


图标赞 2
2人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!