Index: ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/action/LabelTemplateAction.java =================================================================== diff -u -r25860 -r26279 --- ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/action/LabelTemplateAction.java (.../LabelTemplateAction.java) (revision 25860) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/action/LabelTemplateAction.java (.../LabelTemplateAction.java) (revision 26279) @@ -83,16 +83,34 @@ if (StringUtils.isNotBlank(ids)) { String[] str = ids.split(";"); if(str.length != 0){ + for (String id : str) { + labelTemplateManager.checkLabelTemplateIsUsed(id); + } labelTemplateManager.delete(str); } StrutsResponseUtils.output(true,"删除成功"); } + } catch (RuntimeException re) { + StrutsResponseUtils.output(false, re.getMessage() + "不能删除!"); } catch (Exception e) { StrutsResponseUtils.output(false,"删除失败"); e.printStackTrace(); - } + } } + public void checkLabelTemplateIsUsed() { + String id = StrutsParamUtils.getPraramValue("id", ""); + try{ + labelTemplateManager.checkLabelTemplateIsUsed(id); + } catch (RuntimeException re) { + StrutsResponseUtils.output(false, re.getMessage()); + } catch (Exception e) { + StrutsResponseUtils.output(false,""); + e.printStackTrace(); + } + StrutsResponseUtils.output(true, ""); + } + public void loadData(){ String id = StrutsParamUtils.getPraramValue("id", ""); if (DatabaseUtil.isPoIdValid(id)) { Index: ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/service/LabelTemplateManagerImpl.java =================================================================== diff -u -r24238 -r26279 --- ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/service/LabelTemplateManagerImpl.java (.../LabelTemplateManagerImpl.java) (revision 24238) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/service/LabelTemplateManagerImpl.java (.../LabelTemplateManagerImpl.java) (revision 26279) @@ -12,6 +12,9 @@ import org.apache.commons.lang.StringUtils; import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.labeltemplate.LabelTemplate; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; @@ -54,19 +57,27 @@ @Override public void save(LabelTemplate labelTemplate) { Long id = labelTemplate.getId(); + String oldFullName = null; + String newFullName = null; if(DatabaseUtil.isPoIdValid(id)){ LabelTemplate curLabelTemplate = get(id.toString()); if(curLabelTemplate == null){ throw new RuntimeException("模板已被删除!"); } + oldFullName = curLabelTemplate.getFullName(); curLabelTemplate.setDescription(labelTemplate.getDescription()); curLabelTemplate.setFullName(labelTemplate.getFullName()); curLabelTemplate.setDataSourceName(labelTemplate.getDataSourceName()); curLabelTemplate.setHeight(labelTemplate.getHeight()); curLabelTemplate.setName(labelTemplate.getName()); curLabelTemplate.setStyleName(labelTemplate.getStyleName()); curLabelTemplate.setWidth(labelTemplate.getWidth()); + newFullName = curLabelTemplate.getFullName(); objectDao.saveOrUpdate(curLabelTemplate); + // 更新TousseDefinition表 + updateTousseDefinitionByBarcodePaperType(oldFullName, newFullName); + // 更新SupplyRoomConfig表 + updateSupplyRoomConfigByBarcodePaperType(oldFullName, newFullName); }else{ objectDao.saveOrUpdate(labelTemplate); } @@ -251,4 +262,85 @@ return nameList; } + + /** + * 判断标签模板是否被使用(TousseDefinition) + * @param LabelTemplateId + * @return + */ + public int getCountsFromTousseDefinitionByLabelTemplateId(String LabelTemplateId) { + if (StringUtils.isNotBlank(LabelTemplateId)) { + //select count(t.id) from TousseDefinition t, LabelTemplate l where t.barcodePaperType = l.fullName and l.id = '12'; + String sql = String.format("select count(t.id) from %s t, %s l " + + "where t.barcodePaperType = l.fullName and l.id = %s", + TousseDefinition.class.getSimpleName(), LabelTemplate.class.getSimpleName(), LabelTemplateId); + return objectDao.countBySql(sql); + } + return 0; + } + + /** + * 判断标签模板是否被使用(SupplyRoomConfig) + * @param LabelTemplateId + * @return + */ + public int getCountsFromSupplyRoomConfigByLabelTemplateId(String LabelTemplateId) { + if (StringUtils.isNotBlank(LabelTemplateId)) { + //select count(s.id) from SupplyRoomConfig s, LabelTemplate l where s.barcodePaperType = l.fullName and l.id = '8'; + String sql = String.format("select count(s.id) from %s s, %s l " + + "where s.barcodePaperType = l.fullName and l.id = %s", + SupplyRoomConfig.class.getSimpleName(), LabelTemplate.class.getSimpleName(), LabelTemplateId); + return objectDao.countBySql(sql); + } + return 0; + } + /** + * 更新“器械包定义”表 + * @param oldFullName + * @param newFullName + */ + public void updateTousseDefinitionByBarcodePaperType(String oldFullName, String newFullName) { + if(StringUtils.isNotBlank(oldFullName) && StringUtils.isNotBlank(newFullName)) { + String sql = String.format(" where po.barcodePaperType = '%s'", oldFullName ); + List tousseDefinitionList = objectDao.findBySql(TousseDefinition.class.getSimpleName(), sql); + if(CollectionUtils.isNotEmpty(tousseDefinitionList)) { + for (TousseDefinition tousseDefinition : tousseDefinitionList) { + tousseDefinition.setBarcodePaperType(newFullName); + objectDao.saveOrUpdate(tousseDefinition); + } + } + } + } + /** + * 更新“科室供应室配置”表 + * @param oldFullName + * @param newFullName + */ + public void updateSupplyRoomConfigByBarcodePaperType(String oldFullName, String newFullName) { + if(StringUtils.isNotBlank(oldFullName) && StringUtils.isNotBlank(newFullName)) { + String sql = String.format(" where po.barcodePaperType = '%s'", oldFullName ); + List supplyRoomConfigList = objectDao.findBySql(SupplyRoomConfig.class.getSimpleName(), sql); + if(CollectionUtils.isNotEmpty(supplyRoomConfigList)) { + for (SupplyRoomConfig supplyRoomConfig : supplyRoomConfigList) { + supplyRoomConfig.setBarcodePaperType(newFullName); + objectDao.saveOrUpdate(supplyRoomConfig); + } + } + } + } + + @Override + public void checkLabelTemplateIsUsed(String id) { + int resultCounts = getCountsFromTousseDefinitionByLabelTemplateId(id); + if (resultCounts > 0) { + LabelTemplate labelTemplate = (LabelTemplate) objectDao.getById(LabelTemplate.class.getSimpleName(), id); + throw new RuntimeException("标签模板【"+ labelTemplate.getName() +"】已被使用,"); + } + resultCounts = getCountsFromSupplyRoomConfigByLabelTemplateId(id); + if (resultCounts > 0) { + LabelTemplate labelTemplate = (LabelTemplate) objectDao.getById(LabelTemplate.class.getSimpleName(), id); + throw new RuntimeException("标签模板【"+ labelTemplate.getName() +"】已被使用,"); + } + } + } Index: ssts-web/src/main/webapp/disinfectsystem/labelTemplateDesign/labelTemplateForm.js =================================================================== diff -u -r24240 -r26279 --- ssts-web/src/main/webapp/disinfectsystem/labelTemplateDesign/labelTemplateForm.js (.../labelTemplateForm.js) (revision 24240) +++ ssts-web/src/main/webapp/disinfectsystem/labelTemplateDesign/labelTemplateForm.js (.../labelTemplateForm.js) (revision 26279) @@ -1,11 +1,13 @@ var configWin; var formPanel; +var message = ''; function cancel() { configWin.close(); } function editConfig(id){ + checkLabelTemplateIsUsed(id); showWindow(id); if(!Ext4.isEmpty(id)){ var mask = new Ext4.LoadMask({ @@ -65,7 +67,7 @@ var result = Ext4.JSON.decode(response.responseText); var success = result.success; if (true != success) { - showResult("删除失败"); + showResult(result.message); return; } else { showResult('删除成功!'); @@ -218,7 +220,11 @@ showResult('名称不能包含+-*/'); return false; } - saveConfig(); + if(!id) { + saveConfig(); + } else { + showconfirmWindow(); + } }else{ showResult('请填写表单!'); return false; @@ -249,4 +255,72 @@ configWin.show(); } +function showconfirmWindow(){ + var formPanel1 = new top.Ext4.form.Panel({ + id : 'configForm1', + frame : true, + labelSeparator : ':', + bodyStyle : 'padding:5px 5px 0px 5px;', + width : 800, + fieldDefaults: { + labelAlign: 'left', + labelWidth: 200 + }, + items : [{ + xtype : 'label', + text : message + '确定要修改标签模板吗?', + anchor : '98%' + }], + buttons : [{ + id : 'saveBtn1', + text : '确认', + hidden:false, + handler : function(){ + saveConfig(); + confirmWin.close(); + } + }, { + text : '取消', + id : 'saveAndNewBtn1', + handler : function () { + confirmWin.close(); + } + }] + }); + var confirmWin = new top.Ext4.window.Window({ + id : 'labelTemplateWin1', + layout : 'border', + title : '请确认', + width : 300, + height : 105, + border : false, + plain : true, + modal :true, + items : [{ + region:'center', + width : 400, + layout :'fit', + items:[formPanel1] + }] + }); + confirmWin.show(); +} +function checkLabelTemplateIsUsed(id) { + Ext4.Ajax.request({ + url : WWWROOT + '/disinfectSystem/labelTemplateAction!checkLabelTemplateIsUsed.do', + params : {id : id}, + success : function(response, options) { + var result = Ext4.JSON.decode(response.responseText); + var success = result.success; + if (true != success) { + message = result.message; + } else { + message = ''; + } + }, + failure : function(response, options) { + message = ''; + } + }); +} Index: ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/service/LabelTemplateManager.java =================================================================== diff -u -r23431 -r26279 --- ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/service/LabelTemplateManager.java (.../LabelTemplateManager.java) (revision 23431) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/service/LabelTemplateManager.java (.../LabelTemplateManager.java) (revision 26279) @@ -33,5 +33,9 @@ * @return */ public List getAllIdCardLabelTemplate(); - + /** + * 判断标签模板是否已经被使用 + * @param id + */ + public void checkLabelTemplateIsUsed(String id); }