Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/action/ButtJointUseRecordAction.java =================================================================== diff -u -r32539 -r32567 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/action/ButtJointUseRecordAction.java (.../ButtJointUseRecordAction.java) (revision 32539) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/action/ButtJointUseRecordAction.java (.../ButtJointUseRecordAction.java) (revision 32567) @@ -4,7 +4,9 @@ import java.util.Collections; import java.util.Comparator; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -530,12 +532,36 @@ if (StringUtils.isNotBlank(materialItems)) { JSONArray jsonArray = JSONArray.fromObject(materialItems); int len = jsonArray.size(); + Map tdMap = new HashMap(); for (int i = 0; i < len; i++) { JSONObject obj = jsonArray.optJSONObject(i); String mi_id = obj.optString("mi_id"); Integer amount = obj.optInt("amount"); MaterialInstance mi = materialInstanceManager .get(mi_id); + TousseDefinition tousseDefinition = mi.getTousse(); + if(TousseDefinition.PACKAGE_TYPE_SPLIT.equals(tousseDefinition.getTousseType())){ + TousseDefinition ancestorTd = null; + if(tdMap.containsKey(tousseDefinition.getAncestorID())){ + ancestorTd = tdMap.get(tousseDefinition.getAncestorID()); + }else{ + ancestorTd = (TousseDefinition)objectDao.getById(TousseDefinition.class.getSimpleName(), tousseDefinition.getAncestorID()); + tdMap.put(tousseDefinition.getAncestorID(), ancestorTd); + } + for (MaterialInstance materialInstance : ancestorTd.getMaterialInstances()) { + if(materialInstance.getMaterialDefinitionId() == mi.getMaterialDefinitionId()){ + materialInstance.setImplantAmountOfUseRecord(amount); + if(materialInstance.getUsedAmountOfIncludeImplant() == null){ + materialInstance.setUsedAmountOfIncludeImplant(amount); + if("是".equals(materialInstance.getIsImplant())){ + materialInstance.setApplyAmount(materialInstance.getCount() - amount); + } + } + materialInstanceManager.save(materialInstance); + break; + } + } + } if (mi != null) { mi.setImplantAmountOfUseRecord(amount); if(mi.getUsedAmountOfIncludeImplant() == null){