Index: ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManagerImpl.java =================================================================== diff -u -r28307 -r29592 --- ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManagerImpl.java (.../IDCardDefinitionManagerImpl.java) (revision 28307) +++ ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManagerImpl.java (.../IDCardDefinitionManagerImpl.java) (revision 29592) @@ -546,6 +546,7 @@ throw new RuntimeException("不需要补充标识牌!"); } error.setAdditionalAmount(error.getAdditionalAmount() + 1); + error.setAdditionalPerson(AcegiHelper.getLoginUser().getUserFullName()); // 新建标识牌实例 IDCardDefinition idCardDefinition = get(idCardDefinitionID); if (idCardDefinition == null) { Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/materialerrordamage/service/MaterialErrorDamageDetailManagerImpl.java =================================================================== diff -u -r28883 -r29592 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/materialerrordamage/service/MaterialErrorDamageDetailManagerImpl.java (.../MaterialErrorDamageDetailManagerImpl.java) (revision 28883) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/materialerrordamage/service/MaterialErrorDamageDetailManagerImpl.java (.../MaterialErrorDamageDetailManagerImpl.java) (revision 29592) @@ -554,6 +554,9 @@ String materialType = obj.optString("materialType"); String departType = obj.optString("departType"); materialDetail.setAdditionalAmount(materialDetail.getAdditionalAmount() + currentAdditionalAmount); + if(materialDetail.getAdditionalAmount() != null && materialDetail.getAdditionalAmount() > 0){ + materialDetail.setAdditionalPerson(loginUser.getUserFullName()); + } materialDetail.setWarehouseId(warehouse.getId()); materialDetail.setWarehouseName(warehouse.getName()); materialDetail.setDamageErrorDepartType(departType); Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r29590 -r29592 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 29590) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 29592) @@ -754,17 +754,25 @@ * @param updateErrorDamageMap 丢失报损记录id对应的修改数量的Map 用于修改丢失报损参数中丢失报损的数量 * @return */ - private int setErrorDamageAmount(List errorDamage, int updateAmount, Map updateErrorDamageMap){ + private int setErrorDamageAmount(List errorDamage, int updateAmount, Map updateErrorDamageMap, TousseDefinition td, MaterialDefinition md){ if(CollectionUtils.isNotEmpty(errorDamage)){ for (MaterialErrorDamageDetail item : errorDamage) { if(updateAmount == 0){//修改量为0,不需要再遍历 break; } if(item.getAmount() + updateAmount > 0){ + appLogManager.saveLog(AcegiHelper.getLoginUser(), + Log.MODEL_RECYCLINGERRORANDDAMAGE, Log.TYPE_UPDATE, + String.format("%s【%s,%s个】数量被修改为%s个!", + item.getType(),md.getNameSpecification(),item.getAmount(),item.getAmount() + updateAmount)); item.setAmount(item.getAmount() + updateAmount); updateErrorDamageMap.put(item.getId(), item.getAmount()); updateAmount = 0; }else{ + appLogManager.saveLog(AcegiHelper.getLoginUser(), + Log.MODEL_RECYCLINGERRORANDDAMAGE, Log.TYPE_UPDATE, + String.format("%s【%s,%s个】数量被修改为0个!", + item.getType(),md.getNameSpecification(),item.getAmount())); updateAmount += item.getAmount(); item.setAmount(0); updateErrorDamageMap.put(item.getId(), 0); @@ -1856,6 +1864,9 @@ if(CollectionUtils.isEmpty(errorDamageDetailArr)){ return; } + //避免重复查询,也用于做日志信息 + Map tousseDefinitionMap = new HashMap(); + Map materialDefinitionMap = new HashMap(); //需要减少丢失报损数量的丢失报损记录 key:包定义id_材料定义id_丢失报损类型itemType的值 value:修改量 Map reduceErrorDamageMap = new HashMap(); Iterator it = errorDamageDetailArr.iterator(); @@ -1873,10 +1884,24 @@ if(!DatabaseUtil.isPoIdValid(tousseDefinitionID)){ throw new RuntimeException("tousseDefinitionID参数异常,值为"+tousseDefinitionID); } + if(!tousseDefinitionMap.containsKey(tousseDefinitionID)){ + TousseDefinition td = tousseDefinitionManager.get(tousseDefinitionID); + if(td == null){ + throw new RuntimeException(tousseDefinitionID + "对应的包定义不存在"); + } + tousseDefinitionMap.put(tousseDefinitionID, td); + } Long materialDefinitionId = obj.optLong("materialDefinitionId"); if(!DatabaseUtil.isPoIdValid(materialDefinitionId)){ throw new RuntimeException("materialDefinitionId参数异常,值为"+materialDefinitionId); } + if(!materialDefinitionMap.containsKey(materialDefinitionId)){ + MaterialDefinition md = materialDefinitionManager.get(materialDefinitionId); + if(md == null){ + throw new RuntimeException(materialDefinitionId + "对应的材料定义不存在"); + } + materialDefinitionMap.put(materialDefinitionId, md); + } String itemType = obj.optString("itemType"); if(StringUtils.isBlank(itemType)){ throw new RuntimeException("itemType参数异常,值为空"); @@ -1947,36 +1972,30 @@ } } Map updateErrorDamageMap = new HashMap(); - reduceAmount = setErrorDamageAmount(unconfirmedMaterialErrorDamageDetails, reduceAmount, updateErrorDamageMap); + TousseDefinition td = tousseDefinitionMap.get(tousseDefinitionID); + MaterialDefinition md = materialDefinitionMap.get(materialDefinitionId); + reduceAmount = setErrorDamageAmount(unconfirmedMaterialErrorDamageDetails, reduceAmount, updateErrorDamageMap, td, md); if(reduceAmount == 0){//说明修改量消耗完了 reduceErrorDamageAmount(updateErrorDamageMap, errorDamageDetailArr); continue; } - reduceAmount = setErrorDamageAmount(useRecordMaterialErrorDamageDetails, reduceAmount, updateErrorDamageMap); + reduceAmount = setErrorDamageAmount(useRecordMaterialErrorDamageDetails, reduceAmount, updateErrorDamageMap, td, md); if(reduceAmount == 0){ reduceErrorDamageAmount(updateErrorDamageMap, errorDamageDetailArr); continue; } - reduceAmount = setErrorDamageAmount(recyclingMaterialErrorDamageDetails, reduceAmount, updateErrorDamageMap); + reduceAmount = setErrorDamageAmount(recyclingMaterialErrorDamageDetails, reduceAmount, updateErrorDamageMap, td, md); if(reduceAmount == 0){ reduceErrorDamageAmount(updateErrorDamageMap, errorDamageDetailArr); continue; } - reduceAmount = setErrorDamageAmount(packMaterialErrorDamageDetails, reduceAmount, updateErrorDamageMap); + reduceAmount = setErrorDamageAmount(packMaterialErrorDamageDetails, reduceAmount, updateErrorDamageMap, td, md); if(reduceAmount == 0){ reduceErrorDamageAmount(updateErrorDamageMap, errorDamageDetailArr); continue; } - reduceAmount = setErrorDamageAmount(otherErrorDamageDetails, reduceAmount, updateErrorDamageMap); + reduceAmount = setErrorDamageAmount(otherErrorDamageDetails, reduceAmount, updateErrorDamageMap, td, md); if(reduceAmount != 0){//修改量最后都没有消耗完,说明扣减数量过多不合理。 - TousseDefinition td = tousseDefinitionManager.get(tousseDefinitionID); - if(td == null){ - throw new RuntimeException(tousseDefinitionID + "对应的包定义不存在"); - } - MaterialDefinition md = materialDefinitionManager.get(materialDefinitionId); - if(md == null){ - throw new RuntimeException(materialDefinitionId + "对应的材料定义不存在"); - } String typeStr = MaterialErrorDamageDetail.TYPE_ERROR.equals(itemType)?"丢失":"报损"; throw new RuntimeException(String.format("包[%s]%s的材料[%s]减少数量超过最大值。", td.getName(),typeStr,md.getNameSpecification())); }