地毯式矫正顺序号
/** * 校正 list 中 数据的 序号,并返回id 合适的 顺序号 * * @param tbl * @param list :相关记录的集合,每条记录是一个Map,顺序号字段的名字叫 numSort * @param id : 记录ID * @param numSort : 记录指定的顺序号 (可能偏大,返回值是对它矫正后的值) * @return id 最后的顺序号 */ public int doSqlSort(String tbl, List<Map> list, int id, int numSort) { //集合为空 if (list == null || list.isEmpty()) { return 1; } //集合不为空,对集合里面的顺序号进行地毯式矫正 String sql = "update " + tbl + " set NUM_SORT=? where id=?"; Object[] params = new Object[2]; int newNumSort = 0; //记录应该的顺序号 int len = list.size(); for (int i = 0; i < len; i++) { Map map = list.get(i); ////System.out.println(" map.get("id")= " + map.get("id")); Number id2_number = (Number) map.get("id"); Number numSort2_number = (Number) map.get("numSort"); int id2 = id2_number.intValue(); Integer numSort2 = numSort2_number.intValue(); //循环到的记录,不是 当前记录 if (id2 != id) { newNumSort++; if (newNumSort == numSort) { newNumSort++; } } //记录的数据库中顺序号与新顺序号不相等,更新数据库 if (newNumSort != numSort2) { params[0] = newNumSort; params[1] = id2; jdbcDao.doUpdate(sql, params); } } //特殊情况,numSort 要调整 if (numSort > len || numSort == 0) { numSort = len; if (id == 0) { numSort = len + 1; } } //参数id那条记录 应该的 顺序号 return numSort; }
public void doSaveUpdate(ZzjzMoban zzjzMoban) { int id = zzjzMoban.getId(); int numSort = zzjzMoban.getNumSort(); String sql = "select id,numSort from zzjzMoban order by numSort"; List<Map> list = super.getSqlItems(sql, null); numSort = super.doSqlSort("zzjzMoban", list, id, numSort); //校正序号 zzjzMoban.setNumSort(numSort); //新的序号 if (id == 0) { super.doSave(zzjzMoban); } else { ZzjzMoban moban2 = (ZzjzMoban) super.getPo(ZzjzMoban.class, id); moban2.setBrief(zzjzMoban.getBrief()); moban2.setTitle(zzjzMoban.getTitle()); moban2.setPhoto(zzjzMoban.getPhoto()); moban2.setNumSort(zzjzMoban.getNumSort()); } }