Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/materialerrordamage/service/MaterialErrorDamageDetailManagerImpl.java =================================================================== diff -u -r30040 -r30108 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/materialerrordamage/service/MaterialErrorDamageDetailManagerImpl.java (.../MaterialErrorDamageDetailManagerImpl.java) (revision 30040) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/materialerrordamage/service/MaterialErrorDamageDetailManagerImpl.java (.../MaterialErrorDamageDetailManagerImpl.java) (revision 30108) @@ -264,11 +264,17 @@ String description = String.format("器械报损【%s,%s个】数量被修改为%s个!", detail.getMaterialName(), detail.getAmount(), amount); - + Integer oldAmount = detail.getAmount(); detail.setAmount(amount); - objectDao.flush(); - + if(amount == 0 && oldAmount != null && oldAmount > 0 && DatabaseUtil.isPoIdValid(detail.getTousseInstanceId())){//改为0时 + int amount1 = objectDao.countBySql("select case when sum(amount - additionalAmount) is null then 0 else sum(amount - additionalAmount) end from MaterialErrorDamageDetail po where amount>additionalAmount and po.tousseInstanceId=" + detail.getTousseInstanceId()); + if(objectDao.countBySql("select case when sum(amount - additionalAmount) is null then 0 else sum(amount - additionalAmount) end from MaterialErrorDamageDetail po where amount>additionalAmount and po.tousseInstanceId=" + detail.getTousseInstanceId()) == 0){ + TousseInstance ti = (TousseInstance)objectDao.getById(TousseInstance.class.getSimpleName(), detail.getTousseInstanceId()); + ti.setHaveUnSupplementMaterials(null);//已经没有补充材料 + objectDao.saveOrUpdate(ti); + } + } List details = getErrorDamageUnionRecyclingItems(detail); rollBackUnionData(detail, description,dfValue,details); @@ -495,6 +501,7 @@ obj.put("additionalAmount", 0); newGoodsStock(materialDefinitionId, additionalAmount, stockList, warehouse); } + List upateMaterialErrorDamageDetails = new ArrayList();//需要检查对应的包实例是否已经没有未补充材料的丢失报损记录 if (CollectionUtils.isNotEmpty(stockList)) { //修改材料库存 List goodsStockList = goodsStockManager.saveOrUpdateGoodsStock(stockList, @@ -573,6 +580,9 @@ materialDetail.setAdditionalAmount(materialDetail.getAdditionalAmount() + currentAdditionalAmount); if(materialDetail.getAdditionalAmount() != null && materialDetail.getAdditionalAmount() > 0){ materialDetail.setAdditionalPerson(loginUser.getUserFullName()); + if(materialDetail.getAdditionalAmount().intValue() == materialDetail.getAmount().intValue() && DatabaseUtil.isPoIdValid(materialDetail.getTousseInstanceId())){ + upateMaterialErrorDamageDetails.add(materialDetail); + } } materialDetail.setWarehouseId(warehouse.getId()); materialDetail.setWarehouseName(warehouse.getName()); @@ -628,6 +638,16 @@ packingTask.setSupplementTime(additionalTime); packingManager.save(packingTask); } + objectDao.flush(); + if(!upateMaterialErrorDamageDetails.isEmpty()){ + for (MaterialErrorDamageDetail materialDetail : upateMaterialErrorDamageDetails) { + if(objectDao.countBySql("select case when sum(amount - additionalAmount) is null then 0 else sum(amount - additionalAmount) end from MaterialErrorDamageDetail po where amount>additionalAmount and po.tousseInstanceId=" + materialDetail.getTousseInstanceId()) == 0){ + TousseInstance ti = (TousseInstance)objectDao.getById(TousseInstance.class.getSimpleName(), materialDetail.getTousseInstanceId()); + ti.setHaveUnSupplementMaterials(null);//已经没有补充材料 + objectDao.saveOrUpdate(ti); + } + } + } } @Override