Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r34843 -r34858 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 34843) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 34858) @@ -8718,6 +8718,7 @@ } //丢失、报损项关联器械包实例 for (TousseInstance ti : tousseList) { + Map errAmountMap = new HashMap(); for (Long key : materialMap.keySet()) { List result = materialMap.get(key); if(result == null){ @@ -8727,10 +8728,12 @@ if (ms == null) { throw new RuntimeException("数据异常,请联系管理员!"); } + MaterialDefinition md = ms.getMaterialDefinition(); int materialAmount = ms.getCount(); if (materialAmount == 0) { throw new RuntimeException("数据异常,请联系管理员!"); } + String mdKey = "_" + md.getName() + "_" + md.getUnit() + "_" + md.getSpecification(); for (MaterialErrorDamageDetail detail : result) { if(materialAmount <= 0){ break; @@ -8745,6 +8748,12 @@ } // 只能补一个包 if (unSupplementAmont <= materialAmount) { + String mapKey = detail.getType() + mdKey; + if(errAmountMap.containsKey(mapKey)){ + errAmountMap.put(mapKey, MathTools.add(unSupplementAmont, errAmountMap.get(mapKey)).intValue()); + }else{ + errAmountMap.put(mapKey, unSupplementAmont); + } ti.setHaveUnSupplementMaterials(true); //ti.getErrorDamageDetails().add(detail); objectDao.saveOrUpdate(ti); @@ -8757,10 +8766,88 @@ } } } + updateRemark(errAmountMap, ti); } } } - + /** + * 修改包实例的丢失报损备注 + * @param errAmountMap + * @param ti + */ + private void updateRemark(Map errAmountMap, TousseInstance ti){ + if(MapUtils.isNotEmpty(errAmountMap)){ + String errorMsg = null; + String damageMsg = null; + String msg = ""; + for (String mapKey : errAmountMap.keySet()) { + String[] keyArr = mapKey.split("_"); + Integer amount = errAmountMap.get(mapKey); + if(amount == null || amount.intValue() == 0){ + continue; + } + String type = keyArr[0]; + String materialName = keyArr[1]; + String unit = keyArr[2]; + if(unit == null){ + unit = ""; + } + String specification = keyArr[3]; + if(StringUtils.isNotBlank(specification)){ + materialName += "[" + specification + "]";; + } + if(MaterialErrorDamageDetail.TYPE_ERROR.equals(type)){ + if(errorMsg == null){ + errorMsg = "丢失:" + materialName + "x" + amount.intValue() + unit; + }else{ + errorMsg += "," + materialName + "x" + amount.intValue() + unit; + } + }else if(MaterialErrorDamageDetail.TYPE_DAMAGE.equals(type)){ + if(damageMsg == null){ + damageMsg = "报损:" + materialName + "x" + amount.intValue() + unit; + } else { + damageMsg += "," + materialName + "x" + amount.intValue() + unit; + } + } + } + if(StringUtils.isNotBlank(errorMsg)){ + msg += errorMsg + ";"; + } + if(StringUtils.isNotBlank(damageMsg)){ + msg += damageMsg + ";"; + } + if(msg.endsWith(";")){ + msg = msg.substring(0, msg.length()-1); + msg += "。"; + } + if(StringUtils.isNotBlank(msg)){ + ErrorDamageRemark errorDamageRemark = ti.getErrorDamageRemark(); + if(StringUtils.isNotBlank(ti.getRemark()) && (ti.getRemark().contains("丢失:") || ti.getRemark().contains("报损:"))){ + int index = ti.getRemark().indexOf("。"); + if(index != -1){ + msg += ti.getRemark().substring(index + 1); + }else{ + msg += ti.getRemark(); + } + if(errorDamageRemark != null){ + if(StringUtils.isNotBlank(errorDamageRemark.getCustomErrorDamageRemark())){ + String customErrorDamageRemark = errorDamageRemark.getCustomErrorDamageRemark().replace(errorDamageRemark.getErrorDamageRemark(), ""); + if(StringUtils.isNotBlank(customErrorDamageRemark)){ + errorDamageRemark.setCustomErrorDamageRemark(msg + customErrorDamageRemark); + }else{ + errorDamageRemark.setCustomErrorDamageRemark(msg); + } + }else{ + errorDamageRemark.setCustomErrorDamageRemark(msg); + } + errorDamageRemark.setErrorDamageRemark(msg); + objectDao.saveOrUpdate(errorDamageRemark); + } + } + } + ti.setRemark(msg); + } + } @Override public JSONArray getErrorDamgeDetailByTousseInstanceId(String tousseInstanceId) { JSONArray data = new JSONArray();