代码优化: 优化`PositionRankingDTO`对象的创建和属性设置
代码优化如下:
@Mapping(target = "scoreItemName", source = "computeResultExportDTO.evaluationDimension")
@Mapping(target = "identity", source = "computeResultExportDTO.identity")
@Mapping(target = "empName", source = "computeResultExportDTO.empName")
@Mapping(target = "empCode", source = "computeResultExportDTO.empCode")
@Mapping(target = "scoreItemId", source = "computeResultExportDTO.scoreItemId")
@Mapping(target = "totalScore", source = "computeResultExportDTO.totalScore")
@Mapping(target = "individualScore", source = "computeResultExportDTO.assessScore")
@Mapping(target = "sortTotalCount", expression = "java(MapUtils.getLong(countMap, computeResultExportDTO.getIdentity()))")
PositionRankingDTO convertToScoreItemPosition(ComputeResultExportDTO computeResultExportDTO,
@Context final Map<String, Long> countMap,
@Context final Map<String, Map<String, BigDecimal>> avgMap,
@Context final Map<String, Map<String, Integer>> scoreItemRankingMap) {
return new PositionRankingDTO(
computeResultExportDTO.getEvaluationDimension(),
computeResultExportDTO.getIdentity(),
computeResultExportDTO.getEmpName(),
computeResultExportDTO.getEmpCode(),
computeResultExportDTO.getScoreItemId(),
computeResultExportDTO.getTotalScore(),
computeResultExportDTO.getAssessScore(),
scoreItemRankingMap.getOrDefault(computeResultExportDTO.getScoreItemId(), new HashMap<>()).getOrDefault(computeResultExportDTO.getEmpCode(), null),
avgMap.getOrDefault(computeResultExportDTO.getEmpCode(), new HashMap<>()).getOrDefault(computeResultExportDTO.getScoreItemId(), null),
MapUtils.getLong(countMap, computeResultExportDTO.getIdentity()));
}
@Mapping(target = "scoreItemName", source = "computeResultExportDTO.evaluationDimension")
@Mapping(target = "identity", source = "computeResultExportDTO.identity")
@Mapping(target = "empName", source = "computeResultExportDTO.empName")
@Mapping(target = "empCode", source = "computeResultExportDTO.empCode")
@Mapping(target = "scoreItemId", source = "computeResultExportDTO.scoreItemId")
@Mapping(target = "totalScore", source = "computeResultExportDTO.totalScore")
@Mapping(target = "individualScore", source = "computeResultExportDTO.assessScore")
@Mapping(target = "avgScore", source = "computeResultExportDTO.totalAvg")
@Mapping(target = "sortTotalCount", expression = "java(MapUtils.getLong(countMap, computeResultExportDTO.getIdentity()))")
PositionRankingDTO convertTotalPositionDTO(ComputeResultExportDTO computeResultExportDTO,
@Context Map<String, Integer> totalRankingMap,
@Context BigDecimal totalAvg,
@Context Map<String, Long> countMap) {
return new PositionRankingDTO(
computeResultExportDTO.getEvaluationDimension(),
computeResultExportDTO.getIdentity(),
computeResultExportDTO.getEmpName(),
computeResultExportDTO.getEmpCode(),
computeResultExportDTO.getScoreItemId(),
computeResultExportDTO.getTotalScore(),
computeResultExportDTO.getAssessScore(),
totalRankingMap.getOrDefault(computeResultExportDTO.getEmpCode(), null),
computeResultExportDTO.getTotalAvg(),
MapUtils.getLong(countMap, computeResultExportDTO.getIdentity()));
}
主要优化点如下:
- 使用构造方法创建
PositionRankingDTO对象,避免重复设置属性。 - 将
@Context注解添加到方法参数上,用于指定注入的上下文对象。 - 在第一个方法中,直接调用
computeResultExportDTO对象的相应方法,而不是通过MapUtils.getObject方法获取值。 - 在第二个方法中,直接使用
computeResultExportDTO对象的属性值,而不是通过MapUtils.getObject方法获取值。
此外,还应该注意以下几点:
PositionRankingDTO对象的构造方法应该接收所有必需的属性作为参数。- 使用
@Context注解注入的上下文对象应该在方法中使用,而不是直接传递给PositionRankingDTO对象的构造方法。 - 尽量避免使用
MapUtils.getObject方法获取值,因为该方法可能导致空指针异常。 - 代码应该易于理解和维护,并遵循代码规范。
通过以上优化,可以提高代码效率和可读性,并降低代码维护成本。
原文地址: https://www.cveoy.top/t/topic/lmua 著作权归作者所有。请勿转载和采集!