Index: forgon-core/src/main/java/com/forgon/systemsetting/service/HttpOptionManager.java =================================================================== diff -u -r22355 -r34342 --- forgon-core/src/main/java/com/forgon/systemsetting/service/HttpOptionManager.java (.../HttpOptionManager.java) (revision 22355) +++ forgon-core/src/main/java/com/forgon/systemsetting/service/HttpOptionManager.java (.../HttpOptionManager.java) (revision 34342) @@ -75,4 +75,23 @@ * @return */ public Map> getGroupAndDepartMap(); + + /** + * 保存灭菌目的 + * @param httpOption + */ + public void saveSterilizationPurposeHttpOption(HttpOption httpOption); + + /** + * 灭菌目的排序 + * @param httpOption + * @param orderType 排序方式:up/down + */ + public void sortSterilizationPurposeHttpOption(HttpOption httpOption, String orderType); + + /** + * 批量删除灭菌目的设置 + * @param ids + */ + public void deleteSterilizationPurposeHttpOption(String ids); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/systemsetting/service/HttpOptionManagerSSTSImpl.java =================================================================== diff -u -r31801 -r34342 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/systemsetting/service/HttpOptionManagerSSTSImpl.java (.../HttpOptionManagerSSTSImpl.java) (revision 31801) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/systemsetting/service/HttpOptionManagerSSTSImpl.java (.../HttpOptionManagerSSTSImpl.java) (revision 34342) @@ -20,6 +20,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.sterilisation.Sterilisation; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; +import com.forgon.exception.SystemException; import com.forgon.systemsetting.model.HttpOption; import com.forgon.systemsetting.service.HttpOptionManager; import com.forgon.tools.db.DatabaseUtil; @@ -492,4 +493,132 @@ } return map; } + + @Override + public void saveSterilizationPurposeHttpOption(HttpOption httpOption) { + if(StringUtils.isBlank(httpOption.getOptionText())){ + throw new SystemException("灭菌目的不能为空!"); + } + //判断是否重名 + checkOptionTextUnique(httpOption); + if(StringUtils.isBlank(httpOption.getOptionListId())){ + httpOption.setOptionListId(HttpOption.SYSTEMSETTING_STERILIZATIONPURPOSE); + } + //排序 + if(DatabaseUtil.isPoIdValid(httpOption.getId())){ + setHttpOptionSequence(httpOption); + } + objectDao.saveOrUpdate(httpOption); + } + + /** + * 排序 + * @param httpOption + */ + @SuppressWarnings("rawtypes") + private void setHttpOptionSequence(HttpOption httpOption) { + String sql = String.format("select max(po.sequence) from %s po where po.optionListId = '%s'", + HttpOption.class.getSimpleName(), + HttpOption.SYSTEMSETTING_STERILIZATIONPURPOSE); + int maxOrder = 0; + List list = objectDao.findByHql(sql); + if(CollectionUtils.isNotEmpty(list)){ + maxOrder = (int) list.get(0); + } + maxOrder += 1; + httpOption.setSequence(maxOrder); + } + + /** + * 检查名称是否唯一 + * @param httpOption + */ + private void checkOptionTextUnique(HttpOption httpOption) { + String sql = String.format("select count(*) from %s po where po.optionListId = '%s' and po.optionText = '%s'", + HttpOption.class.getSimpleName(), + httpOption.getOptionListId(), + httpOption.getOptionText()); + if(DatabaseUtil.isPoIdValid(httpOption.getId())){ + sql += " and po.id <> " + httpOption.getId(); + } + if(objectDao.countBySql(sql) > 0){ + throw new SystemException("已经存在[" + httpOption.getOptionText() + "],请重新输入!"); + } + } + + @Override + public void sortSterilizationPurposeHttpOption(HttpOption httpOption, String orderType) { + if(httpOption == null || !DatabaseUtil.isPoIdValid(httpOption.getId())){ + return; + } + + HttpOption nextHttpOption = getNextSortHttpOption(httpOption, orderType); + if(nextHttpOption == null){ + return; + } + int tempSequence = httpOption.getSequence(); + httpOption.setSequence(nextHttpOption.getSequence()); + nextHttpOption.setSequence(tempSequence); + + objectDao.saveOrUpdate(nextHttpOption); + objectDao.saveOrUpdate(httpOption); + } + + @SuppressWarnings("unchecked") + private HttpOption getNextSortHttpOption(HttpOption httpOption, String orderType) { + if (httpOption == null || !DatabaseUtil.isPoIdValid(httpOption.getId())) { + return null; + } + + if (!(orderType.equalsIgnoreCase("up") || orderType + .equalsIgnoreCase("down"))) { + return null; + } + + String sql = "Where 1=1 "; + + String orderField = " sequence DESC"; + if (orderType.equalsIgnoreCase("up")) + sql += "and (po.sequence < " + + httpOption.getSequence() + ")"; + else { + sql += "and (po.sequence > " + + httpOption.getSequence() + ")"; + orderField = " sequence asc"; + } + List list = objectDao.findBySql(HttpOption.class.getSimpleName(), sql, 0, 1, orderField); + + if (list == null || list.size() == 0) { + return null; + } + return list.get(0); + } + + @Override + public void deleteSterilizationPurposeHttpOption(String ids) { + List httpOptionList = this.getCollection(ids, ";"); + if(CollectionUtils.isEmpty(httpOptionList)){ + throw new RuntimeException("数据不存在"); + } + //检查灭菌目的是否可以删除 + checkSterilizationPurposeHttpOptionCanDel(httpOptionList); + objectDao.deleteAll(httpOptionList); + } + + /** + * 检查灭菌目的是否可以删除:灭菌目的在灭菌记录中被使用,就不能删除 + * @param httpOptionList + */ + private void checkSterilizationPurposeHttpOptionCanDel(List httpOptionList) { + if(CollectionUtils.isEmpty(httpOptionList)){ + throw new RuntimeException("数据不存在"); + } + for (HttpOption httpOption : httpOptionList) { + if(!StringUtils.equals(httpOption.getOptionListId(), HttpOption.SYSTEMSETTING_STERILIZATIONPURPOSE)){ + throw new SystemException(httpOption.getOptionText() + "不是灭菌目的,不能删除!"); + } + //"灭菌目的在灭菌记录中被使用"的检查 + //... + } + } } Index: forgon-core/src/main/java/com/forgon/systemsetting/controller/HttpOptionController.java =================================================================== diff -u -r25813 -r34342 --- forgon-core/src/main/java/com/forgon/systemsetting/controller/HttpOptionController.java (.../HttpOptionController.java) (revision 25813) +++ forgon-core/src/main/java/com/forgon/systemsetting/controller/HttpOptionController.java (.../HttpOptionController.java) (revision 34342) @@ -97,12 +97,13 @@ SpringUtils.output(false, "optionListId不能为空."); return; } - List httpOptionTextList = httpOptionManager.getHttpOptionTextById(optionListId); + List httpOptionList = httpOptionManager.getHttpOptionListById(optionListId); List> optionTextMaplist = new ArrayList>(); - if(CollectionUtils.isNotEmpty(httpOptionTextList)){ - for (String httpOptionText : httpOptionTextList) { + if(CollectionUtils.isNotEmpty(httpOptionList)){ + for (HttpOption httpOption : httpOptionList) { Map optionTextMap = new HashMap(); - optionTextMap.put("value", httpOptionText); + optionTextMap.put("id", httpOption.getId()+""); + optionTextMap.put("value", httpOption.getOptionText()); optionTextMaplist.add(optionTextMap); } } Index: forgon-core/src/main/java/com/forgon/systemsetting/action/HttpOptionAction.java =================================================================== diff -u -r22355 -r34342 --- forgon-core/src/main/java/com/forgon/systemsetting/action/HttpOptionAction.java (.../HttpOptionAction.java) (revision 22355) +++ forgon-core/src/main/java/com/forgon/systemsetting/action/HttpOptionAction.java (.../HttpOptionAction.java) (revision 34342) @@ -16,6 +16,8 @@ import com.forgon.systemsetting.service.HttpOptionManager; import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.StrutsResponseUtils; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.json.JSONUtil; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; @@ -129,4 +131,61 @@ } StrutsResponseUtils.output(array); } + + /** + * 灭菌目的设置 保存 + */ + public void saveSterilizationPurposeHttpOption(){ + JSONObject result = JSONUtil.buildJsonObject(true, "保存成功"); + try { + Long id = StrutsParamUtils.getPraramLongValue("id", null); + String value = StrutsParamUtils.getPraramValue("value", null); + if(DatabaseUtil.isPoIdValid(id)){ + httpOption = httpOptionManager.get(id); + }else{ + httpOption = new HttpOption(); + httpOption.setOptionListId(HttpOption.SYSTEMSETTING_STERILIZATIONPURPOSE); + } + httpOption.setOptionText(value); + httpOptionManager.saveSterilizationPurposeHttpOption(httpOption); + } catch (Exception e) { + result = JSONUtil.buildJsonObject(false, "保存失败:" + e.getMessage()); + } + StrutsResponseUtils.output(result); + } + + /** + * 灭菌目的设置 排序 + */ + public void sortSterilizationPurposeHttpOption(){ + JSONObject result = JSONUtil.buildJsonObject(true); + //up/down + String orderType = StrutsParamUtils.getPraramValue("orderType", null); + try { + Long id = StrutsParamUtils.getPraramLongValue("id", null); + if(DatabaseUtil.isPoIdValid(id)){ + httpOption = httpOptionManager.get(id); + httpOptionManager.sortSterilizationPurposeHttpOption(httpOption, orderType); + } + } catch (Exception e) { + result = JSONUtil.buildJsonObject(false, "操作失败:" + e.getMessage()); + } + StrutsResponseUtils.output(result); + } + + /** + * 灭菌目的设置 删除 + */ + public void deleteSterilizationPurposeHttpOption(){ + JSONObject result = JSONUtil.buildJsonObject(true, "删除成功"); + //1;2;3 + String ids = StrutsParamUtils.getPraramValue("ids", null); + try { + httpOptionManager.deleteSterilizationPurposeHttpOption(ids); + } catch (Exception e) { + result = JSONUtil.buildJsonObject(false, "删除失败:" + e.getMessage()); + } + StrutsResponseUtils.output(result); + } + }