Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r30200 -r30283 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 30200) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 30283) @@ -926,7 +926,7 @@ toolAndImplantAmount.optInt("toolAmount"), toolAndImplantAmount.optInt("implantAmount"),department, td.getPrintOrgSource(),idCardDefinitionUseAmount,idCardDefinitionIdNumber, idCardDefinitionDescription, objectDao,td.getBarcodePaperType(),tousseInstance.getWashOperator(),tousseInstance.getWashOperatorCode(), - tousseInstance.getWeight(),tousseInstance.getRemark(),td.getPrintAmountForPrint(),BooleanUtils.toBooleanDefaultIfNull(tousseInstance.getHaveUnSupplementMaterials(), false),tousseInstance.getIsUrgentTousse(),tousseInstance.getTousseInstancesAmountBelongToThisComboTousse(objectDao)); + tousseInstance.getWeight(),tousseInstance.getRemark(),td.getPrintAmountForPrint(objectDao),BooleanUtils.toBooleanDefaultIfNull(tousseInstance.getHaveUnSupplementMaterials(), false),tousseInstance.getIsUrgentTousse(),tousseInstance.getTousseInstancesAmountBelongToThisComboTousse(objectDao)); // 特殊单的包实例处理 if(tousseInstance.getForeignProxyItem_id() != null){ ForeignProxyDisinfection foreignProxyDisinfection = tousseInstance.getForeignProxyDisinfection(objectDao); @@ -2687,7 +2687,7 @@ toolAndImplantAmount.optInt("toolAmount"), toolAndImplantAmount.optInt("implantAmount"),TousseInstanceUtils.getTousseInstanceDepartForPrint(tousseInstance) , td.getPrintOrgSource(), idCardDefinitionUseAmount,idCardDefinitionIdNumber,idCardDefinitionDescription,objectDao,td.getBarcodePaperType(),tousseInstance.getWashOperator(),tousseInstance.getWashOperatorCode(), - tousseInstance.getWeight(),tousseInstance.getRemark(),td.getPrintAmountForPrint(),BooleanUtils.toBooleanDefaultIfNull(tousseInstance.getHaveUnSupplementMaterials(), false),tousseInstance.getIsUrgentTousse(),tousseInstance.getTousseInstancesAmountBelongToThisComboTousse(objectDao));// TODO 需要确认审核后打印,是否也支持打印多份 + tousseInstance.getWeight(),tousseInstance.getRemark(),td.getPrintAmountForPrint(objectDao),BooleanUtils.toBooleanDefaultIfNull(tousseInstance.getHaveUnSupplementMaterials(), false),tousseInstance.getIsUrgentTousse(),tousseInstance.getTousseInstancesAmountBelongToThisComboTousse(objectDao));// TODO 需要确认审核后打印,是否也支持打印多份 toussesArray.add(obj); JSONObject logObj = new JSONObject(); JSONUtil.addLogProperty(logObj, "tousseInstanceId", tousseInstance.getId()); @@ -3326,7 +3326,7 @@ tousse.put("washOperatorCode", tousseInstance.getWashOperatorCode()); tousse.put("weight", weight); tousse.put("remark", remark); - tousse.put("printAmount", tousseDefinition.getPrintAmountForPrint()); + tousse.put("printAmount", tousseDefinition.getPrintAmountForPrint(objectDao)); tousse.put("isUrgentTousse", tousseInstance.getIsUrgentTousse()); } @@ -4382,7 +4382,7 @@ toolAndImplantAmount.optInt("toolAmount"), toolAndImplantAmount.optInt("implantAmount"),TousseInstanceUtils.getTousseInstanceDepartForPrint(tousse), tdOfPackingTask.getPrintOrgSource(),idCardDefinitionUseAmount,idCardDefinitionIdNumber,idCardDefinitionDescription,objectDao,tdOfPackingTask.getBarcodePaperType(),tousse.getWashOperator(),tousse.getWashOperatorCode(), - tousse.getWeight(),tousse.getRemark(),tdOfPackingTask.getPrintAmountForPrint(),BooleanUtils.toBooleanDefaultIfNull(tousse.getHaveUnSupplementMaterials(), false),tousse.getIsUrgentTousse(),0); + tousse.getWeight(),tousse.getRemark(),tdOfPackingTask.getPrintAmountForPrint(objectDao),BooleanUtils.toBooleanDefaultIfNull(tousse.getHaveUnSupplementMaterials(), false),tousse.getIsUrgentTousse(),0); setPrintCause(currentPackingTask,obj); toussesArray.add(obj); } @@ -7013,7 +7013,7 @@ } String remark = null; - Integer printAmount = JSONUtil.optInteger(comboTousseJson, "printAmount", td.getPrintAmountForPrint()); + Integer printAmount = JSONUtil.optInteger(comboTousseJson, "printAmount", td.getPrintAmountForPrint(objectDao)); if(printAmount == null){ printAmount = 1; } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/toussedefinition/service/TousseDefinitionUtils.java =================================================================== diff -u -r21480 -r30283 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/toussedefinition/service/TousseDefinitionUtils.java (.../TousseDefinitionUtils.java) (revision 21480) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/toussedefinition/service/TousseDefinitionUtils.java (.../TousseDefinitionUtils.java) (revision 30283) @@ -8,6 +8,8 @@ import java.util.LinkedList; import java.util.List; +import org.hibernate.LazyInitializationException; + import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodsInstance; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; @@ -236,29 +238,52 @@ return tousseName; } - public static boolean haveToolMaterials(TousseDefinition td) { + public static boolean haveToolMaterials(TousseDefinition td, ObjectDao objectDao) { List materialInstanceList = td.getMaterialInstances(); if(materialInstanceList == null){ return false; } - - for (MaterialInstance materialInstance : materialInstanceList) { - if(!materialInstance.isImplant()){ - return true; + if(TousseDefinition.UNINCLUDE_IMPLANT == td.getIncludeImplant()){ + return true; + } + try { + for (MaterialInstance materialInstance : materialInstanceList) { + if(!materialInstance.isImplant()){ + return true; + } } + } catch (LazyInitializationException e) { + materialInstanceList = objectDao.findBySql(MaterialInstance.class.getSimpleName(), " where po.tousse.id = " + td.getId()); + for (MaterialInstance materialInstance : materialInstanceList) { + if(!materialInstance.isImplant()){ + return true; + } + } + } catch (Exception e){ + e.printStackTrace(); } return false; } - public static boolean haveImplantMaterials(TousseDefinition td) { + public static boolean haveImplantMaterials(TousseDefinition td, ObjectDao objectDao) { List materialInstanceList = td.getMaterialInstances(); if(materialInstanceList == null){ return false; } - - for (MaterialInstance materialInstance : materialInstanceList) { - if(materialInstance.isImplant()){ - return true; + try { + for (MaterialInstance materialInstance : materialInstanceList) {//报懒加载的话 就查数据库 + if(materialInstance.isImplant()){ + return true; + } } + } catch (LazyInitializationException e) { + materialInstanceList = objectDao.findBySql(MaterialInstance.class.getSimpleName(), " where po.tousse.id = " + td.getId()); + for (MaterialInstance materialInstance : materialInstanceList) { + if(materialInstance.isImplant()){ + return true; + } + } + } catch (Exception e){ + e.printStackTrace(); } return false; } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java =================================================================== diff -u -r30030 -r30283 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java (.../TousseDefinition.java) (revision 30030) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java (.../TousseDefinition.java) (revision 30283) @@ -1860,7 +1860,7 @@ return printAmount; } @Transient - public Integer getPrintAmountForPrint() { + public Integer getPrintAmountForPrint(ObjectDao objectDao) { if(isForeignOrSplitTousse()){ if(printAmount == 0){ return printAmount; @@ -1869,13 +1869,13 @@ if(StringUtils.equals(printAmountSource, PRINTAMOUNTSOURCE_ALL_FOREIGNTOUSSE)){ return printAmount; }else if(StringUtils.equals(printAmountSource, PRINTAMOUNTSOURCE_INCLUDE_TOOL)){ - if(TousseDefinitionUtils.haveToolMaterials(this)){ + if(TousseDefinitionUtils.haveToolMaterials(this, objectDao)){ return printAmount; }else{ return 1; } }else if(StringUtils.equals(printAmountSource, PRINTAMOUNTSOURCE_INCLUDE_IMPLANT)){ - if(TousseDefinitionUtils.haveImplantMaterials(this)){ + if(TousseDefinitionUtils.haveImplantMaterials(this, objectDao)){ return printAmount; }else{ return 1; Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r30272 -r30283 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 30272) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 30283) @@ -7878,7 +7878,7 @@ toolAndImplantAmount.optInt("implantAmount"), TousseInstanceUtils.getTousseInstanceDepartForPrint(ti), td.getPrintOrgSource(), idCardDefinitionUseAmount, idCardDefinitionIdNumber, idCardDefinitionDescription, objectDao, td.getBarcodePaperType(), ti.getWashOperator(), ti.getWashOperatorCode(), - ti.getWeight(),ti.getRemark(), td.getPrintAmountForPrint(), BooleanUtils.toBooleanDefaultIfNull(ti.getHaveUnSupplementMaterials(), false),ti.getIsUrgentTousse(),ti.getTousseInstancesAmountBelongToThisComboTousse(objectDao)); + ti.getWeight(),ti.getRemark(), td.getPrintAmountForPrint(objectDao), BooleanUtils.toBooleanDefaultIfNull(ti.getHaveUnSupplementMaterials(), false),ti.getIsUrgentTousse(),ti.getTousseInstancesAmountBelongToThisComboTousse(objectDao)); jsonArr.add(result); }