| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Long createEvaluation(SrmBidEvaluationSaveReqVO createReqVO) { |
| | | SrmBidEvaluationDO evaluation = BeanUtils.toBean(createReqVO, SrmBidEvaluationDO.class); |
| | | // 强制置空 id,避免前端传入已有 id 导致主键冲突,由数据库序列自动生成 |
| | | evaluation.setId(null); |
| | | // 计算综合评分: 价格*0.4 + 技术*0.3 + 交付*0.2 + 服务*0.1 |
| | | BigDecimal price = nvl(evaluation.getPriceScore()); |
| | | BigDecimal tech = nvl(evaluation.getTechScore()); |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void updateEvaluation(SrmBidEvaluationSaveReqVO updateReqVO) { |
| | | SrmBidEvaluationDO existing = bidEvaluationMapper.selectById(updateReqVO.getId()); |
| | | if (existing == null) { |
| | | throw ServiceExceptionUtil.exception(ErrorCodeConstants.EVALUATION_NOT_EXISTS_TENDER); |
| | | } |
| | | SrmBidEvaluationDO evaluation = BeanUtils.toBean(updateReqVO, SrmBidEvaluationDO.class); |
| | | BigDecimal price = nvl(evaluation.getPriceScore()); |
| | | BigDecimal tech = nvl(evaluation.getTechScore()); |
| | | BigDecimal delivery = nvl(evaluation.getDeliveryScore()); |
| | | BigDecimal service = nvl(evaluation.getServiceScore()); |
| | | BigDecimal composite = price.multiply(new BigDecimal("0.4")) |
| | | .add(tech.multiply(new BigDecimal("0.3"))) |
| | | .add(delivery.multiply(new BigDecimal("0.2"))) |
| | | .add(service.multiply(new BigDecimal("0.1"))) |
| | | .setScale(2, RoundingMode.HALF_UP); |
| | | evaluation.setCompositeScore(composite); |
| | | evaluation.setEvaluationTime(LocalDateTime.now()); |
| | | bidEvaluationMapper.updateById(evaluation); |
| | | } |
| | | |
| | | @Override |
| | | public List<SrmBidEvaluationDO> getEvaluationList(Long tenderProjectId) { |
| | | return bidEvaluationMapper.selectListByTenderProjectId(tenderProjectId); |
| | | } |