Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java =================================================================== diff -u -r20117 -r20132 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java (.../ImportBasedataManagerImpl.java) (revision 20117) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java (.../ImportBasedataManagerImpl.java) (revision 20132) @@ -4284,21 +4284,19 @@ yesNoSet.add("否"); // 任务组 List taskgroupNames = new ArrayList(); + @SuppressWarnings("unchecked") List taskGroups = objectDao.findAllObjects(TaskGroup.class.getSimpleName()); if (CollectionUtils.isNotEmpty(taskGroups)){ for (TaskGroup tg : taskGroups){ taskgroupNames.add(tg.getTaskGroupName()); } } - int lastRowNum = tousseSheet.getLastRowNum(); Map nameCodeMap = new HashMap(); TousseDefinition tousseDefinition = null; - List materialInstanceList = null; - List diposableGoodsInstanceList = null; - List tousseDefinitionMaterials = null; List tousseDefinitionList = new ArrayList(); //计算器械包排序用的 ListcheckName = new ArrayList(); //检验器械包名称重复 + List comboTousseCompositeList = new ArrayList(); int ComboTousseNameIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "聚合包名称"); int tousseNameIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "器械包名称"); int packageTypeIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "默认包装类型"); @@ -4318,6 +4316,7 @@ String name = ParerUtils.getCellFormatValue(row, ComboTousseNameIndex); if (StringUtils.isNotBlank(name)) { checkName.clear(); + comboTousseCompositeList.clear(); @SuppressWarnings("unchecked") TousseDefinition tousseDefinitions = (TousseDefinition) objectDao .getBySql(TousseDefinition.class.getSimpleName(),"where po.name = '"+ name +"' and po.tousseType = '"+"聚合包"+"'"); @@ -4327,17 +4326,11 @@ .getTousseDefinitionByName(tousseDefinition .getName()); if (persistenceTousseDefinition != null) { - deleteMaterialInstanceByTousseDefinition(persistenceTousseDefinition); tousseDefinition = setPersistenceTousseDefinitionPropertyValueWithOtherTousseDefinition( persistenceTousseDefinition, tousseDefinition); }else{ isNewTousse = true; } - bindTousseDefinition(tousseDefinition,materialInstanceList,diposableGoodsInstanceList); - tousseDefinition.setMaterialInstances(materialInstanceList); - tousseDefinition - .setDiposableGoodsItems(diposableGoodsInstanceList); - TousseDefinitionUtils.resetTousseDefinitionMaterialSequence(tousseDefinitionMaterials); totalCount = saveOrUpdateAndClearCache(totalCount, tousseDefinition); tousseDefinition.setAncestorID(tousseDefinition.getId()); @@ -4357,14 +4350,8 @@ } } successCount++; - materialInstanceList = null; - diposableGoodsInstanceList = null; - tousseDefinitionMaterials = null; tousseDefinition = null; } - materialInstanceList = new ArrayList(); - diposableGoodsInstanceList = new ArrayList(); - tousseDefinitionMaterials = new LinkedList(); tousseDefinition = new TousseDefinition(); // 器械包名称 tousseDefinition.setName(name); @@ -4464,7 +4451,6 @@ tousseDefinition = null; continue; } - String tousseType = "聚合包"; Double price = 0.0; Double borrowPrice = 0.0; @@ -4486,16 +4472,11 @@ TousseDefinition persistenceTousseDefinition = tousseDefinitionManager .getTousseDefinitionByName(tousseDefinition.getName()); if (persistenceTousseDefinition != null) { - deleteMaterialInstanceByTousseDefinition(persistenceTousseDefinition); tousseDefinition = setPersistenceTousseDefinitionPropertyValueWithOtherTousseDefinition( persistenceTousseDefinition, tousseDefinition); }else { isNewTousse = true; } - bindTousseDefinition(tousseDefinition , materialInstanceList,diposableGoodsInstanceList); - tousseDefinition.setMaterialInstances(materialInstanceList); - tousseDefinition.setDiposableGoodsItems(diposableGoodsInstanceList); - TousseDefinitionUtils.resetTousseDefinitionMaterialSequence(tousseDefinitionMaterials); totalCount = saveOrUpdateAndClearCache(totalCount, tousseDefinition); tousseDefinition.setAncestorID(tousseDefinition.getId()); if(isNewTousse){ @@ -4514,17 +4495,18 @@ } } - //一个聚合包包含的普通器械包 + //一个聚合包包含的普通器械包 String tousseDefinitionName = ParerUtils.getCellFormatValue(row, tousseNameIndex); - if(tousseDefinitions!=null){ - @SuppressWarnings("unchecked") - List ctc = objectDao.findBySql(ComboTousseComposite.class.getSimpleName(), - " where comboTousseDefinitionId = "+ tousseDefinitions.getId()); - for(ComboTousseComposite comboTousseComposite : ctc){ - objectDao.delete(comboTousseComposite); - } - } if(StringUtils.isNotBlank(tousseDefinitionName)){ + if(tousseDefinitions!=null){ + @SuppressWarnings("unchecked") + List ctc = objectDao.findBySql(ComboTousseComposite.class.getSimpleName(), + " where comboTousseDefinitionId = "+ tousseDefinitions.getId()); + for(ComboTousseComposite comboTousseComposite : ctc){ + comboTousseCompositeList.add(comboTousseComposite); + objectDao.delete(comboTousseComposite); + } + } checkName.add(tousseDefinitionName); tousseDefinitionList.clear(); TousseDefinition td = (TousseDefinition) objectDao.getBySql @@ -4562,7 +4544,6 @@ tousseDefinition = null; continue; } - } //所属科室 @@ -4607,6 +4588,7 @@ } } }else{ + if(tousseDefinitions==null){ @SuppressWarnings("unchecked") List cssdHandleToussess = objectDao .findBySql(CssdHandleTousses.class.getSimpleName(),"where tousseDefinitionId ="+ tousseDefinition.getId()); @@ -4624,6 +4606,21 @@ failureCount, sb, currentRowNum,unitNameIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); tousseDefinition = null; continue; + }else{ + @SuppressWarnings("unchecked") + List ctc = objectDao.findBySql(ComboTousseComposite.class.getSimpleName(), + " where comboTousseDefinitionId = "+ tousseDefinitions.getId()); + for(ComboTousseComposite comboTousseComposite : ctc){ + objectDao.delete(comboTousseComposite); //删除新建的聚合包和普通器械包的关系 + } + for(ComboTousseComposite comboTousse : comboTousseCompositeList){ + objectDao.save(comboTousse);; //保存原有的聚合包和普通器械包关系表 + } + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,unitNameIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + tousseDefinition = null; + continue; + } } } else { if (tousseDefinition == null) { @@ -4632,28 +4629,11 @@ String tousseDefinitionName = ParerUtils.getCellFormatValue(row, tousseNameIndex); if(StringUtils.isNotBlank(tousseDefinitionName)){ if(checkName.contains(tousseDefinitionName)){ - @SuppressWarnings("unchecked") - List comboTousseComposites = objectDao - .findBySql(ComboTousseComposite.class.getSimpleName(),"where comboTousseDefinitionId ="+ tousseDefinition.getId()); - for(ComboTousseComposite comboTousseComposite : comboTousseComposites){ - objectDao.delete(comboTousseComposite); - } - @SuppressWarnings("unchecked") - List comboTousseOrgUints = objectDao - .findBySql(ComboTousseOrgUint.class.getSimpleName(),"where comboTousseDefinitionId ="+ tousseDefinition.getId()); - for(ComboTousseOrgUint comboTousseOrgUint : comboTousseOrgUints){ - objectDao.delete(comboTousseOrgUint); - } - @SuppressWarnings("unchecked") - List cssdHandleToussess = objectDao - .findBySql(CssdHandleTousses.class.getSimpleName(),"where tousseDefinitionId ="+ tousseDefinition.getId()); - for(CssdHandleTousses cssdHandleTousses : cssdHandleToussess){ - objectDao.delete(cssdHandleTousses); - } - failureCount = appendFailureRowNumAndRecordFailureNum( - failureCount, sb, currentRowNum,tousseNameIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_DUPLICATE); - tousseDefinition = null; - continue; + aggregationOperations(tousseDefinition.getId()); + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,tousseNameIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_DUPLICATE); + tousseDefinition = null; + continue; } checkName.add(tousseDefinitionName); TousseDefinition td = (TousseDefinition) objectDao.getBySql @@ -4666,24 +4646,7 @@ comboTousseComposite.setSequence(tousseDefinitionList.size()); objectDao.save(comboTousseComposite); }else{ - @SuppressWarnings("unchecked") - List comboTousseComposites = objectDao - .findBySql(ComboTousseComposite.class.getSimpleName(),"where comboTousseDefinitionId ="+ tousseDefinition.getId()); - for(ComboTousseComposite comboTousseComposite : comboTousseComposites){ - objectDao.delete(comboTousseComposite); - } - @SuppressWarnings("unchecked") - List comboTousseOrgUints = objectDao - .findBySql(ComboTousseOrgUint.class.getSimpleName(),"where comboTousseDefinitionId ="+ tousseDefinition.getId()); - for(ComboTousseOrgUint comboTousseOrgUint : comboTousseOrgUints){ - objectDao.delete(comboTousseOrgUint); - } - @SuppressWarnings("unchecked") - List cssdHandleToussess = objectDao - .findBySql(CssdHandleTousses.class.getSimpleName(),"where tousseDefinitionId ="+ tousseDefinition.getId()); - for(CssdHandleTousses cssdHandleTousses : cssdHandleToussess){ - objectDao.delete(cssdHandleTousses); - } + aggregationOperations(tousseDefinition.getId()); objectDao.delete(tousseDefinition); failureCount = appendFailureRowNumAndRecordFailureNum( failureCount, sb, currentRowNum,tousseNameIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_NOT_DEFINED); @@ -4718,4 +4681,29 @@ } return totalCount; } + + /** + * 导入失败删除和聚合包有关系的表内数据 + * @param tousseDefinitionId 聚合包ID + */ + private void aggregationOperations(Long tousseDefinitionId){ + @SuppressWarnings("unchecked") + List comboTousseComposites = objectDao + .findBySql(ComboTousseComposite.class.getSimpleName(),"where comboTousseDefinitionId ="+ tousseDefinitionId); + for(ComboTousseComposite comboTousseComposite : comboTousseComposites){ + objectDao.delete(comboTousseComposite); + } + @SuppressWarnings("unchecked") + List comboTousseOrgUints = objectDao + .findBySql(ComboTousseOrgUint.class.getSimpleName(),"where comboTousseDefinitionId ="+ tousseDefinitionId); + for(ComboTousseOrgUint comboTousseOrgUint : comboTousseOrgUints){ + objectDao.delete(comboTousseOrgUint); + } + @SuppressWarnings("unchecked") + List cssdHandleToussess = objectDao + .findBySql(CssdHandleTousses.class.getSimpleName(),"where tousseDefinitionId ="+ tousseDefinitionId); + for(CssdHandleTousses cssdHandleTousses : cssdHandleToussess){ + objectDao.delete(cssdHandleTousses); + } + } }