使用枚举和MapStruct优化将两个方法封装为通用的方法
"使用枚举和MapStruct优化将两个方法封装为通用的方法"\n首先,我们可以使用枚举来定义不同方法的类型:\njava\npublic enum MethodType {\n POSITION_DETAIL,\n POSITION\n}\n\n然后,我们可以使用MapStruct来生成通用的方法的映射器:\njava\n@Mapper\npublic interface SheetDataMapper {\n SheetDataMapper INSTANCE = Mappers.getMapper(SheetDataMapper.class);\n\n List<Object> convertSheetData(ComputeResultExportDTO result, MethodType methodType,\n Map<String, List<BigDecimal>> scoreGroup,\n Map<String, List<BigDecimal>> honestScoreGroup);\n}\n\n接下来,我们需要实现具体的转换逻辑:\njava\npublic class SheetDataMapperImpl implements SheetDataMapper {\n\n @Override\n public List<Object> convertSheetData(ComputeResultExportDTO result, MethodType methodType,\n Map<String, List<BigDecimal>> scoreGroup,\n Map<String, List<BigDecimal>> honestScoreGroup) {\n List<Object> sheetData = new ArrayList<>();\n \n switch (methodType) {\n case POSITION_DETAIL:\n sheetData.add(result.getDeptName());\n sheetData.add(result.getEmpName());\n sheetData.add(result.getEmpCode());\n sheetData.add(result.getLevelGroup());\n sheetData.addAll(CollectionUtils.emptyIfNull(scoreGroup.get(result.getExamineEvaluationId())));\n sheetData.add(result.getSuggestedLevel());\n sheetData.addAll(CollectionUtils.emptyIfNull(honestScoreGroup.get(result.getExamineEvaluationId())));\n sheetData.add(result.getTotalScore());\n sheetData.add(result.getWeightGroupName());\n break;\n case POSITION:\n sheetData.add(result.getLevelName());\n sheetData.addAll(CollectionUtils.emptyIfNull(scoreGroup.get(result.getExamineEvaluationId())));\n sheetData.add(result.getSuggestedLevel());\n sheetData.add(result.getTotalScore());\n sheetData.add(result.getWeightGroupName());\n break;\n }\n \n return sheetData;\n }\n}\n\n最后,我们可以在需要调用的地方使用这个通用的方法:\njava\nList<Object> sheetData = SheetDataMapper.INSTANCE.convertSheetData(result, MethodType.POSITION_DETAIL, scoreGroup, honestScoreGroup);\n\n通过使用枚举和MapStruct,我们可以将两个方法封装为通用的方法,并根据不同的方法类型执行不同的转换逻辑,提高代码的可读性和可维护性。
原文地址: https://www.cveoy.top/t/topic/mue5 著作权归作者所有。请勿转载和采集!