Index: forgon-tools/src/main/java/com/forgon/tools/hibernate/ObjectDaoImpl.java =================================================================== diff -u -r12572 -r12989 --- forgon-tools/src/main/java/com/forgon/tools/hibernate/ObjectDaoImpl.java (.../ObjectDaoImpl.java) (revision 12572) +++ forgon-tools/src/main/java/com/forgon/tools/hibernate/ObjectDaoImpl.java (.../ObjectDaoImpl.java) (revision 12989) @@ -450,7 +450,7 @@ }catch (SQLException e) { e.printStackTrace(); - return false; + throw new RuntimeException(e.getMessage()); } finally { if (statement != null) { Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/DiposableGoodsAction.java =================================================================== diff -u -r12980 -r12989 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/DiposableGoodsAction.java (.../DiposableGoodsAction.java) (revision 12980) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/DiposableGoodsAction.java (.../DiposableGoodsAction.java) (revision 12989) @@ -227,12 +227,9 @@ String idStr = StrutsParamUtils.getPraramValue("ids", ""); String message = ""; try { - if (StringUtils.isNotBlank(idStr)) { - message = diposableGoodsManager - .deleteDiposableGoodsAndReturnMessage(idStr); - } + message = diposableGoodsManager.deleteDiposableGoodsAndReturnMessage(idStr); } catch (Exception e) { - message = "删除失败!"; + message = "删除失败!"+e.getMessage(); e.printStackTrace(); } HttpServletResponse httpServletResponse = StrutsParamUtils Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/disposableGoods/disposableGoodsStockView.js =================================================================== diff -u -r12899 -r12989 --- ssts-web/src/main/webapp/disinfectsystem/assestManagement/disposableGoods/disposableGoodsStockView.js (.../disposableGoodsStockView.js) (revision 12899) +++ ssts-web/src/main/webapp/disinfectsystem/assestManagement/disposableGoods/disposableGoodsStockView.js (.../disposableGoodsStockView.js) (revision 12989) @@ -809,29 +809,29 @@ var tbar = [ { text : '添加', - hidden : SSTS_DiposableGoods_Create, + hidden: true, iconCls : 'btn_ext_application_add', handler : function() { addDiposableGoods(0); } }, '-', { text : '修改', - hidden : SSTS_DiposableGoods_Update, + hidden: true, iconCls : 'btn_ext_application_edit', id : 'editTbar', handler : function() { loadFormData(grid); } }, '-', { text : '删除', - hidden : SSTS_DiposableGoods_Delete, + hidden: true, iconCls : 'btn_ext_application_del', handler : function() { deleteDiposableGoods(grid); } }, '-' , { text : '打印批次', - hidden : false, + hidden: true, iconCls : 'icon_print', handler : function(){ printBatchStockBarcode(grid); Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java =================================================================== diff -u -r12980 -r12989 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java (.../DiposableGoodsManagerImpl.java) (revision 12980) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java (.../DiposableGoodsManagerImpl.java) (revision 12989) @@ -950,37 +950,60 @@ * @return */ public String deleteDiposableGoodsAndReturnMessage(String ids) { - String returnValue = null; int deletedSucceed = 0; + Set idsSet = new HashSet(); + if(StringUtils.isBlank(ids)){ + throw new RuntimeException("要删除的一次性物品定义id不能为空!"); + } for (String id : ids.split(";")) { - if (StringUtils.isNotBlank(id)) { - GodownEntryItem item = (GodownEntryItem) objectDao.getBySql( - GodownEntryItem.class.getSimpleName(), - "where po.diposableGoods.id = " + id); - if (item != null) { - DisposableGoods disposableGoodsStock = getDiposableGoodsById(id); - if (returnValue == null) { - returnValue = disposableGoodsStock.getName(); - } else { - returnValue += "," + disposableGoodsStock.getName(); - } - } else { - deleteDiposableGoodsById(id); - deletedSucceed++; - } - } - + idsSet.add(Long.valueOf(id)); } - if (StringUtils.isNotBlank(returnValue)) { - returnValue += "在入库单中有记录,不能删除。"; - } else { - returnValue = ""; + // 锁定一次性物品 + List disposableGoodsList = getDisposableGoodsByDisposableGoodsIDs_ForUpdate(idsSet); + if (disposableGoodsList == null + || disposableGoodsList.isEmpty()) { + throw new RuntimeException("物品定义已被删除!"); } - if (deletedSucceed != 0) { - returnValue = "成功删除" + deletedSucceed + "条记录。" + returnValue; + // 校验是否能删除,如果有任何关联的数据,则不允许删除。 + // 入库单/退库单/调拨单 +// String sql = String.format(" where %s", SqlUtils.getStringFieldInCollectionsPredicate("po.disposableGoodsID", idsSet)); +// if(objectDao.countObjectBySql(GodownEntryItem.class.getSimpleName(), sql) > 0){ +// throw new RuntimeException("物品定义有关联的入库单/退库单/调拨单记录,不能被删除!"); +// } + // 库存对象,因为目前所有的相关记录都是关联库存对象,所以只需要库存对象为空,就允许删除。 + String sql = String.format(" where %s", SqlUtils.getStringFieldInCollectionsPredicate("po.disposableGoodsID", idsSet)); + if(objectDao.countObjectBySql(IdentificationOfDisposableGoods.class.getSimpleName(), sql) > 0){ + throw new RuntimeException("物品定义有关联的库存对象,不能被删除!"); } - return returnValue; + String deleteSql = String.format("delete from %s where %s",DisposableGoods.class.getSimpleName(), SqlUtils.getStringFieldInCollectionsPredicate("id", idsSet)); + objectDao.executeUpdate(deleteSql); +// for (String id : ids.split(";")) { +// if (StringUtils.isNotBlank(id)) { +// GodownEntryItem item = (GodownEntryItem) objectDao.getBySql( +// GodownEntryItem.class.getSimpleName(), +// "where po.diposableGoods.id = " + id); +// if (item != null) { +// DisposableGoods disposableGoodsStock = getDiposableGoodsById(id); +// if (returnValue == null) { +// returnValue = disposableGoodsStock.getName(); +// } else { +// returnValue += "," + disposableGoodsStock.getName(); +// } +// } else { +// deleteDiposableGoodsById(id); +// deletedSucceed++; +// } +// } +// +// } +// if (StringUtils.isNotBlank(returnValue)) { +// returnValue += "在入库单中有记录,不能删除。"; +// } else { +// returnValue = ""; +// } + return "删除成功!"; } + @Override public DisposableGoodsStock getDiposableGoodsByName(String name,