|
版本: |
X5.2.6 |
小版本号: |
|
|
|
数据库: |
MySQL |
服务器操作系统: |
Windows |
应用服务器: |
Tomcat |
客户端操作系统: |
Windows 8 |
浏览器: |
Chrome |
|
|
我用如下自定义动作来执行保存,为什么要执行两次才能数据更改成功,
自定义动作生成的时候有提示热交换有问题,要停止服务器,我没有停止,是不是这个问题导致缓存问题,怎么解决
public static int saveReceivepayregister(List insertRange,List deleteRange,List updateRange,String concept,String dataModel,String fnModel,String readOnly,String notNull,Table table){
int result = BizData.save(table, concept, insertRange, deleteRange, updateRange, readOnly, notNull, dataModel, fnModel);
Iterator it = table.iterator();
Row row = (Row)it.next();
String flowKey = row.getString("receivepayregister");
String fReceivePayRegisterNo = row.getString("fReceivePayRegisterNo");
String fBankJournal = row.getString("fBankJournal");
Date fReceivePaymentDate = row.getDate("fReceivePaymentDate");
String msg = "";
try{
Connection conn = ModelUtils.getConnectionInTransaction("/dissona/reconciliation/data");
String sql = "select * from receivepayregisterdetail where fReceivePayRegisterMasterID = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, flowKey);
ResultSet rs = ps.executeQuery();
while(rs.next()){
String fReconciliationSheetNo = rs.getString("fReconciliationSheetNo");
System.out.println("fReconciliationSheetNo:"+ fReconciliationSheetNo);
BigDecimal fCurrentReceiveAmount = rs.getBigDecimal("fCurrentReceiveAmount");
System.out.println("current receive amount is:"+ fCurrentReceiveAmount);
String sql1 = "select * from receivepaymentregister where fReconciliationSheetNo = ?";
PreparedStatement ps1 = conn.prepareStatement(sql1);
ps1.setString(1, fReconciliationSheetNo);
ResultSet rs1 = ps1.executeQuery();
if(rs1.next()){
BigDecimal fCreditAmount = rs1.getBigDecimal("fCreditAmount");
System.out.println("unreived amount is:"+ fCreditAmount + "end");
if(fCurrentReceiveAmount.compareTo(fCreditAmount) ==1){
System.out.println("step1");
throw new RuntimeException("结算单:"+ fReconciliationSheetNo+ "当前金额超标");
}else{
System.out.println("step2");
String sql2 = "update receivepaymentregister set fReceivedAmount = fReceivedAmount + ? , fCreditAmount = fCreditAmount - ?, fReceivePayRegisterNo = ?, fReceivePaymentDate= ?, fBankJournal= ? where fReconciliationSheetNo = ? ";
PreparedStatement ps2 = conn.prepareStatement(sql2);
ps2.setBigDecimal(1, fCurrentReceiveAmount);
ps2.setBigDecimal(2, fCurrentReceiveAmount);
ps2.setString(3, fReceivePayRegisterNo);
ps2.setDate(4,fReceivePaymentDate );
ps2.setString(5, fBankJournal);
ps2.setString(6, fReconciliationSheetNo);
ps2.executeUpdate();
}
}else{
throw new RuntimeException("结算单:"+ fReconciliationSheetNo+ "不存在");
}
}
rs.close();
ps.close();
}catch(Exception ex){
ex.printStackTrace();
throw new RuntimeException(ex.getMessage());
}
return result;
}
|
|