可以将两个方法封装为一个通用方法,使用枚举和Map进行优化。首先,创建一个枚举类来表示需要转换的数据类型:

public enum SheetDataType {
    POSITION_DETAIL_DATA {
        @Override
        public List<Object> convert(ComputeResultExportDTO result, Map<String, List<BigDecimal>> scoreGroup, Map<String, List<BigDecimal>> honestScoreGroup) {
            List<Object> sheetData = new ArrayList<>();
            sheetData.add(result.getDeptName());
            sheetData.add(result.getEmpName());
            sheetData.add(result.getEmpCode());
            sheetData.add(result.getLevelGroup());
            sheetData.addAll(CollectionUtils.emptyIfNull(scoreGroup.get(result.getExamineEvaluationId())));
            sheetData.add(result.getSuggestedLevel());
            sheetData.addAll(CollectionUtils.emptyIfNull(honestScoreGroup.get(result.getExamineEvaluationId())));
            sheetData.add(result.getTotalScore());
            sheetData.add(result.getWeightGroupName());
            return sheetData;
        }
    },
    POSITION_DATA {
        @Override
        public List<Object> convert(ComputeResultExportDTO result, Map<String, List<BigDecimal>> scoreGroup, Map<String, List<BigDecimal>> honestScoreGroup) {
            List<Object> sheetData = new ArrayList<>();
            sheetData.add(result.getLevelName());
            sheetData.addAll(CollectionUtils.emptyIfNull(scoreGroup.get(result.getExamineEvaluationId())));
            sheetData.add(result.getSuggestedLevel());
            sheetData.add(result.getTotalScore());
            sheetData.add(result.getWeightGroupName());
            return sheetData;
        }
    };

    public abstract List<Object> convert(ComputeResultExportDTO result, Map<String, List<BigDecimal>> scoreGroup, Map<String, List<BigDecimal>> honestScoreGroup);
}

然后,创建一个通用的方法来转换数据:

private static List<Object> convertSheetData(SheetDataType dataType, ComputeResultExportDTO result,
                                             Map<String, List<BigDecimal>> scoreGroup, Map<String, List<BigDecimal>> honestScoreGroup) {
    return dataType.convert(result, scoreGroup, honestScoreGroup);
}

使用示例:

List<Object> positionDetailData = convertSheetData(SheetDataType.POSITION_DETAIL_DATA, result, scoreGroup, honestScoreGroup);
List<Object> positionData = convertSheetData(SheetDataType.POSITION_DATA, result, scoreGroup, honestScoreGroup);

通过使用枚举和Map,可以将两个方法封装为一个通用的方法,并根据不同的数据类型进行转换。这样可以提高代码的可扩展性和可维护性。

使用枚举和Map优化代码:将两个方法封装为通用方法

原文地址: https://www.cveoy.top/t/topic/mvvh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录