Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/service/MaterialEntryManager.java =================================================================== diff -u -r16984 -r17001 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/service/MaterialEntryManager.java (.../MaterialEntryManager.java) (revision 16984) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/service/MaterialEntryManager.java (.../MaterialEntryManager.java) (revision 17001) @@ -20,8 +20,11 @@ public MaterialEntryItem getMaterialEntryItemById(String id); // public void deleteMaterialEntryById(String id); - - public String deleteMaterialEntryAndReturnMessage(String ids); + /** + * 删除材料入库单(应分别判断每个入库单item是否有出库过,库存数量有减少过,如果库存数量有扣减过则提示不可删除。否则需要先将原出库的材料退回然后删除) + * + */ + public void deleteMaterialEntry(String ids); public String deleteMaterialEntryOutAndReturnMessage(String ids); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/service/MaterialEntryManagerImpl.java =================================================================== diff -u -r16984 -r17001 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/service/MaterialEntryManagerImpl.java (.../MaterialEntryManagerImpl.java) (revision 16984) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/service/MaterialEntryManagerImpl.java (.../MaterialEntryManagerImpl.java) (revision 17001) @@ -97,12 +97,7 @@ } - /** - * 删除材料入库单(应分别判断每个入库单item是否有出库过,库存数量有减少过,如果库存数量有扣减过则提示不可删除。否则需要先将原出库的材料退回然后删除) - * - */ - public String deleteMaterialEntryAndReturnMessage(String ids) { - String returnValue = ""; + public void deleteMaterialEntry(String ids) { for (String id : ids.split(";")) { if (StringUtils.isNotBlank(id)) { MaterialEntry materialEntry = get(id); @@ -112,7 +107,8 @@ for (MaterialEntryItem item : materialEntry.getItemsList()) { MaterialDefinition materialDefinition = item.getMaterialDefinition(); GoodsStock goodsStock = - (GoodsStock)objectDao.getBySql(GoodsStock.class.getSimpleName(), " where materialEntryItemId=" + item.getId()); + (GoodsStock)objectDao.getBySql(GoodsStock.class.getSimpleName(), " where materialEntryItemId=" + item.getId() + + " and materialDefinitionId=" + materialDefinition.getId()); if(goodsStock == null){ throw new RuntimeException(CssdUtils.getMaterialName(materialDefinition) + "的库存数据已不存在."); } @@ -121,13 +117,12 @@ } goodsStock.setAmount(goodsStock.getAmount() - item.getAmount()); objectDao.saveOrUpdate(goodsStock); - objectDao.delete(item); +// objectDao.delete(item); } objectDao.delete(materialEntry); } } - return returnValue; } /** Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/action/MaterialEntryAction.java =================================================================== diff -u -r16984 -r17001 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/action/MaterialEntryAction.java (.../MaterialEntryAction.java) (revision 16984) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/action/MaterialEntryAction.java (.../MaterialEntryAction.java) (revision 17001) @@ -152,25 +152,19 @@ String idStr = StrutsParamUtils.getPraramValue("ids", ""); try { if (StringUtils.isNotBlank(idStr)) { - String message = materialEntryManager.deleteMaterialEntryAndReturnMessage(idStr); + materialEntryManager.deleteMaterialEntry(idStr); jsonObject.put("message", "删除成功!"); jsonObject.put("success",true); }else{ jsonObject.put("success",false); jsonObject.put("message", "请选择要删除的入库单."); } } catch (RuntimeException e) { + e.printStackTrace(); jsonObject.put("success",false); jsonObject.put("message", "删除失败!" + e.getMessage()); } - HttpServletResponse httpServletResponse = StrutsParamUtils - .getResponse(); - httpServletResponse.setContentType("text/html;charset=UTF-8"); - try { - httpServletResponse.getWriter().print(jsonObject); - } catch (IOException e) { - e.printStackTrace(); - } + StrutsResponseUtils.output(jsonObject); } // 删除材料退库单 Index: ssts-web/src/test/java/test/forgon/disinfectsystem/material/service/MaterialEntryManagerTests.java =================================================================== diff -u -r16984 -r17001 --- ssts-web/src/test/java/test/forgon/disinfectsystem/material/service/MaterialEntryManagerTests.java (.../MaterialEntryManagerTests.java) (revision 16984) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/material/service/MaterialEntryManagerTests.java (.../MaterialEntryManagerTests.java) (revision 17001) @@ -1,10 +1,12 @@ package test.forgon.disinfectsystem.material.service; import java.util.ArrayList; +import java.util.Collection; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; import static org.testng.Assert.*; import net.sf.json.JSONArray; @@ -189,6 +191,43 @@ assertion(); } + /** + * 测试删除材料入库单 + */ + @Test + public void testDeleteMaterialEntry() throws Exception{ + prepare(); + //3.准备材料 + initMaterialItemsMultiSupplier(true); + //4.准备入库单 + buildMaterialEntry(true); + //5.记录入库前的库存 + materialStockBefore = getMaterialStocks(); + //需要清除Hibernate缓存 + objectDao.clearCache(); + //6.保存入库单 + materialEntryManager.saveMaterialEntry((MaterialEntry)BeanUtilsBean2.getInstance().cloneBean(materialEntry), buildItemsJsonStr(),false); + //7.断言 + assertion(); + MaterialEntry dbMaterialEntry = materialEntryManager.getFirst("serialNumber", materialEntry.getSerialNumber()); + assertNotNull(dbMaterialEntry); + assertNotNull(dbMaterialEntry.getId()); + + List materialEntryItemIds = dbMaterialEntry.getItemsList().stream().map(p->p.getId()).collect(Collectors.toList()); + + materialEntryManager.deleteMaterialEntry(dbMaterialEntry.getId().toString()); + + dbMaterialEntry = materialEntryManager.getFirst("serialNumber", materialEntry.getSerialNumber()); + assertNull(dbMaterialEntry); + Collection materialEntryItems = materialEntryItemManager.getCollection(materialEntryItemIds); + assertEquals(0,materialEntryItems.size()); + + List goodsStocks = goodsStockManager.getCollection("materialEntryItemId", materialEntryItemIds); + //断言库存为0 + for(GoodsStock gs : goodsStocks){ + assertEquals(new Integer(0),gs.getAmount()); + } + } private void prepare(){ //1.初始化基础数据 initCSSDData(); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/goodsstock/service/GoodsStockManager.java =================================================================== diff -u -r16861 -r17001 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/goodsstock/service/GoodsStockManager.java (.../GoodsStockManager.java) (revision 16861) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/goodsstock/service/GoodsStockManager.java (.../GoodsStockManager.java) (revision 17001) @@ -4,13 +4,14 @@ import java.util.List; import com.forgon.disinfectsystem.entity.goodsstock.GoodsStock; +import com.forgon.tools.hibernate.BasePoManager; /** * 器械包、材料库存manager接口 * @author shuyongfu * @since 2016-03-21 */ -public interface GoodsStockManager { +public interface GoodsStockManager extends BasePoManager { /** * 入库,加库存 Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/goodsstock/service/GoodsStockManagerImpl.java =================================================================== diff -u -r16984 -r17001 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/goodsstock/service/GoodsStockManagerImpl.java (.../GoodsStockManagerImpl.java) (revision 16984) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/goodsstock/service/GoodsStockManagerImpl.java (.../GoodsStockManagerImpl.java) (revision 17001) @@ -21,6 +21,7 @@ import com.forgon.disinfectsystem.entity.materialmanager.MaterialEntryItem; import com.forgon.tools.MathTools; import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.string.StringTools; import com.forgon.tools.util.SqlUtils; @@ -30,12 +31,11 @@ * @author shuyongfu * @since 2016-03-21 */ -public class GoodsStockManagerImpl implements GoodsStockManager { +public class GoodsStockManagerImpl extends BasePoManagerImpl implements GoodsStockManager { - private ObjectDao objectDao; - - public void setObjectDao(ObjectDao objectDao) { - this.objectDao = objectDao; + public GoodsStockManagerImpl() { + super(GoodsStock.class); + // TODO Auto-generated constructor stub } /**