for循环中的分批提交到数据库代码

来源:互联网 发布:mac视频播放器推荐 编辑:程序博客网 时间:2024/05/22 22:03
/**
* 现制卡方法
* @param cardMode 卡介质
* @param cardName 卡类型名称
* @param cardType 卡类型
* @param createBatchNo 制卡批次号
* @param cardvalue 面值
* @param cardvalue 需制卡数
* @return
*/
public boolean createCardMethod(TBlvcCardCreate tcc,TBlvcCardcreateDetail tcd){
logger.info("现制卡线程执行");
try {
List<TBlvcCardbackup> list=new ArrayList<TBlvcCardbackup>();
for(int i=0; i<tcd.getCreateQuantity(); i++){
String cardNo = dictionary.getDictionaryValue(MsgKeys.CRECARD_CODE)+StringUtil.pad(dcservice.getSequenceutils().getSequencefromPool().toString(), "l", 6, "0");//序列生成卡号
TBlvcCardbackup tcb=new TBlvcCardbackup();
tcb.setCardNo(cardNo);
tcb.setCardMode(tcc.getCardMode());
tcb.setCardName(tcc.getCardName());
tcb.setCardType(tcc.getCardType());
tcb.setCardstatus(Constants.CARDSTATUS_BLANKZKWC);
tcb.setCreateBatchNo(tcc.getCreateBatchNo());
tcb.setCardValue(tcd.getCardvalue());
list.add(tcb);
int num=i+1;
if(num==tcd.getCreateQuantity()||num%100==0){
int comitcount=100;
if(i==tcd.getCreateQuantity()){
comitcount=i%100;
if(comitcount==0){
comitcount=100;
}
}
List<TBlvcCardcreateDetail>tcdlist=dcservice.getTblvccardcreatedetaildao().getListBybatchNo(tcc.getCreateBatchNo(), tcd.getCardvalue(), tcd.getCreateQuantity());
if(tcdlist.size()>0){
//每一百条分批提交
dcservice.getTblvccardbackupdao().save(list);
int createquantity=tcdlist.get(0).getCreateQuantity();
dcservice.getTblvccardcreatedetaildao().updstabycardval(Constants.CARDSTATUS_ZKWC, createquantity+comitcount, tcc.getCreateBatchNo(), tcd.getCardvalue(), tcd.getQuantity());//更新制卡申请明细表为制卡完成
}else{
logger.info("[制卡动作]未找到该笔制卡明细。批次号为["+tcc.getCreateBatchNo()+"]面值为["+tcd.getCardvalue()+"]制卡数量为["+tcd.getCreateQuantity()+"]");
}
list.clear();
}
}
logger.info("[制卡动作]现制卡线程执行成功。批次号为["+tcc.getCreateBatchNo()+"]面值为["+tcd.getCardvalue()+"]制卡数量为["+tcd.getCreateQuantity()+"]成功数量为["+tcd.getCreateQuantity()+"]");
return true;
} catch (Exception e) {
// TODO: handle exception
logger.error("现制卡出现异常"+e.getMessage()+",回滚相关数据为审批通过,等待下次扫描制卡");
e.printStackTrace();
dcservice.getTblvccardcreatedetaildao().updstatusbyBatchNo(Constants.CARDSTATUS_SPTG, tcc.getCreateBatchNo(), Constants.CARDSTATUS_ZKZ);
return false;
}
}
0 0