Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java =================================================================== diff -u -r20035 -r20115 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java (.../ImportBasedataManagerImpl.java) (revision 20035) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java (.../ImportBasedataManagerImpl.java) (revision 20115) @@ -62,6 +62,8 @@ import com.forgon.disinfectsystem.entity.basedatamanager.supplier.Supplier; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.taskGroup.TaskGroup; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.ComboTousseComposite; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.ComboTousseOrgUint; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinitionMaterial; import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; @@ -280,6 +282,9 @@ // 导入"部门信息"基础数据 totalCount.set(importDepartData( wb.getSheet("部门信息"), msg, totalCount.intValue())); + // 导入"聚合包"基础数据 + totalCount.set(importComboTousseBasedata(wb.getSheet("聚合包管理"), msg, + totalCount.intValue(), packageTypes, sterilingMethods)); objectDao.flush(); } catch (Exception e) { e.printStackTrace(); @@ -4254,4 +4259,470 @@ } return msg; } + /** + * 聚合包导入或修改 + * @param tousseSheet + * @param msg + * @param totalCount + * @param packageTypes + * @param sterilingMethods + * @return + */ + @SuppressWarnings("unused") + private int importComboTousseBasedata(HSSFSheet tousseSheet, + Map msg, int totalCount, + List packageTypes, List sterilingMethods) { + int successCount = 0, failureCount = 0; + StringBuffer sb = new StringBuffer(); + try { + Map nameToIndexMap = ExcelUtils.autoDetectSheepAndCreateColumnNameToIndexMap(tousseSheet); + if (tousseSheet == null) { + return totalCount; + } + Set yesNoSet = new HashSet(); + yesNoSet.add("是"); + yesNoSet.add("否"); + // 任务组 + List taskgroupNames = new ArrayList(); + 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(); //检验器械包名称重复 + int ComboTousseNameIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "聚合包名称"); + int tousseNameIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "器械包名称"); + int packageTypeIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "默认包装类型"); + int sterilingMethodIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "默认灭菌程序"); + int taskGroupNameIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "任务组"); + int isReviewIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "是否审核"); + int externalCodeIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "外部编码"); + int tousseBarcodePageTypeIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "标签纸类型"); + int handlerDepartIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "处理科室"); + int unitNameIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "所属科室"); + for (int i = 1; i <= lastRowNum; i++) { + HSSFRow row = tousseSheet.getRow(i); + int currentRowNum = i + 1; + if (row == null || ParerUtils.isBlankRow(row)) { + continue; + } + checkName.clear(); + String name = ParerUtils.getCellFormatValue(row, ComboTousseNameIndex); + if (StringUtils.isNotBlank(name)) { + @SuppressWarnings("unchecked") + TousseDefinition tousseDefinitions = (TousseDefinition) objectDao + .getBySql(TousseDefinition.class.getSimpleName(),"where po.name = '"+ name +"' and po.tousseType = '"+"聚合包"+"'"); + if (tousseDefinition != null) { + boolean isNewTousse = false; + 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){ + tousseDefinitionManager.addCssdHandleToussesConfig(tousseDefinition); + }else{ + //如果优先处理科室发生修改且供应室处理器械包配置未配置该包的处理科室,则新增对应供应室处理器械包配置 + CssdHandleTousses cssdHandleTousses = + (CssdHandleTousses)objectDao.getBySql(CssdHandleTousses.class.getSimpleName(), + " where tousseDefinitionId = " + tousseDefinition.getAncestorID() + " and orgUnitCode = '" + tousseDefinition.getHandlerDepartCode() + "'"); + if(cssdHandleTousses == null){ + tousseDefinitionManager.addCssdHandleToussesConfig(tousseDefinition); + }else{ + //否则更新任务组 + cssdHandleTousses.setTaskGroup(tousseDefinition.getTaskGroup()); + objectDao.saveOrUpdate(cssdHandleTousses); + } + } + successCount++; + materialInstanceList = null; + diposableGoodsInstanceList = null; + tousseDefinitionMaterials = null; + tousseDefinition = null; + } + materialInstanceList = new ArrayList(); + diposableGoodsInstanceList = new ArrayList(); + tousseDefinitionMaterials = new LinkedList(); + tousseDefinition = new TousseDefinition(); + // 器械包名称 + tousseDefinition.setName(name); + tousseDefinition.setForDisplay(true); + + // ************** 验证录入的值必须已出现在集合或字符串中 ******************* + + // 任务组 + String taskgroupName = ParerUtils.getCellFormatValue(row, taskGroupNameIndex); + // 录入的任务组的值必须要先存在该集合中 + if (StringUtils.isNotBlank(taskgroupName)) { + if (!taskgroupNames.contains(taskgroupName)) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,taskGroupNameIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_NOT_DEFINED); + tousseDefinition = null; + continue; + } + } else if (taskgroupNames.size() > 0) { + taskgroupName = taskgroupNames.get(0);// 默认值 + } + + // 默认包装类型 + String packageType = ParerUtils.getCellFormatValue(row, packageTypeIndex); + // 录入的默认包装类型的值必须要先存在该集合中 + if (packageType == null + || !packageTypes.contains(packageType)) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,packageTypeIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_NOT_DEFINED); + tousseDefinition = null; + continue; + } + + // 灭菌程序 + String sterilingMethod = ParerUtils.getCellFormatValue(row, sterilingMethodIndex); + // 录入的大小的值必须要先存在该字符串中 + if (StringUtils.isNotBlank(sterilingMethod) + && !sterilingMethods.contains(sterilingMethod)) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,sterilingMethodIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_NOT_DEFINED); + tousseDefinition = null; + continue; + } + + // 拼音码 + String spelling = GB2Alpha.string2Alpha(tousseDefinition + .getName()); + + // 五笔码 + String wbCode = GB2WB.getWBCode(tousseDefinition.getName()); + + // 外部编码 + String externalCode = ParerUtils.getCellFormatValue(row, externalCodeIndex); + tousseDefinition.setExternalCode(externalCode); + + // 标签纸类型 + String tousseBarcodePageType = ParerUtils.getCellFormatValue( + row, tousseBarcodePageTypeIndex); + // 录入的大小的值必须要先存在该字符串中 + if (StringUtils.isNotBlank(tousseBarcodePageType)) { + List strArray = labelTemplateManager.getAllLabelTemplate(); + if(!strArray.contains(tousseBarcodePageType)){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,tousseBarcodePageTypeIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_NOT_DEFINED); + tousseDefinition = null; + continue; + } + } + tousseDefinition.setBarcodePaperType(tousseBarcodePageType); + + // 处理科室 + String handlerDepart = ParerUtils.getCellFormatValue(row, handlerDepartIndex); + if (StringUtils.isNotBlank(handlerDepart)) { + handlerDepart = handlerDepart.trim(); + tousseDefinition.setHandlerDepartName(handlerDepart); + if (nameCodeMap.containsKey(handlerDepart)) { + tousseDefinition.setHandlerDepartCode(nameCodeMap + .get(handlerDepart)); + }else{ + OrgUnit orgUnit = orgUnitManager + .getCurrentOrgUintByName(handlerDepart); + if (orgUnit == null) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,handlerDepartIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_NOT_DEFINED); + tousseDefinition = null; + continue; + } else { + tousseDefinition.setHandlerDepartCode(orgUnit + .getOrgUnitCoding()); + nameCodeMap.put(handlerDepart, + orgUnit.getOrgUnitCoding()); + } + } + }else{ + objectDao.delete(tousseDefinition); + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,handlerDepartIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + tousseDefinition = null; + continue; + } + String tousseType = "聚合包"; + Double price = 0.0; + Double borrowPrice = 0.0; + Double proxyDisinfectionPrice =0.0; + setTousseDefinitionWithPropertyValue(tousseDefinition, + tousseType, taskgroupName, null, + packageType, null, spelling, wbCode, price, + proxyDisinfectionPrice, borrowPrice, null, + sterilingMethod, null,null,null); + + // 是否审核 + String isReview = ParerUtils.getCellFormatValue(row, isReviewIndex); + if(!yesNoSet.contains(isReview)){ + isReview = TousseDefinition.STR_YES; + } + tousseDefinition.setIsReview(isReview); + + + String tousseName = ParerUtils.getCellFormatValue(row, tousseNameIndex); + boolean isNewTousse = false; + 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){ + tousseDefinitionManager.addCssdHandleToussesConfig(tousseDefinition); + }else{ + //如果优先处理科室发生修改且供应室处理器械包配置未配置该包的处理科室,则新增对应供应室处理器械包配置 + CssdHandleTousses cssdHandleTousses = + (CssdHandleTousses)objectDao.getBySql(CssdHandleTousses.class.getSimpleName(), + " where tousseDefinitionId = " + tousseDefinition.getAncestorID() + " and orgUnitCode = '" + tousseDefinition.getHandlerDepartCode() + "'"); + if(cssdHandleTousses == null){ + tousseDefinitionManager.addCssdHandleToussesConfig(tousseDefinition); + }else{ + //否则更新任务组 + cssdHandleTousses.setTaskGroup(tousseDefinition.getTaskGroup()); + objectDao.saveOrUpdate(cssdHandleTousses); + } + } + + //一个聚合包包含的普通器械包 + 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)){ + checkName.add(tousseDefinitionName); + tousseDefinitionList.clear(); + TousseDefinition td = (TousseDefinition) objectDao.getBySql + (TousseDefinition.class.getSimpleName(), " where (po.tousseType = '" + "器械包" + "' or po.tousseType = '" + "敷料包" + "') and po.isDisable = '"+ Constants.STR_NO +"' and po.name = '" + tousseDefinitionName + "'"); + if(td != null){ + ComboTousseComposite comboTousseComposite = new ComboTousseComposite(); + tousseDefinitionList.add(td); + comboTousseComposite.setTousseDefinitionId(td.getId()); + comboTousseComposite.setSequence(tousseDefinitionList.size()); + comboTousseComposite.setComboTousseDefinitionId(tousseDefinition.getId()); + objectDao.save(comboTousseComposite); + }else{ + @SuppressWarnings("unchecked") + List cssdHandleToussess = objectDao + .findBySql(CssdHandleTousses.class.getSimpleName(),"where tousseDefinitionId ="+ tousseDefinition.getId()); + for(CssdHandleTousses cssdHandleTousses : cssdHandleToussess){ + objectDao.delete(cssdHandleTousses); + } + objectDao.delete(tousseDefinition); + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,tousseNameIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_NOT_DEFINED); + tousseDefinition = null; + continue; + } + }else{ + if(!isNewTousse){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,tousseNameIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + tousseDefinition = null; + continue; + }else{ + objectDao.deleteById(TousseDefinition.class.getSimpleName(),tousseDefinition.getId().toString()); + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,tousseNameIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + tousseDefinition = null; + continue; + } + + } + + //所属科室 + String unitName = ParerUtils.getCellFormatValue(row, unitNameIndex); + if(unitName != null){ + String[] sourceStrArray = unitName.split(",");//分割出来的字符数组 + @SuppressWarnings("unchecked") + List comboTousseOrgUints = objectDao + .findBySql(ComboTousseOrgUint.class.getSimpleName(),"where po.comboTousseDefinitionId = " + tousseDefinition.getId()); + if(comboTousseOrgUints != null){ + for(ComboTousseOrgUint cto : comboTousseOrgUints){ + objectDao.deleteById(ComboTousseOrgUint.class.getSimpleName(),cto.getId().toString()); + } + } + for(int j = 0; j < sourceStrArray.length; j++) { + OrgUnit orgUnit =orgUnitManager.getCurrentOrgUintByName(sourceStrArray[j]); + if(orgUnit != null){ + ComboTousseOrgUint comboTousseOrgUint = new ComboTousseOrgUint(); + comboTousseOrgUint.setUnitName(orgUnit.getName()); + comboTousseOrgUint.setUnitCode(orgUnit.getOrgUnitCoding()); + comboTousseOrgUint.setComboTousseDefinitionId(tousseDefinition.getId()); + comboTousseOrgUint.setTousseType("聚合包"); + objectDao.save(comboTousseOrgUint); + }else{ + @SuppressWarnings("unchecked") + List cssdHandleToussess = objectDao + .findBySql(CssdHandleTousses.class.getSimpleName(),"where tousseDefinitionId ="+ tousseDefinition.getId()); + for(CssdHandleTousses cssdHandleTousses : cssdHandleToussess){ + objectDao.delete(cssdHandleTousses); + } + @SuppressWarnings("unchecked") + List comboTousseComposites = objectDao + .findBySql(ComboTousseComposite.class.getSimpleName(),"where comboTousseDefinitionId ="+ tousseDefinition.getId()); + for(ComboTousseComposite comboTousseComposite : comboTousseComposites){ + objectDao.delete(comboTousseComposite); + } + objectDao.delete(tousseDefinition); + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,unitNameIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_NOT_DEFINED); + tousseDefinition = null; + continue; + } + } + }else{ + @SuppressWarnings("unchecked") + List cssdHandleToussess = objectDao + .findBySql(CssdHandleTousses.class.getSimpleName(),"where tousseDefinitionId ="+ tousseDefinition.getId()); + for(CssdHandleTousses cssdHandleTousses : cssdHandleToussess){ + objectDao.delete(cssdHandleTousses); + } + @SuppressWarnings("unchecked") + List comboTousseComposites = objectDao + .findBySql(ComboTousseComposite.class.getSimpleName(),"where comboTousseDefinitionId ="+ tousseDefinition.getId()); + for(ComboTousseComposite comboTousseComposite : comboTousseComposites){ + objectDao.delete(comboTousseComposite); + } + objectDao.delete(tousseDefinition); + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,unitNameIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + tousseDefinition = null; + continue; + } + } else { + if (tousseDefinition == null) { + continue; + } else { + 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; + } + checkName.add(tousseDefinitionName); + TousseDefinition td = (TousseDefinition) objectDao.getBySql + (TousseDefinition.class.getSimpleName(), " where (po.tousseType = '" + "器械包" + "' or po.tousseType = '" + "敷料包" + "') and po.isDisable = '"+ Constants.STR_NO +"' and po.name = '" + tousseDefinitionName + "'"); + if(td != null){ + ComboTousseComposite comboTousseComposite = new ComboTousseComposite(); + tousseDefinitionList.add(td); + comboTousseComposite.setTousseDefinitionId(td.getId()); + comboTousseComposite.setComboTousseDefinitionId(tousseDefinition.getId()); + 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); + } + objectDao.delete(tousseDefinition); + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,tousseNameIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_NOT_DEFINED); + tousseDefinition = null; + continue; + } + }else{ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,tousseNameIndex,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + tousseDefinition = null; + continue; + } + } + } + + } + + // 如果是最后一个 + if (tousseDefinition != null) { + + successCount++; + } + + // 格式:成功插入数量#插入失败数量#失败行1,失败行2... + msg.put("聚合包管理", + successCount + "#" + failureCount + "#" + sb.toString()); + return totalCount; + } catch (Exception e) { + e.printStackTrace(); + if (sb.length() > 0) { + sb.append("|"); + } + sb.append(e.getMessage()); + msg.put("聚合包管理", + successCount + "#" + failureCount + "#" + sb.toString()); + } + return totalCount; + } } Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ExportBasedataManagerImpl.java =================================================================== diff -u -r19948 -r20115 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ExportBasedataManagerImpl.java (.../ExportBasedataManagerImpl.java) (revision 19948) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ExportBasedataManagerImpl.java (.../ExportBasedataManagerImpl.java) (revision 20115) @@ -5,7 +5,10 @@ import java.io.IOException; import java.io.OutputStream; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -18,6 +21,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import com.forgon.directory.model.CssdHandleTousses; import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodsInstance; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; import com.forgon.disinfectsystem.entity.basedatamanager.cleanmethod.CleanMethod; @@ -29,11 +33,15 @@ import com.forgon.disinfectsystem.entity.basedatamanager.sterilisation.Sterilisation; import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; import com.forgon.disinfectsystem.entity.basedatamanager.supplier.Supplier; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.taskGroup.TaskGroup; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.ComboTousseComposite; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.ComboTousseOrgUint; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.excel.service.CommonExportManager; import com.forgon.systemsetting.model.HttpOption; import com.forgon.tools.Path; +import com.forgon.tools.cache.ForgonThreadLocalResourceManager; import com.forgon.tools.excel.ExcelCellStyle; import com.forgon.tools.excel.ExcelHelper; import com.forgon.tools.hibernate.ObjectDao; @@ -70,7 +78,12 @@ e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); - } finally { + + } catch(Exception e){ + System.out.println(e); + } + finally { + try { os.close(); } catch (IOException e) { @@ -112,8 +125,127 @@ // 灭菌炉excel导出 sterilizerExport(wb); + + //聚合包excel导出 + comboTousseCompositeExport(wb); } + + + @SuppressWarnings("unchecked") + private void comboTousseCompositeExport(HSSFWorkbook wb) { + HSSFSheet sheet = wb.getSheet("聚合包管理"); + List tousseDefinitions = new ArrayList(); + HashSet comboTousseDefinitionIds = new HashSet(); + if (sheet != null) { + List comboTousseComposites =objectDao.findAllObjects(ComboTousseComposite.class.getSimpleName()); + for(ComboTousseComposite comboTousseComposite : comboTousseComposites){ + comboTousseDefinitionIds.add(comboTousseComposite.getComboTousseDefinitionId()); + } + for(Long comboTousseDefinitionId : comboTousseDefinitionIds){ + TousseDefinition tousseDefinition = (TousseDefinition) objectDao + .getBySql(TousseDefinition.class.getSimpleName(),"where po.id = " + comboTousseDefinitionId); + tousseDefinitions.add(tousseDefinition); + } + + int firstRow = 1; + if (tousseDefinitions != null && tousseDefinitions.size() > 0) { + int len = 10; + HSSFCellStyle[] contentCellStyleArray = getContentCellStyle(len); + HSSFRow row = null; + for (TousseDefinition tousseDefinition : tousseDefinitions) { + int cellNumer = 0; + row = createRowIfEmpty(sheet, firstRow++); + // 聚合包名称 + inertStringValueToCell(row, cellNumer, + contentCellStyleArray[cellNumer++], + tousseDefinition.getName()); + int tempCellNum = cellNumer + 1; + + //默认包装类型 + inertStringValueToCell(row, tempCellNum, + contentCellStyleArray[tempCellNum++], + tousseDefinition.getPackageType()); + + //默认灭菌程序 + inertStringValueToCell(row, tempCellNum, + contentCellStyleArray[tempCellNum++], + tousseDefinition.getSterilingMethod()); + + //标签纸类型 + inertStringValueToCell(row, tempCellNum, + contentCellStyleArray[tempCellNum++], + tousseDefinition.getBarcodePaperType()); + + //是否审核 + inertStringValueToCell(row, tempCellNum, + contentCellStyleArray[tempCellNum++], + tousseDefinition.getIsReview()); + + //外部编码 + inertStringValueToCell(row, tempCellNum, + contentCellStyleArray[tempCellNum++], + tousseDefinition.getExternalCode()); + + //处理科室 + CssdHandleTousses cssdHandleTousse =(CssdHandleTousses) objectDao.getBySql + (CssdHandleTousses.class.getSimpleName(),"where po.tousseDefinitionId = " + tousseDefinition.getId()); + inertStringValueToCell(row, tempCellNum, + contentCellStyleArray[tempCellNum++], + cssdHandleTousse.getOrgUnitName()); + + //任务组 + inertStringValueToCell(row, tempCellNum, + contentCellStyleArray[tempCellNum++], + cssdHandleTousse.getTaskGroup()); + + //所属科室 + List comboTousseOrgUints = (List) objectDao.findBySql + (ComboTousseOrgUint.class.getSimpleName(),"where po.comboTousseDefinitionId = " + tousseDefinition.getId()); + String unitNames =""; + for(ComboTousseOrgUint comboTousseOrgUint : comboTousseOrgUints){ + String unitName=comboTousseOrgUint.getUnitName(); + if(unitNames == ""){ + unitNames = unitName; + }else{ + unitNames = unitNames + "," + unitName; + } + + } + inertStringValueToCell(row, tempCellNum, + contentCellStyleArray[tempCellNum++], + unitNames); + //器械包 + List comboTousseCompositess =(List) objectDao.findBySql + (ComboTousseComposite.class.getSimpleName(),"where po.comboTousseDefinitionId = " + tousseDefinition.getId()); + List tousse = new ArrayList(); + for(ComboTousseComposite comboTousse : comboTousseCompositess ){ + TousseDefinition tousseDefinitionss= (TousseDefinition) objectDao + .getBySql(TousseDefinition.class.getSimpleName(),"where po.id = " + comboTousse.getTousseDefinitionId()); + tousse.add(tousseDefinitionss); + } + Iterator tdf = tousse.iterator(); + if (tdf.hasNext()) { + inertStringValueToCell(row, cellNumer, + contentCellStyleArray[cellNumer], + tdf.next().getName()); + } + while (tdf.hasNext()) { + row = createRowIfEmpty(sheet, firstRow++); + setBlankCellStyle(row, contentCellStyleArray, + contentCellStyleArray.length); + inertStringValueToCell(row, cellNumer, + contentCellStyleArray[cellNumer], + tdf.next().getName()); + } + + } + + setFootCellStyle(row, getFootCellStyle(len)); + } + } + } + @SuppressWarnings("unchecked") private void sterilizerExport(HSSFWorkbook wb) { HSSFSheet sheet = wb.getSheet("灭菌炉管理"); Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/importbasedata/basedataDemo.xls =================================================================== diff -u -r19911 -r20115 Binary files differ