webservice接口调用存储过程返回失败

时间:2021-04-11 13:26:23

poka.cashman.timer.service.impl.PdaOperateServiceImpl - Method Name: cashBoxOutOrIn; cbInfo:JN00201503170;;0;;;;;;902000000|JN00201503170;;0;;;;;;902000000|JN00201503170;;0;;;;;;902000000|JN00201503170;;0;;;;;;902000000
2015-03-18 10:37:19,863 [WebContainer : 3] INFO  cn.poka.cashman.timer.service.impl.PdaOperateServiceImpl - getCashBoxList:
2015-03-18 10:37:19,863 [WebContainer : 3] INFO  cn.poka.cashman.timer.service.impl.PdaOperateServiceImpl - Message.code=26
2015-03-18 10:37:19,863 [WebContainer : 3] INFO  cn.poka.cashman.timer.service.impl.PdaOperateServiceImpl - Message.msg=失败
2015-03-18 10:37:19,863 [WebContainer : 3] INFO  cn.poka.cashman.timer.service.impl.PdaOperateServiceImpl - Message.params=

根据返回的code26,去查代码,按住ctrl+shift+R输入PDA查询,选则PdaOerateServiceImpl.java文件

找到相应的接口,看代码map = this.newCashboxInDao.cashBoxOutOrIn(cbInfo);选中newCashboxInDao按住ctrl+shift+R出现newCashboxInDaoImpl文件

查询调用的存储过程,回收钞箱入库,

显示* 回收钞箱入库 (non-Javadoc)

继续看代码String sql = "call P_box_recycle (?,?,?,?)";

查询存储过程p_box_recycle存储过程,看v_ret=26的sql语句

if v_flag = '0' then   注:在v_flag=0的情况下

--MODFI 20140923
 select COUNT(ATMNUM) into v_count from T_ATMPLANDETAIL where (CLEARSTATE = '0' OR CLEARSTATE IS NULL)
   and PLANNUM = v_plannum and PLANSTATE = '1';

把上述sql语句换成toad能执行的语句如下

select COUNT(ATMNUM)  from T_ATMPLANDETAIL where (CLEARSTATE = '0' OR CLEARSTATE IS NULL)
   and PLANNUM = 'JN00201503170' and PLANSTATE = '1';
下边是存储过程对上述条件的判断

if v_count > 0 then
    set v_ret = '26';
    goto GOTO_RET;
 end if;

问题是表t_atmplandetail表clearstate状态为0是清机,还没有加钞不能执行回收钞箱操作,为null还没有清机

所以返回26,失败

问题指向了清机操作失败了,看清机的存储过程

清机v_flag设定的值TRUE(1以上的数字),FLASE(0)