ContractServiceImpl.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package com.jkcredit.invoice.hub.service.contract;
  2. import cn.com.taiji.sdk.comm.ETCCommHelper;
  3. import cn.com.taiji.sdk.model.comm.protocol.eoms.company.B2bContractAddRequest;
  4. import cn.com.taiji.sdk.model.comm.protocol.eoms.company.B2bContractAddResponse;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.jkcredit.invoice.hub.mapper.ContractMapper;
  8. import com.jkcredit.invoice.hub.model.dto.contract.ContractDto;
  9. import com.jkcredit.invoice.hub.model.po.contract.ContractPo;
  10. import com.jkcredit.invoice.hub.model.vo.contract.ContractVo;
  11. import com.jkcredit.invoice.hub.service.base.BaseService;
  12. import com.jkcredit.invoice.hub.spi.lang.exception.ApiRequestException;
  13. import com.jkcredit.invoice.hub.spi.lang.exception.ServiceException;
  14. import com.jkcredit.invoice.hub.util.BeanUtil;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.springframework.stereotype.Service;
  17. import sun.misc.BASE64Encoder;
  18. import javax.annotation.Resource;
  19. import java.io.IOException;
  20. import java.util.Base64;
  21. import java.util.Date;
  22. /**
  23. * @description:
  24. * @author: xusonglin
  25. * @create: 2020/3/3 9:24
  26. * @version: V1.0
  27. **/
  28. @Slf4j
  29. @Service
  30. public class ContractServiceImpl extends BaseService implements ContractService {
  31. @Resource
  32. ContractMapper contractMapper;
  33. @Override
  34. public void uploadContract(ContractDto contractDto) {
  35. String filename = contractDto.getContract().getOriginalFilename();
  36. String[] args = filename.split("\\.");
  37. if (!args[args.length - 1].equals("pdf")) {
  38. throw new ServiceException("协议转换失败");
  39. }
  40. // 参数设置
  41. validate(contractDto);
  42. B2bContractAddRequest request = new B2bContractAddRequest();
  43. request.setCompanyNum(contractDto.getCompanyNum());
  44. request.setServiceType(contractDto.getServiceType());
  45. request.setServiceStartTime(contractDto.getServiceStartTime());
  46. request.setServiceEndTime(contractDto.getServiceEndTime());
  47. request.setContractFileName(filename);
  48. String base64Str;
  49. try {
  50. base64Str = Base64.getEncoder().encodeToString(contractDto.getContract().getBytes());
  51. request.setBase64Str(base64Str);
  52. } catch (IOException ioe) {
  53. log.error("上传协议转base64失败,失败原因:{}", ioe.getMessage());
  54. throw new ServiceException("协议转换失败");
  55. }
  56. String fileName = request.getFilename();
  57. // 接口调用
  58. B2bContractAddResponse response;
  59. try {
  60. // 调用upload 发送数据
  61. response = ETCCommHelper.upload(fileName, request, B2bContractAddResponse.class);
  62. log.info("[-uploadContract-] 上游返回结果:" + response.toJson());
  63. } catch (IOException e) {
  64. log.error("[-uploadContract-] 网络错误:" + e.getMessage());
  65. throw new ServiceException("上传协议失败");
  66. } catch (ApiRequestException apie) {
  67. log.error("[-uploadContract-] 错误信息:" + apie.getMessage());
  68. throw new ServiceException("上传协议失败,失败原因:" + apie.getMessage());
  69. }
  70. try {
  71. ContractPo contractPo = new ContractPo();
  72. BeanUtil.copyProperties(contractPo, contractDto);
  73. contractPo.setBase64Str(base64Str);
  74. contractPo.setCreateTime(new Date());
  75. contractPo.setContractNum(response.getContrantNum());
  76. contractMapper.insert(contractPo);
  77. } catch (Exception e) {
  78. log.error("上传协议失败,失败原因:{}", e.getMessage());
  79. throw new ServiceException("上传协议新增失败");
  80. }
  81. }
  82. @Override
  83. public IPage<ContractVo> getContracts(Page page, ContractDto contractDto) {
  84. IPage<ContractPo> contractPoIPage = contractMapper.getContracts(page, contractDto);
  85. return contractPoIPage.convert(this::convert);
  86. }
  87. private ContractVo convert(ContractPo po) {
  88. ContractVo vo = new ContractVo();
  89. BeanUtil.copyProperties(vo, po);
  90. return vo;
  91. }
  92. }