IntegralDetailServiceImpl.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package com.poteviohealth.cgp.integration.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.poteviohealth.cgp.common.filter.MiniJwtVO;
  6. import com.poteviohealth.cgp.common.filter.TokenContext;
  7. import com.poteviohealth.cgp.common.integrated.customer.model.CustomerIntegration;
  8. import com.poteviohealth.cgp.common.model.CommonPage;
  9. import com.poteviohealth.cgp.common.model.VaultsResponse;
  10. import com.poteviohealth.cgp.common.service.impl.BaseServiceImpl;
  11. import com.poteviohealth.cgp.common.utils.CgpTool;
  12. import com.poteviohealth.cgp.integration.mapper.IntegralDetailMapper;
  13. import com.poteviohealth.cgp.integration.mapstruct.IntegralConverter;
  14. import com.poteviohealth.cgp.integration.model.IntegralDetail;
  15. import com.poteviohealth.cgp.integration.model.invo.web.IntegralDetailWebInDTO;
  16. import com.poteviohealth.cgp.integration.model.outvo.web.IntegralDetailWebOutDTO;
  17. import com.poteviohealth.cgp.integration.service.IIntegralDetailService;
  18. import lombok.extern.log4j.Log4j2;
  19. import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
  20. import org.springframework.core.io.ClassPathResource;
  21. import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
  22. import org.springframework.security.core.context.SecurityContextHolder;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import java.sql.Connection;
  26. import java.sql.SQLException;
  27. import java.sql.Statement;
  28. import java.util.List;
  29. import java.util.Properties;
  30. /**
  31. * @PackageName:com.poteviohealth.cgp.integration.service.impl
  32. * @className:IntegralDetailServiceImpl
  33. * @Description:
  34. * @author: QIN
  35. * @date: 2020/9/1 15:46
  36. */
  37. @Service
  38. @Log4j2
  39. public class IntegralDetailServiceImpl extends BaseServiceImpl<IntegralDetailMapper, IntegralDetail> implements IIntegralDetailService {
  40. @Override
  41. @Transactional(rollbackFor = Exception.class)
  42. public VaultsResponse<String> createTable(Connection conn, Integer mark) {
  43. //获取yml配置文件
  44. StringBuilder stringBuilder = new StringBuilder();
  45. try {
  46. YamlPropertiesFactoryBean yamlMapFactoryBean = new YamlPropertiesFactoryBean();
  47. yamlMapFactoryBean.setResources(new ClassPathResource("integration-sql.yml"));
  48. Properties properties = yamlMapFactoryBean.getObject();
  49. properties.forEach((k, v) -> {
  50. //获取执行次数
  51. String tableName = k.toString().substring(0,k.toString().lastIndexOf('_')+1);
  52. tableName+= mark.toString();
  53. //执行替换
  54. String sql = v.toString().replace("$", mark.toString());
  55. Statement statement = null;
  56. try {
  57. statement = conn.createStatement();
  58. //执行创建表
  59. statement.executeUpdate("DROP TABLE IF EXISTS `"+tableName+"`");
  60. statement.executeUpdate(sql);
  61. } catch (SQLException e) {
  62. log.error("{createTable}创建表[" + k + "]时异常;");
  63. stringBuilder.append("创建表[" + k + "]时异常;");
  64. //break;
  65. } finally {
  66. if (statement != null) {
  67. try {
  68. statement.close();
  69. } catch (SQLException e) {
  70. log.error("close statement error", e);
  71. }
  72. }
  73. }
  74. });
  75. if (stringBuilder.length() == 0) {
  76. return VaultsResponse.success();
  77. }
  78. } catch (Exception e) {
  79. log.error("创建表失败", e);
  80. return VaultsResponse.failed(stringBuilder.toString());
  81. } finally {
  82. try {
  83. if (conn != null) {
  84. conn.close();
  85. }
  86. } catch (SQLException e) {
  87. log.error("close connection error", e);
  88. }
  89. }
  90. return VaultsResponse.success();
  91. }
  92. @Override
  93. public VaultsResponse<CommonPage<IntegralDetailWebOutDTO>> selectPage(IntegralDetailWebInDTO integralDetailWebInDTO) {
  94. CommonPage<IntegralDetail> pageOrder = selectOrderIPage(integralDetailWebInDTO);
  95. return VaultsResponse.success(IntegralConverter.INSTANCE.model2WebDTO(pageOrder));
  96. }
  97. @Override
  98. public VaultsResponse saveDetail(List<CustomerIntegration> customerIntegration) {
  99. List<IntegralDetail> list = IntegralConverter.INSTANCE.model2FeginDTO(customerIntegration);
  100. for (IntegralDetail detail : list) {
  101. createOperator(detail.getOperatorId());
  102. detail.setIntegralDetailId(CgpTool.generateKey());
  103. }
  104. return VaultsResponse.success(super.saveBatch(list));
  105. }
  106. private CommonPage<IntegralDetail> selectOrderIPage(IntegralDetailWebInDTO integralDetailWebInDTO) {
  107. IPage<IntegralDetail> page = new Page<>(integralDetailWebInDTO.getPageNum(), integralDetailWebInDTO.getPageSize());
  108. QueryWrapper<IntegralDetail> orderQueryWrapper = new QueryWrapper<>();
  109. orderQueryWrapper.eq("customer_id",integralDetailWebInDTO.getCustomerId());
  110. if (null != integralDetailWebInDTO.getStartDate()) {
  111. orderQueryWrapper.ge("created_date", integralDetailWebInDTO.getStartDate());
  112. }
  113. if (null != integralDetailWebInDTO.getEndDate()) {
  114. orderQueryWrapper.le("created_date", integralDetailWebInDTO.getEndDate());
  115. }
  116. orderQueryWrapper.orderByDesc("created_date");
  117. return super.commonPage(page, orderQueryWrapper);
  118. }
  119. private void createOperator(Integer operatorId){
  120. MiniJwtVO jwtVO = new MiniJwtVO();
  121. jwtVO.setOperatorId(operatorId);
  122. UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(jwtVO, null, null);
  123. SecurityContextHolder.getContext().setAuthentication(authentication);
  124. }
  125. }