方法很简单: 按功能点用空行隔开。下面的注释我不会加,写上只是说明我的观点。什么时候加注释:你对所在公司有好的期望,敷衍公司的规定。
//方法的命名一定要用英文,别说英文不行,下个有道或什么的工具,如果是一个项目,建议开工前搞一个面向领域的词汇集,就算意
//义不是很明确也比汉语拼音的简写强百倍。
public
String batch_pay() throws DbException
{
//这两句话代码要对字符串数组处理,一个功能点
String[] fybxdh =
this.getParameterValues("fybxdh");
String[] ss =
fybxdh[0].replaceAll("\‘|\\[|\\]",
"").split(",");
//这两点话表示产生当前日期的格式化字符串 ,刚开始我把这两句话放到第二个循环中,如果数据量巨大,不断地new
,
//影响程序性能 ,为了程序阅读方便,其实这两句应该移到第二个for之前。
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy/MM/dd");
String date_bxrq = formatter.format(new
Date());
//循环表示对上面的字符串数组进行迭代处理
for(int i = 0;
i < ss.length; i++)
{
String select_dqzt =
"select t.dqzt from SBXT_YWCL_B_FYBX_BXMXB t where t.FYBXDH = ‘"+ ss[i]
+"‘";
Result rs =
sqlSession._sqlQuery(select_dqzt);
rs.next();
String dqzt =
rs.getString("dqzt");
//对当前状态判断,如果有杂质,返回去重新去选。
if(dqzt.equals("支付") )
{
return
"您选择的报销单中有已支付状态的选项,请重新选择!";
}
}
//程序到这里,已经没有杂质了,可以进行数据库操作。以下这个循环我现在怀疑会产生数据异常,是否在一个事务中呢?
for(int i = 0; i < ss.length; i++)
{
String update_bx_sql = "UPDATE SBXT_YWCL_B_FYBX_BXMXB SET
dqzt = ‘支付‘, bxrq = to_date(‘"+date_bxrq+"‘, ‘yyyy/mm/dd‘) "
+
"WHERE fybxdh IN ("
+
"SELECT T.fybxdh\n" +
"FROM (SELECT T.FYBXDH,
T.KHYH\n" +
"FROM
SBXT_YWCL_B_FYBX_BXMXB T, SBXT_XTGL_B_JBXX_CBRJBXXB T1\n" +
"WHERE T.BXXMBM =
‘003‘\n" +
"AND
T.FYBXDH = ‘"+ ss[i] +"‘" +
"AND T1.CBRID =
T.CBRID) T)";
String update_zf_sql = "UPDATE SBXT_YWCL_B_FYBX_zfMXB SET
dqzt=‘支付‘ WHERE fyzfdh IN (SELECT T.fybxdh\n" +
" FROM (SELECT T.FYBXDH, T.KHYH\n" +
" FROM
SBXT_YWCL_B_FYBX_BXMXB T, SBXT_XTGL_B_JBXX_CBRJBXXB T1\n" +
" WHERE T.BXXMBM =
‘003‘\n" +
" AND T.FYBXDH
= ‘"+ ss[i] +"‘" +
" AND
T1.CBRID = T.CBRID) T\n" +
")";
int result =
sqlSession._sqlUpdate(update_bx_sql);
result =
sqlSession._sqlUpdate(update_zf_sql);
}
//返回处理的结果
if(ss.length > 0)
{
return "成功支付"+ss.length+"个报销单!";
}else
{
return "没有要支付的报销单!";
}
}