Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/systemsetting/service/HttpOptionManagerSSTSImpl.java =================================================================== diff -u -r26635 -r29163 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/systemsetting/service/HttpOptionManagerSSTSImpl.java (.../HttpOptionManagerSSTSImpl.java) (revision 26635) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/systemsetting/service/HttpOptionManagerSSTSImpl.java (.../HttpOptionManagerSSTSImpl.java) (revision 29163) @@ -24,6 +24,7 @@ import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.json.JSONUtil; +import com.forgon.tools.util.SqlUtils; /** * @author Angus @@ -216,23 +217,43 @@ @Override public String saveOrUpdateByListId(List optionList, String listId) { String message = "保存成功!"; - List dbList = getHttpOptionListById(listId); + List optionIdList = new ArrayList(); + for (HttpOption submitHttpOption : optionList) { + optionIdList.add(submitHttpOption.getId()); + } + // 删除页面已经删除的记录 + String deleteSql = String.format(" delete from %s where optionListId = '%s' and %s", HttpOption.class.getSimpleName(), listId, SqlUtils.getNonStringFieldNotInCollectionsPredicate("id", optionIdList)); + objectDao.excuteSQL(deleteSql); + + List toSaveList = new ArrayList(); + // 页面新添加的记录 + for (HttpOption httpOption : optionList) { + if(!DatabaseUtil.isPoIdValid(httpOption.getId())){ + httpOption.setId(null); + toSaveList.add(httpOption); + } + } + List dbList = getHttpOptionListById(listId); // 处理修改 for (HttpOption dbHttpOption : dbList) { for (HttpOption submitHttpOption : optionList) { if(dbHttpOption.getId() != null && submitHttpOption.getId() != null && dbHttpOption.getId().longValue() == submitHttpOption.getId().longValue()){ synchronizeModification(dbHttpOption, submitHttpOption, listId); + if(!StringUtils.equals(submitHttpOption.getOptionText(), dbHttpOption.getOptionText()) + || submitHttpOption.getSequence() != dbHttpOption.getSequence() + || !StringUtils.equals(submitHttpOption.getOptionValue(), dbHttpOption.getOptionValue())){ + dbHttpOption.setOptionText(submitHttpOption.getOptionText()); + dbHttpOption.setOptionValue(submitHttpOption.getOptionValue()); + dbHttpOption.setSequence(submitHttpOption.getSequence()); + toSaveList.add(dbHttpOption); + } } } } - // 删除所有 - objectDao.deleteAll(dbList); - // 保存 - for (HttpOption httpOption : optionList) { - httpOption.setId(0L);// 全部重新保存 - saveOrUpdate(httpOption); - } + + objectDao.batchSaveOrUpdate(toSaveList); + return message; } private void synchronizeModification(HttpOption dbHttpOption,HttpOption submitHttpOption,String listId){ Index: ssts-web/src/main/webapp/js/common.js =================================================================== diff -u -r29102 -r29163 --- ssts-web/src/main/webapp/js/common.js (.../common.js) (revision 29102) +++ ssts-web/src/main/webapp/js/common.js (.../common.js) (revision 29163) @@ -715,12 +715,15 @@ if (intIndex > 0) { var temText = selectElement.options[intIndex - 1].text; var temValue = selectElement.options[intIndex - 1].value; + var temId = selectElement.options[intIndex - 1].id; selectElement.options[intIndex - 1].text = selectElement.options[intIndex].text; selectElement.options[intIndex - 1].value = selectElement.options[intIndex].value; + selectElement.options[intIndex - 1].id = selectElement.options[intIndex].id; selectElement.options[intIndex].text = temText; selectElement.options[intIndex].value = temValue; + selectElement.options[intIndex].id = temId; selectElement.options[intIndex - 1].selected = true; selectElement.options[intIndex].selected = false; @@ -735,12 +738,15 @@ if (selectElement.options.length > 1 && intIndex < selectElement.options.length - 1 && intIndex >= 0) { var temText = selectElement.options[intIndex + 1].text; var temValue = selectElement.options[intIndex + 1].value; - + var temId = selectElement.options[intIndex + 1].id; + selectElement.options[intIndex + 1].text = selectElement.options[intIndex].text; selectElement.options[intIndex + 1].value = selectElement.options[intIndex].value; + selectElement.options[intIndex + 1].id = selectElement.options[intIndex].id; selectElement.options[intIndex].text = temText; selectElement.options[intIndex].value = temValue; + selectElement.options[intIndex].id = temId; selectElement.options[intIndex + 1].selected = true; selectElement.options[intIndex].selected = false;