| | |
| | | import cn.iocoder.yudao.module.srm.enums.ErrorCodeConstants; |
| | | import cn.iocoder.yudao.module.srm.enums.TenderStatusEnum; |
| | | import jakarta.annotation.Resource; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import java.util.*; |
| | | import java.util.function.Function; |
| | |
| | | */ |
| | | @Service |
| | | @Validated |
| | | @Slf4j |
| | | public class SrmBidAwardServiceImpl implements SrmBidAwardService { |
| | | |
| | | @Resource |
| | |
| | | @Override |
| | | public SrmBidAwardDO getAwardByProjectId(Long tenderProjectId) { |
| | | return bidAwardMapper.selectByTenderProjectId(tenderProjectId); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void deleteAward(Long id) { |
| | | SrmBidAwardDO award = validateAwardExists(id); |
| | | bidAwardMapper.deleteById(id); |
| | | } |
| | | |
| | | @Override |
| | |
| | | ErpPurchaseOrderCreateReqDTO createReq = new ErpPurchaseOrderCreateReqDTO(); |
| | | createReq.setSupplierId(srmSupplier.getId()); |
| | | createReq.setOrderTime(LocalDateTime.now()); |
| | | createReq.setDepositPrice(BigDecimal.ZERO); |
| | | createReq.setItems(orderItems); |
| | | createReq.setRemark("SRM 定标自动生成, 定标编号: " + award.getAwardNo()); |
| | | |
| | | Long purchaseOrderId = erpPurchaseOrderApi.createPurchaseOrder(createReq).getCheckedData(); |
| | | |
| | | // 获取采购订单号 |
| | | String purchaseOrderNo = null; |
| | | try { |
| | | purchaseOrderNo = erpPurchaseOrderApi.getPurchaseOrder(purchaseOrderId) |
| | | .getCheckedData().getNo(); |
| | | } catch (Exception e) { |
| | | log.warn("[generatePurchaseOrder] 获取采购订单号失败,purchaseOrderId={}", purchaseOrderId, e); |
| | | } |
| | | |
| | | // 8. 更新定标记录 |
| | | award.setPurchaseOrderId(purchaseOrderId); |
| | | award.setPurchaseOrderNo(purchaseOrderNo); |
| | | award.setAwardStatus(AwardStatusEnum.ORDER_GENERATED.getCode()); |
| | | bidAwardMapper.updateById(award); |
| | | |
| | | // 9. 更新招标项目状态 |
| | | SrmTenderProjectDO project = tenderProjectMapper.selectById(award.getTenderProjectId()); |
| | | if (project != null) { |
| | | project.setTenderStatus(TenderStatusEnum.CLOSED.getCode()); |
| | | tenderProjectMapper.updateById(project); |
| | | } |
| | | } |
| | | |
| | | private SrmBidAwardDO validateAwardExists(Long id) { |