Index: ssts-web/src/main/webapp/disinfectsystem/materialmanager/materialEntryView.js =================================================================== diff -u -r13257 -r13277 --- ssts-web/src/main/webapp/disinfectsystem/materialmanager/materialEntryView.js (.../materialEntryView.js) (revision 13257) +++ ssts-web/src/main/webapp/disinfectsystem/materialmanager/materialEntryView.js (.../materialEntryView.js) (revision 13277) @@ -672,6 +672,8 @@ if (success) { grid.dwrReload(); showResult(result.message); + }else{ + showResult(result.message); } }, failure : function(response, options) { @@ -797,14 +799,14 @@ handler : function() { loadFormData(grid); } - }, '-', { + }, '-'*/, { text : '删除', hidden : SSTS_WarehouseEntry_Delete, iconCls : 'btn_ext_application_del', handler : function() { deleteGodownEntry(grid); } - }, '-', { + }/*, '-', { text : '导入材料入库单EXCEL', hidden : true, iconCls : 'btn_ext_upload', Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/service/MaterialEntryManagerImpl.java =================================================================== diff -u -r13257 -r13277 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/service/MaterialEntryManagerImpl.java (.../MaterialEntryManagerImpl.java) (revision 13257) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/service/MaterialEntryManagerImpl.java (.../MaterialEntryManagerImpl.java) (revision 13277) @@ -83,84 +83,63 @@ } /** - * 删除材料入库单 + * 删除材料入库单(应分别判断每个入库单item是否有出库过,库存数量有减少过,如果库存数量有扣减过则提示不可删除。否则需要先将原出库的材料退回然后删除) + * */ public String deleteMaterialEntryAndReturnMessage(String ids) { String returnValue = ""; - int deletedSucceed = 0; for (String id : ids.split(";")) { if (StringUtils.isNotBlank(id)) { MaterialEntry materialEntry = getMaterialEntryById(id); - boolean isThisEntryAllowedToDelete = true; + if(materialEntry == null){ + throw new RuntimeException("id为" + id + "的入库单可能已被删除."); + } for (MaterialEntryItem item : materialEntry.getItemsList()) { MaterialDefinition materialDefinition = item.getMaterialDefinition(); - if(materialDefinition != null && (materialDefinition.getStorage() - item.getAmount() >= 0)) { - materialDefinition.setStorage(materialDefinition.getStorage() - item.getAmount()); - objectDao.saveOrUpdate(materialDefinition); - }else{ - if (StringUtils.isBlank(returnValue)) { - returnValue = materialEntry.getSerialNumber(); - } else { - returnValue += "," + materialEntry.getSerialNumber(); - } - isThisEntryAllowedToDelete = false; - break; + GoodsStock goodsStock = + (GoodsStock)objectDao.getBySql(GoodsStock.class.getSimpleName(), " where materialEntryItemId=" + item.getId()); + if(goodsStock == null){ + throw new RuntimeException(CssdUtils.getMaterialName(materialDefinition) + "的库存数据已不存在."); } + if(goodsStock.getAmount() < item.getAmount()){ + throw new RuntimeException(CssdUtils.getMaterialName(materialDefinition) + "库存已发生扣减,不能删除."); + } + goodsStock.setAmount(goodsStock.getAmount() - item.getAmount()); + objectDao.saveOrUpdate(goodsStock); + objectDao.delete(item); } - - if(isThisEntryAllowedToDelete){ - objectDao.delete(materialEntry); - deletedSucceed++; - } + objectDao.delete(materialEntry); } } - if (StringUtils.isNotBlank(returnValue)) { - returnValue = "'" + returnValue + "中有部分材料库存不足,不能删除!'"; - } - if (deletedSucceed != 0) { - returnValue = "'成功删除" + deletedSucceed + "条入库单信息。'" + returnValue; - } return returnValue; } /** - * 删除材料退库单 + * 删除材料退库单(同时需增加对应的库存) */ public String deleteMaterialEntryOutAndReturnMessage(String ids) { String returnValue = ""; - int deletedSucceed = 0; for (String id : ids.split(";")) { if (StringUtils.isNotBlank(id)) { MaterialEntry materialEntry = getMaterialEntryById(id); - boolean isThisEntryAllowedToDelete = true; + if(materialEntry == null){ + throw new RuntimeException("id为" + id + "的退库单可能已被删除."); + } for (MaterialEntryItem item : materialEntry.getItemsList()) { MaterialDefinition materialDefinition = item.getMaterialDefinition(); - if(materialDefinition != null) { - materialDefinition.setStorage(materialDefinition.getStorage() + item.getAmount()); - objectDao.saveOrUpdate(materialDefinition); - }else{ - if(StringUtils.isBlank(returnValue)) { - returnValue = materialEntry.getSerialNumber(); - } else { - returnValue += "," + materialEntry.getSerialNumber(); - } - isThisEntryAllowedToDelete = false; - break; + GoodsStock goodsStock = + (GoodsStock)objectDao.getBySql(GoodsStock.class.getSimpleName(), " where materialEntryItemId=" + item.getId()); + if(goodsStock == null){ + throw new RuntimeException(CssdUtils.getMaterialName(materialDefinition) + "的库存数据已不存在."); } + goodsStock.setAmount(goodsStock.getAmount() + item.getAmount()); + objectDao.saveOrUpdate(goodsStock); + objectDao.delete(item); } - if(isThisEntryAllowedToDelete){ - objectDao.delete(materialEntry); - deletedSucceed++; - } + objectDao.delete(materialEntry); } } - if (StringUtils.isNotBlank(returnValue)) { - returnValue = "'" + returnValue + "中有部分材料库存不足,不能删除!'"; - } - if (deletedSucceed != 0) { - returnValue = "'成功删除" + deletedSucceed + "条入库单信息。'" + returnValue; - } return returnValue; } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/action/MaterialEntryAction.java =================================================================== diff -u -r13257 -r13277 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/action/MaterialEntryAction.java (.../MaterialEntryAction.java) (revision 13257) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/action/MaterialEntryAction.java (.../MaterialEntryAction.java) (revision 13277) @@ -133,22 +133,26 @@ //删除材料入库单 public void deleteMaterialEntry() { - String message = ""; + JSONObject jsonObject = new JSONObject(); String idStr = StrutsParamUtils.getPraramValue("ids", ""); try { if (StringUtils.isNotBlank(idStr)) { - message = materialEntryManager.deleteMaterialEntryAndReturnMessage(idStr); + String message = materialEntryManager.deleteMaterialEntryAndReturnMessage(idStr); + jsonObject.put("message", "删除成功!"); + jsonObject.put("success",true); + }else{ + jsonObject.put("success",false); + jsonObject.put("message", "请选择要删除的入库单."); } - } catch (Exception e) { - message = "删除失败!"; - e.printStackTrace(); + } catch (RuntimeException e) { + jsonObject.put("success",false); + jsonObject.put("message", "删除失败!" + e.getMessage()); } HttpServletResponse httpServletResponse = StrutsParamUtils .getResponse(); - httpServletResponse.setCharacterEncoding("UTF-8"); + httpServletResponse.setContentType("text/html;charset=UTF-8"); try { - httpServletResponse.getWriter().print( - "{success:true,message:" + message + "}"); + httpServletResponse.getWriter().print(jsonObject); } catch (IOException e) { e.printStackTrace(); } Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/materialDefinition/materialDefinitionForm.js =================================================================== diff -u -r13167 -r13277 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/materialDefinition/materialDefinitionForm.js (.../materialDefinitionForm.js) (revision 13167) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/materialDefinition/materialDefinitionForm.js (.../materialDefinitionForm.js) (revision 13277) @@ -403,6 +403,8 @@ } }); }else{ + //如果为新增时,id默认赋值为0,防止action的saveMaterialDefinition方法里的materialDefinition.getId() != 0的语法报错影响功能 + top.Ext.getCmp('id').setValue(0); foldersJsonStore.load(); top.Ext.getCmp('isTraceble').setValue('是'); top.Ext.getCmp('isMonthCheck').setValue('否'); @@ -614,7 +616,7 @@ }, failure : function(response, options) { var result = Ext.decode(response.responseText); - showResult(result.cause); + //showResult(result.cause); } }); } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/action/MaterialDefinitionAction.java =================================================================== diff -u -r13124 -r13277 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/action/MaterialDefinitionAction.java (.../MaterialDefinitionAction.java) (revision 13124) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/action/MaterialDefinitionAction.java (.../MaterialDefinitionAction.java) (revision 13277) @@ -43,6 +43,7 @@ import com.forgon.tools.GB2Alpha; import com.forgon.tools.GB2WB; import com.forgon.tools.StrutsParamUtils; +import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; @@ -134,18 +135,22 @@ String name = StrutsParamUtils.getPraramValue("valifateName", null); String specification = StrutsParamUtils.getPraramValue("specification", null); - String message = "{success:true,message:'验证成功',stauts:1}"; + JSONObject jsonObject = new JSONObject(); + jsonObject.put("success", true); + jsonObject.put("message", "验证成功"); + jsonObject.put("stauts", 1); boolean result = materialDefinitionManager.verifyMaterialDefinition(id, name, specification); if (!result) { - message = "{success:false,message:'已存在相同名称的材料',stauts:0}"; - ; + jsonObject.put("success", false); + jsonObject.put("message", "已存在相同名称的材料"); + jsonObject.put("stauts", 0); } HttpServletResponse httpServletResponse = StrutsParamUtils .getResponse(); httpServletResponse.setContentType("text/html;charset=UTF-8"); try { - httpServletResponse.getWriter().print(message); + httpServletResponse.getWriter().print(jsonObject); } catch (IOException e) { e.printStackTrace(); } @@ -157,7 +162,7 @@ */ public String saveMaterialDefinition() { if (materialDefinition != null) { - if (materialDefinition.getId() == 0) { + if (!DatabaseUtil.isPoIdValid(materialDefinition.getId())) { materialDefinition.setId(null); } try {