PolicyStriveServiceImpl.java 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package com.qdport.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.qdport.entity.PolicyFile;
  7. import com.qdport.enums.QDPortEnum;
  8. import com.qdport.query.QueryWrapperBuilder;
  9. import com.qdport.service.PolicyFileService;
  10. import com.qdport.service.PolicyFlowNoService;
  11. import com.qdport.util.StringUtil;
  12. import com.qdport.vo.PolicyFileVO;
  13. import com.qdport.vo.PolicyShareVO;
  14. import lombok.AllArgsConstructor;
  15. import com.qdport.entity.PolicyStrive;
  16. import com.qdport.query.PolicyStriveQuery;
  17. import com.qdport.vo.PolicyStriveVO;
  18. import com.qdport.mapper.PolicyStriveMapper;
  19. import com.qdport.service.PolicyStriveService;
  20. import com.qdport.wrapper.PolicyStriveWrapper;
  21. import com.qdport.core.tool.utils.Func;
  22. import com.qdport.core.tool.utils.BeanUtil;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  26. import javax.annotation.Resource;
  27. import java.math.BigDecimal;
  28. import java.util.Date;
  29. import java.util.List;
  30. /**
  31. * 政策争取
  32. *
  33. * @author yuheng
  34. * @since 1.0.0 2024-10-14
  35. */
  36. @Service
  37. public class PolicyStriveServiceImpl extends ServiceImpl<PolicyStriveMapper, PolicyStrive> implements PolicyStriveService {
  38. @Resource
  39. private PolicyFlowNoService policyFlowNoService;
  40. @Resource
  41. private PolicyFileService policyFileService;
  42. private final static BigDecimal decimal_50w = new BigDecimal(500000);
  43. private final static BigDecimal decimal_200w = new BigDecimal(2000000);
  44. private final static BigDecimal decimal_500w = new BigDecimal(5000000);
  45. private final static BigDecimal decimal_1000w = new BigDecimal(10000000);
  46. private final static BigDecimal decimal_500 = new BigDecimal(500);
  47. private final static BigDecimal decimal_1000 = new BigDecimal(1000);
  48. private final static BigDecimal decimal_1500 = new BigDecimal(1500);
  49. private final static BigDecimal decimal_2000 = new BigDecimal(2000);
  50. private final static BigDecimal decimal_3000 = new BigDecimal(3000);
  51. private final static BigDecimal decimal_4000 = new BigDecimal(4000);
  52. private final static BigDecimal decimal_5000 = new BigDecimal(5000);
  53. private final static BigDecimal decimal_6000 = new BigDecimal(6000);
  54. private final static BigDecimal decimal_8000 = new BigDecimal(8000);
  55. private final static BigDecimal decimal_10000 = new BigDecimal(10000);
  56. private final static BigDecimal decimal_12000 = new BigDecimal(12000);
  57. private final static BigDecimal decimal_15000 = new BigDecimal(15000);
  58. @Override
  59. public IPage<PolicyStriveVO> page(PolicyStriveQuery query) {
  60. IPage<PolicyStrive> page = new Page<>(query.getPage(), query.getSize());
  61. page = baseMapper.selectPage(page, getWrapper(query));
  62. return PolicyStriveWrapper.build().pageVO(page);
  63. }
  64. private QueryWrapper<PolicyStrive> getWrapper(PolicyStriveQuery query) {
  65. QueryWrapper<PolicyStrive> wrapper = QueryWrapperBuilder.buildQueryWrapper(query, PolicyStrive.class);
  66. wrapper.orderByDesc("CREATE_TIME");
  67. return wrapper;
  68. }
  69. @Override
  70. public void save(PolicyStriveVO vo) {
  71. String flowNo = policyFlowNoService.getFlowNo(QDPortEnum.FLOWNO_TYPE_STRIVE.getValue());
  72. vo.setCreateTime(new Date());
  73. vo.setUpdateTime(new Date());
  74. vo.setBusinessNo(flowNo);
  75. PolicyStrive entity = BeanUtil.copy(vo, PolicyStrive.class);
  76. baseMapper.insert(entity);
  77. vo.setId(entity.getId());
  78. QueryWrapper<PolicyFile> fileWrapper = new QueryWrapper<>();
  79. fileWrapper.eq("REF_ID", entity.getId());
  80. fileWrapper.eq("REF_TYPE", QDPortEnum.POLICY_FILE_REFTYPE_POLICY_STRIVE.getValue());
  81. policyFileService.remove(fileWrapper);
  82. List<PolicyFileVO> fileList = vo.getFileList();
  83. for (PolicyFileVO model : fileList) {
  84. model.setCreateTime(new Date());
  85. model.setRefId(entity.getId());
  86. model.setRefType(QDPortEnum.POLICY_FILE_REFTYPE_POLICY_STRIVE.getValue());
  87. policyFileService.save(model);
  88. }
  89. }
  90. @Override
  91. public void update(PolicyStriveVO vo) {
  92. vo.setUpdateTime(new Date());
  93. PolicyStrive entity = BeanUtil.copy(vo, PolicyStrive.class);
  94. updateById(entity);
  95. QueryWrapper<PolicyFile> fileWrapper = new QueryWrapper<>();
  96. fileWrapper.eq("REF_ID", entity.getId());
  97. fileWrapper.eq("REF_TYPE", QDPortEnum.POLICY_FILE_REFTYPE_POLICY_STRIVE.getValue());
  98. policyFileService.remove(fileWrapper);
  99. List<PolicyFileVO> fileList = vo.getFileList();
  100. for (PolicyFileVO model : fileList) {
  101. model.setCreateTime(new Date());
  102. model.setRefId(entity.getId());
  103. model.setRefType(QDPortEnum.POLICY_FILE_REFTYPE_POLICY_STRIVE.getValue());
  104. policyFileService.save(model);
  105. }
  106. }
  107. @Override
  108. public void updateById(PolicyStriveVO vo) {
  109. vo.setUpdateTime(new Date());
  110. updateRewardData(vo);
  111. PolicyStrive entity = BeanUtil.copy(vo, PolicyStrive.class);
  112. updateById(entity);
  113. }
  114. @Override
  115. @Transactional(rollbackFor = Exception.class)
  116. public void delete(List<String> idList) {
  117. removeByIds(idList);
  118. }
  119. private void updateRewardData(PolicyStriveVO vo) {
  120. Integer rewardType = vo.getRewardType();
  121. Integer isLand = vo.getIsLand();
  122. BigDecimal landAmount = vo.getLandAmount();
  123. if (StringUtil.isEmpty(rewardType) || isLand == 0
  124. || StringUtil.isEmpty(landAmount)) {
  125. return;
  126. }
  127. if (rewardType == 1) {
  128. if (landAmount.compareTo(decimal_50w) <= 0) {
  129. vo.setRewardRadix(decimal_500);
  130. } else if (landAmount.compareTo(decimal_200w) <= 0) {
  131. vo.setRewardRadix(decimal_1000);
  132. } else if (landAmount.compareTo(decimal_500w) <= 0) {
  133. vo.setRewardRadix(decimal_2000);
  134. } else if (landAmount.compareTo(decimal_1000w) <= 0) {
  135. vo.setRewardRadix(decimal_4000);
  136. } else {
  137. vo.setRewardRadix(decimal_5000);
  138. }
  139. } else if (rewardType == 2) {
  140. if (landAmount.compareTo(decimal_50w) <= 0) {
  141. vo.setRewardRadix(decimal_1000);
  142. } else if (landAmount.compareTo(decimal_200w) <= 0) {
  143. vo.setRewardRadix(decimal_2000);
  144. } else if (landAmount.compareTo(decimal_500w) <= 0) {
  145. vo.setRewardRadix(decimal_4000);
  146. } else if (landAmount.compareTo(decimal_1000w) <= 0) {
  147. vo.setRewardRadix(decimal_8000);
  148. } else {
  149. vo.setRewardRadix(decimal_10000);
  150. }
  151. } else if (rewardType == 3 || rewardType == 4) {
  152. if (landAmount.compareTo(decimal_50w) <= 0) {
  153. vo.setRewardRadix(decimal_1500);
  154. } else if (landAmount.compareTo(decimal_200w) <= 0) {
  155. vo.setRewardRadix(decimal_3000);
  156. } else if (landAmount.compareTo(decimal_500w) <= 0) {
  157. vo.setRewardRadix(decimal_6000);
  158. } else if (landAmount.compareTo(decimal_1000w) <= 0) {
  159. vo.setRewardRadix(decimal_12000);
  160. } else {
  161. vo.setRewardRadix(decimal_15000);
  162. }
  163. }
  164. }
  165. }