public String doJPrint(final PrintVO vo) {
String pano = seqBo.sequence(Seq.pano.name);
if (pano == null || pano.isEmpty()) {
return null;
}
final String lsqz = pano.substring(0, 8);
final int num = Integer.valueOf(pano.substring(8, pano.length()));
String sql = "{call proc_JPrintBarcode(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}";
return jt.execute(sql, new CallableStatementCallback<String>() {
@Override
public String doInCallableStatement(CallableStatement stmt)
throws SQLException, DataAccessException {
stmt.setString(1, vo.getCpph());
stmt.setString(2, vo.getZyy());
stmt.setTimestamp(3, new java.sql.Timestamp(
vo.getCrea().getTime()));
stmt.setDate(4, new java.sql.Date(vo.getScrq().getTime()));
stmt.setInt(5, vo.getBzq());
stmt.setString(6, Pklx.center.key);
stmt.setString(7, Pklx.small.key);
stmt.setInt(8, vo.getQuanta());
stmt.setString(9, vo.getPrno());
stmt.setString(10, vo.getPtype());
stmt.setInt(11, Pklx.center.len);
stmt.setString(12, vo.getPmark());
stmt.setString(13, vo.getDdno());
stmt.setString(14, vo.getDdnm());
stmt.setString(15, BStat.init.key);
stmt.setString(16, CodeConstant.SN_CPLB_HZP);
stmt.setString(17, lsqz);
stmt.setInt(18, num);
//下面设置存储过程的返回参数类型
stmt.registerOutParameter(19, Types.VARCHAR);
stmt.registerOutParameter(20, Types.VARCHAR);
stmt.registerOutParameter(21, Types.INTEGER);
stmt.registerOutParameter(22, Types.INTEGER);
stmt.execute();
//获得存储过程的返回值
return "{cprefix:\"" + stmt.getString(19) + "\",sprefix:\""
+ stmt.getString(20) + "\",startC:" + stmt.getInt(21)
+ ",startS:" + stmt.getInt(22) + "}";
}
});
}
下面的存储过程的描述:
ALTER PROCEDURE [dbo].[proc_JPrintBarcode]
--产品批号
@Cpph varchar(12),
--质检员
@Zyy varchar(16),
--打印日期
@Crea datetime,
--生产日期
@Scrq datetime,
--保质期年份
@Bzq int,
--中包包装类别
@CPklx varchar(5),
--小包包装类别
@SPklx varchar(5),
--打印数量
@Quanta int,
--打印产品编号
@Prno varchar(64),
--普通标签或特殊标签
@Ptype varchar(4),
--标签流水号长度
@Len int,
--特殊标签号码标记
@Pmark varchar(5),
--打印者编号
@Ddno varchar(3),
--打印者名称
@Ddnm varchar(16),
--标签状态
@Stat varchar(6),
--化妆品
@Hzp varchar(6),
--操作流水号前缀
@Lsqz varchar(8),
--操作流水号
@Num int,
--
@CPrefix varchar(16)='' output,
--
@SPrefix varchar(16)='' output,
--中包打印标签开始产品序号
@StartC int='' output,
--小包打印标签开始产品序号
@StartS int='' output
AS
BEGIN
.......