实际的项目中,客户提供的表单某个字段编码或者编号是有固定格式的,不能让客户自己每次都去填写,要自动生成。就比如合同编号。编码要求的格式如下图所示。
控制层代码:
String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
String flowStatusStr = lizhiDealService.queryFlowStatusField(dateStr);
request.setAttribute("flowStatusStr",flowStatusStr);
service层代码:最主要的是三目运算符那里,通过for循环,三目运算符判断在前面加0直到得到需要的位数的字符串
@Override
public String queryFlowStatusField(String dateStr) {
List<LizhiDeal> resList = lizhiDealDao.queryFlowStatusField(dateStr);
String flowStatusStr = "";
if (resList.size()>0) {
String flowStatusField = resList.get(0).getFlowStatus();
int flowStatusInt = Integer.parseInt(flowStatusField.substring(14));
flowStatusInt++;
flowStatusStr = String.valueOf(flowStatusInt);
for (int i = 0; i < 4; i++) {
flowStatusStr = flowStatusStr.length()<4?"0"+flowStatusStr:flowStatusStr;
}
flowStatusStr = "LZBL"+dateStr+flowStatusStr;
}
else {
flowStatusStr = "LZBL"+dateStr+"0001";
}
return flowStatusStr;
}
dao层sql代码:排序很重要,根据降序排序,每次取最后一个
public List<LizhiDeal> queryFlowStatusField(String dateStr) {
String sql = "select * from T_LIZHI_DEAL where flow_status like 'LZBL" + dateStr + "%' order by flow_status desc";
List<LizhiDeal> list = this.getSession().createSQLQuery(sql).addEntity(LizhiDeal.class).list();
return list;
}