PtlAgreementUnderwritingRulesServiceImpl.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package com.ydtech.modules.protocol.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4. import com.ydtech.modules.protocol.dao.PtlAgreementUnderwritingRulesMapper;
  5. import com.ydtech.modules.protocol.entity.dto.PtlAgreementCostsFactorSaveDto;
  6. import com.ydtech.modules.protocol.entity.dto.PtlAgreementUnderwritingRulesSaveDto;
  7. import com.ydtech.modules.protocol.entity.dto.PtlFactorDto;
  8. import com.ydtech.modules.protocol.entity.po.PtlAgreementUnderwritingRules;
  9. import com.ydtech.modules.protocol.service.PtlAgreementUnderwritingRulesService;
  10. import com.ydtech.modules.protocol.utils.AssertionUtils;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import org.springframework.util.ObjectUtils;
  15. import java.util.HashMap;
  16. import java.util.List;
  17. import java.util.Map;
  18. import java.util.Set;
  19. import java.util.stream.Collectors;
  20. /**
  21. * @author wenks
  22. * @description 针对表【ptl_agreement_underwriting_rules(协议承保规则)】的数据库操作Service实现
  23. * @createDate 2023-06-05 17:59:52
  24. */
  25. @Service
  26. public class PtlAgreementUnderwritingRulesServiceImpl extends ServiceImpl<PtlAgreementUnderwritingRulesMapper, PtlAgreementUnderwritingRules>
  27. implements PtlAgreementUnderwritingRulesService {
  28. private PtlAgreementUnderwritingRulesService proxyService;
  29. @Autowired
  30. public void setProxyService(PtlAgreementUnderwritingRulesService proxyService) {
  31. this.proxyService = proxyService;
  32. }
  33. @Override
  34. public void deleteByAgreementId(String agreementId) {
  35. LambdaQueryWrapper<PtlAgreementUnderwritingRules> wrapper = new LambdaQueryWrapper<>();
  36. wrapper.eq(PtlAgreementUnderwritingRules::getAgreementId, agreementId);
  37. baseMapper.delete(wrapper);
  38. }
  39. @Override
  40. public List<PtlAgreementUnderwritingRules> getByAgreementId(String agreementId) {
  41. LambdaQueryWrapper<PtlAgreementUnderwritingRules> wrapper = new LambdaQueryWrapper<>();
  42. wrapper.eq(PtlAgreementUnderwritingRules::getAgreementId, agreementId);
  43. return baseMapper.selectList(wrapper);
  44. }
  45. @Override
  46. @Transactional
  47. public void saveBatchUnderwritingRules(String agreementId, List<PtlAgreementUnderwritingRulesSaveDto> underwritingRules) {
  48. List<PtlAgreementUnderwritingRules> ptlAgreementUnderwritingRulesList = PtlAgreementUnderwritingRulesSaveDto.toPtlAgreementUnderwritingRulesList(agreementId, underwritingRules);
  49. boolean b = saveBatch(ptlAgreementUnderwritingRulesList);
  50. AssertionUtils.isSucceed(b, "批量添加协议承保规则失败");
  51. }
  52. @Override
  53. public Map<String, PtlFactorDto> getMapPtlFactorDto(String agreementId, Integer rulesType) {
  54. LambdaQueryWrapper<PtlAgreementUnderwritingRules> wrapper = new LambdaQueryWrapper<>();
  55. wrapper.eq(PtlAgreementUnderwritingRules::getAgreementId, agreementId)
  56. .eq(PtlAgreementUnderwritingRules::getRulesType, rulesType);
  57. PtlAgreementUnderwritingRules rules = baseMapper.selectOne(wrapper);
  58. return PtlAgreementCostsFactorSaveDto.toMapPtlFactorDto(rules.getRulesFactor());
  59. }
  60. @Override
  61. public Map<String, List<String>> getByLicenseNo(List<String> agreementIdList) {
  62. Map<String, List<String>> map = new HashMap<>();
  63. if (!agreementIdList.isEmpty()) {
  64. LambdaQueryWrapper<PtlAgreementUnderwritingRules> wrapper = new LambdaQueryWrapper<>();
  65. wrapper.in(PtlAgreementUnderwritingRules::getAgreementId, agreementIdList)
  66. .eq(PtlAgreementUnderwritingRules::getRulesType, 1);
  67. List<PtlAgreementUnderwritingRules> ptlAgreementUnderwritingRules = baseMapper.selectList(wrapper);
  68. ptlAgreementUnderwritingRules.forEach(x -> {
  69. Map<String, PtlFactorDto> mapPtlFactorDto = PtlAgreementCostsFactorSaveDto.toMapPtlFactorDto(x.getRulesFactor());
  70. List<String> licenseNo = mapPtlFactorDto.get("LicenseNo").getParameter().stream().filter(str -> !"".equals(str)).collect(Collectors.toList());
  71. map.put(x.getAgreementId(), licenseNo);
  72. });
  73. }
  74. return map;
  75. }
  76. @Override
  77. public void ruleComparison(Map<String, Object> quoteRules, String agreementId, Integer rulesType) {
  78. Map<String, PtlFactorDto> mapPtlFactorDto = proxyService.getMapPtlFactorDto(agreementId, rulesType);
  79. Set<String> strings = mapPtlFactorDto.keySet();
  80. for (String s : strings) {
  81. Object o = quoteRules.get(s);
  82. // 过滤没有的字段
  83. if (ObjectUtils.isEmpty(o)) {
  84. continue;
  85. }
  86. PtlFactorDto ptlFactorDto = mapPtlFactorDto.get(s);
  87. List<String> parameter = ptlFactorDto.getParameter();
  88. // 参数包含校验
  89. if (parameter != null && !parameter.isEmpty()) {
  90. assert o instanceof String;
  91. boolean contains = parameter.contains(o);
  92. AssertionUtils.isSucceed(contains, String.format("%s 不在 %s 包含范围内", o, ptlFactorDto.getName()));
  93. }
  94. Integer minValue = ptlFactorDto.getMinValue();
  95. Integer maxValue = ptlFactorDto.getMaxValue();
  96. // 参数最大值最小值校验
  97. if (!ObjectUtils.isEmpty(minValue) && !ObjectUtils.isEmpty(maxValue)) {
  98. if (minValue != 0 || maxValue != 0) {
  99. assert o instanceof Integer;
  100. AssertionUtils.isSucceed(minValue <= (Integer) o && (Integer) o <= maxValue, String.format("%s 应该在 %d 和 %d 范围内 ", ptlFactorDto.getName(), minValue, maxValue));
  101. }
  102. }
  103. }
  104. }
  105. }