|
|
@@ -0,0 +1,413 @@
|
|
|
+package com.jzg.quotation.summary.service.impl;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.jzg.commons.core.base.BaseController;
|
|
|
+import com.jzg.quotation.summary.constants.QuoteNumberConstant;
|
|
|
+import com.jzg.quotation.summary.entity.po.SysQuoteConfig;
|
|
|
+import com.jzg.quotation.summary.entity.po.SysQuoteRecord;
|
|
|
+import com.jzg.quotation.summary.entity.po.SysQuoteUserConfigAppend;
|
|
|
+import com.jzg.quotation.summary.entity.vo.QuoteNumRedisVo;
|
|
|
+import com.jzg.quotation.summary.mapper.SysQuoteRecordMapper;
|
|
|
+import com.jzg.quotation.summary.mapper.SysQuoteUserConfigAppendMapper;
|
|
|
+import com.jzg.quotation.summary.mapper.SysQuoteUserMapper;
|
|
|
+import com.jzg.quotation.summary.service.InsOrdersService;
|
|
|
+import com.jzg.quotation.summary.service.SysQuoteConfigService;
|
|
|
+import com.jzg.quotation.summary.service.SysQuoteRedisService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.redis.core.RedisCallback;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
+import org.springframework.data.redis.core.ScanOptions;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import static com.jzg.quotation.summary.constants.QuoteNumberConstant.QUOTE_NUMBER_KEY;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * 服务实现类
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class SysQuoteRedisServiceImpl implements SysQuoteRedisService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ SysQuoteUserMapper sysQuoteUserMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ SysQuoteUserConfigAppendMapper sysQuoteUserConfigAppendMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ InsOrdersService insOrdersService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ SysQuoteRecordMapper sysQuoteRecordMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ RedisTemplate redisTemplate;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ BaseController baseController;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 模糊搜索报价次数的keys
|
|
|
+ * @param pattern
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<String> searchKeysWithScan(String pattern) {
|
|
|
+ List<String> keys = new ArrayList<>();
|
|
|
+
|
|
|
+ redisTemplate.execute((RedisCallback<Object>) connection -> {
|
|
|
+ ScanOptions options = ScanOptions.scanOptions()
|
|
|
+ .match(pattern) // 匹配
|
|
|
+ .build();
|
|
|
+
|
|
|
+ try (var cursor = connection.scan(options)) {
|
|
|
+ cursor.forEachRemaining(item -> keys.add(new String(item)));
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ });
|
|
|
+
|
|
|
+ return keys;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 组装报价次数的redis数据
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public QuoteNumRedisVo assembleQuoteRedisData(String userId, List<SysQuoteConfig> sysQuoteConfigs){
|
|
|
+ QuoteNumRedisVo quoteNumRedisVo = new QuoteNumRedisVo();
|
|
|
+ quoteNumRedisVo.setUserId(userId);
|
|
|
+
|
|
|
+ //查询用户今日的追加报价配置
|
|
|
+ List<SysQuoteUserConfigAppend> sysQuoteUserConfigAppendList = sysQuoteUserConfigAppendMapper.selectList(new LambdaQueryWrapper<SysQuoteUserConfigAppend>()
|
|
|
+ .eq(SysQuoteUserConfigAppend::getUserId, userId)
|
|
|
+ .ge(SysQuoteUserConfigAppend::getStartTime, LocalDate.now())
|
|
|
+ .le(SysQuoteUserConfigAppend::getEndTime, LocalDate.now().plusDays(1)));
|
|
|
+
|
|
|
+ sysQuoteConfigs.forEach(quoteConfig -> {
|
|
|
+ List<SysQuoteUserConfigAppend> appends = sysQuoteUserConfigAppendList.stream()
|
|
|
+ .filter(append -> append.getCompanyId().equals(quoteConfig.getCompanyId())).collect(Collectors.toList());
|
|
|
+ //用户的追加报价次数
|
|
|
+ appends.forEach(append->{
|
|
|
+ quoteConfig.setDayMaxQuoteNum(quoteConfig.getDayMaxQuoteNum() + append.getDayMaxQuoteNum());
|
|
|
+ quoteConfig.setCarMaxQuoteNum(quoteConfig.getCarMaxQuoteNum() + append.getCarMaxQuoteNum());
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ List<QuoteNumRedisVo.QuoteNumberCompanyVo> originalCompanyList = new ArrayList<>();
|
|
|
+ sysQuoteConfigs.forEach(quoteConfig -> {
|
|
|
+ QuoteNumRedisVo.QuoteNumberCompanyVo quoteNumberCompanyVo = new QuoteNumRedisVo.QuoteNumberCompanyVo(quoteConfig);
|
|
|
+ originalCompanyList.add(quoteNumberCompanyVo);
|
|
|
+ });
|
|
|
+
|
|
|
+ //原始的报价数据
|
|
|
+ quoteNumRedisVo.setOriginalCompanyList(originalCompanyList);
|
|
|
+
|
|
|
+ // 获取今日报价的次数 进行数组组装
|
|
|
+ List<SysQuoteRecord> sysQuoteRecords = sysQuoteRecordMapper.selectList(new LambdaQueryWrapper<SysQuoteRecord>()
|
|
|
+ .eq(SysQuoteRecord::getUserId, userId)
|
|
|
+ .ge(SysQuoteRecord::getCreateTime, LocalDate.now())
|
|
|
+ .lt(SysQuoteRecord::getCreateTime, LocalDate.now().plusDays(1)));
|
|
|
+
|
|
|
+ //根据保险公司分组
|
|
|
+ Map<String, List<SysQuoteRecord>> sysQuoteRecordGroup = sysQuoteRecords.stream().collect(Collectors.groupingBy(SysQuoteRecord::getCompanyId));
|
|
|
+
|
|
|
+ List<QuoteNumRedisVo.QuoteNumberCompanyVo> quoteNumberCompanyList = new ArrayList<>();
|
|
|
+ sysQuoteRecordGroup.forEach((key, value) -> {
|
|
|
+ QuoteNumRedisVo.QuoteNumberCompanyVo quoteNumberCompanyVo = new QuoteNumRedisVo.QuoteNumberCompanyVo();
|
|
|
+ quoteNumberCompanyVo.setCompanyId(key);
|
|
|
+ quoteNumberCompanyVo.setDayMaxQuoteNum(value.size());
|
|
|
+ quoteNumberCompanyList.add(quoteNumberCompanyVo);
|
|
|
+ });
|
|
|
+ quoteNumRedisVo.setQuoteCompanyList(quoteNumberCompanyList);
|
|
|
+
|
|
|
+ //根据车牌进行分组
|
|
|
+ List<QuoteNumRedisVo.CarQuoteNumberVo> carQuoteNumberList = new ArrayList<>();
|
|
|
+
|
|
|
+ Map<Map.Entry<String, String>, List<SysQuoteRecord>> grouped = sysQuoteRecords.stream()
|
|
|
+ .collect(Collectors.groupingBy(record -> new AbstractMap.SimpleEntry<>(record.getCompanyId(), record.getLicenseNo())));
|
|
|
+
|
|
|
+ grouped.forEach((key, value) -> {
|
|
|
+ QuoteNumRedisVo.CarQuoteNumberVo carQuoteNumberVo = new QuoteNumRedisVo.CarQuoteNumberVo();
|
|
|
+ carQuoteNumberVo.setCompanyId(key.getKey());
|
|
|
+ carQuoteNumberVo.setLicenseNo(key.getValue());
|
|
|
+ carQuoteNumberVo.setQuoteNum(value.size());
|
|
|
+ carQuoteNumberList.add(carQuoteNumberVo);
|
|
|
+ });
|
|
|
+ quoteNumRedisVo.setCarList(carQuoteNumberList);
|
|
|
+
|
|
|
+ return quoteNumRedisVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void saveRedisData(QuoteNumRedisVo quoteNumberRedis) {
|
|
|
+ redisTemplate.opsForValue().set(getQuoteNumberRedisKey(quoteNumberRedis.getUserId()), JSONObject.toJSONString(quoteNumberRedis));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取报价次数缓存key
|
|
|
+ * @param userId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public String getQuoteNumberRedisKey(String userId){
|
|
|
+ return QUOTE_NUMBER_KEY + userId;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 从redis获取用户报价次数的数据
|
|
|
+ * @param userId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public QuoteNumRedisVo getQuoteNumberRedisData(String userId) {
|
|
|
+ QuoteNumRedisVo quoteNumRedisVo = null;
|
|
|
+ if(!Objects.isNull(redisTemplate.opsForValue().get(getQuoteNumberRedisKey(userId))))
|
|
|
+ {
|
|
|
+ String jsonStr = redisTemplate.opsForValue().get(getQuoteNumberRedisKey(userId)).toString();
|
|
|
+ quoteNumRedisVo = JSONObject.parseObject(jsonStr, QuoteNumRedisVo.class);
|
|
|
+ }
|
|
|
+ return quoteNumRedisVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setQuoteRecordRedis(String userId,QuoteNumRedisVo quoteNumRedisVo) {
|
|
|
+ redisTemplate.opsForValue().set(getQuoteNumberRedisKey(userId), JSONObject.toJSONString(quoteNumRedisVo));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void delQuoteRedis(String userId) {
|
|
|
+ redisTemplate.delete(getQuoteNumberRedisKey(userId));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean updateAllQuoteRedis(SysQuoteConfig sysQuoteConfig) {
|
|
|
+// Map<String,String> updateRedisMap = new HashMap<>();
|
|
|
+//
|
|
|
+// //查找出所有的key
|
|
|
+// List<String> keys = this.searchKeysWithScan(QuoteNumberConstant.QUOTE_NUMBER_KEY + "*");
|
|
|
+//
|
|
|
+// //查找出所有的追加的配置信息
|
|
|
+// List<SysQuoteUserConfigAppend> sysQuoteUserConfigAppendList = sysQuoteUserConfigAppendMapper.selectList(new LambdaQueryWrapper<SysQuoteUserConfigAppend>()
|
|
|
+// .eq(SysQuoteUserConfigAppend::getCompanyId, sysQuoteConfig.getCompanyId())
|
|
|
+// .ge(SysQuoteUserConfigAppend::getCreateTime, LocalDate.now())
|
|
|
+// .lt(SysQuoteUserConfigAppend::getCreateTime, LocalDate.now()));
|
|
|
+//
|
|
|
+// keys.forEach(key->{
|
|
|
+// QuoteNumRedisVo quoteNumRedisVo;
|
|
|
+// if(Objects.isNull(redisTemplate.opsForValue().get(getQuoteNumberRedisKey(baseController.getUserName())))){
|
|
|
+// List<SysQuoteConfig> sysQuoteConfigs = sysQuoteConfigService.getUserQuoteNumber(baseController.getUserName());
|
|
|
+// quoteNumRedisVo = assembleQuoteRedisData(baseController.getUserName(), sysQuoteConfigs);
|
|
|
+// }else{
|
|
|
+// String jsonStr = redisTemplate.opsForValue().get(getQuoteNumberRedisKey(baseController.getUserName())).toString();
|
|
|
+// quoteNumRedisVo = new QuoteNumRedisVo(jsonStr);
|
|
|
+//
|
|
|
+// }
|
|
|
+// //判断是否存在 新加规则的保险公司
|
|
|
+// if(quoteNumRedisVo.getOriginalCompanyList().stream().anyMatch(x-> x.getCompanyId().equals(sysQuoteConfig.getCompanyId()))) {
|
|
|
+// quoteNumRedisVo.getOriginalCompanyList().forEach(company -> {
|
|
|
+// if (company.getCompanyId().equals(sysQuoteConfig.getCompanyId())) {
|
|
|
+// List<SysQuoteUserConfigAppend> appends = sysQuoteUserConfigAppendList.stream()
|
|
|
+// .filter(append -> append.getUserId().equals(quoteNumRedisVo.getUserId())).collect(Collectors.toList());
|
|
|
+// company.setDayMaxQuoteNum(sysQuoteConfig.getDayMaxQuoteNum());
|
|
|
+// company.setCarMaxQuoteNum(sysQuoteConfig.getCarMaxQuoteNum());
|
|
|
+// company.setOrderRatio(sysQuoteConfig.getOrderRatio());
|
|
|
+// //每个用户的追加次数
|
|
|
+// appends.forEach(append -> {
|
|
|
+// company.setDayMaxQuoteNum(company.getDayMaxQuoteNum() + append.getDayMaxQuoteNum());
|
|
|
+// company.setCarMaxQuoteNum(company.getCarMaxQuoteNum() + append.getCarMaxQuoteNum());
|
|
|
+// });
|
|
|
+// }
|
|
|
+// });
|
|
|
+// }else{
|
|
|
+// QuoteNumRedisVo.QuoteNumberCompanyVo redisVo = new QuoteNumRedisVo.QuoteNumberCompanyVo();
|
|
|
+// redisVo.setCompanyId(sysQuoteConfig.getCompanyId());
|
|
|
+// redisVo.setCarMaxQuoteNum(sysQuoteConfig.getCarMaxQuoteNum());
|
|
|
+// redisVo.setDayMaxQuoteNum(sysQuoteConfig.getDayMaxQuoteNum());
|
|
|
+// redisVo.setOrderRatio(sysQuoteConfig.getOrderRatio());
|
|
|
+// quoteNumRedisVo.getOriginalCompanyList().add(redisVo);
|
|
|
+// }
|
|
|
+// updateRedisMap.put(key, JSONObject.toJSONString(quoteNumRedisVo));
|
|
|
+// });
|
|
|
+// //批量更新数据
|
|
|
+// redisTemplate.opsForValue().multiSet(updateRedisMap);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新用户追加的缓存数据
|
|
|
+ * @param sysQuoteUserConfigAppend
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public boolean updateUserQuoteAppendRedis(SysQuoteUserConfigAppend sysQuoteUserConfigAppend) {
|
|
|
+// QuoteNumRedisVo quoteNumRedisVo;
|
|
|
+// if(Objects.isNull(redisTemplate.opsForValue().get(getQuoteNumberRedisKey(sysQuoteUserConfigAppend.getUserId())))){
|
|
|
+// List<SysQuoteConfig> sysQuoteConfigs = sysQuoteConfigService.getUserQuoteNumber(sysQuoteUserConfigAppend.getUserId());
|
|
|
+// quoteNumRedisVo = assembleQuoteRedisData(sysQuoteUserConfigAppend.getUserId(), sysQuoteConfigs);
|
|
|
+// }else{
|
|
|
+// String jsonStr = redisTemplate.opsForValue().get(getQuoteNumberRedisKey(sysQuoteUserConfigAppend.getUserId())).toString();
|
|
|
+// quoteNumRedisVo = new QuoteNumRedisVo(jsonStr);
|
|
|
+//
|
|
|
+// }
|
|
|
+// quoteNumRedisVo.getOriginalCompanyList().forEach(company->{
|
|
|
+// if(company.getCompanyId().equals(sysQuoteUserConfigAppend.getCompanyId())){
|
|
|
+// company.setDayMaxQuoteNum(company.getDayMaxQuoteNum() + sysQuoteUserConfigAppend.getDayMaxQuoteNum());
|
|
|
+// company.setCarMaxQuoteNum(company.getCarMaxQuoteNum() + sysQuoteUserConfigAppend.getCarMaxQuoteNum());
|
|
|
+// }
|
|
|
+// });
|
|
|
+// redisTemplate.opsForValue().set(getQuoteNumberRedisKey(sysQuoteUserConfigAppend.getUserId()), JSONObject.toJSONString(quoteNumRedisVo));
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 报价之后redis数据更新
|
|
|
+ * @param companyId
|
|
|
+ * @param userId
|
|
|
+ * @param licenseNo
|
|
|
+ * @param num
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void quoteAfterRedisData(String companyId,String userId,String licenseNo,Integer num){
|
|
|
+ QuoteNumRedisVo quoteNumberRedisData = getQuoteNumberRedisData(userId);
|
|
|
+ //判断缓存中的报价保险公司是否存在
|
|
|
+ boolean isExists = quoteNumberRedisData.getQuoteCompanyList().stream().anyMatch(company -> company.getCompanyId().equals(companyId));
|
|
|
+ if(isExists) {
|
|
|
+ quoteNumberRedisData.getQuoteCompanyList().forEach(company -> {
|
|
|
+ if (company.getCompanyId().equals(companyId)) {
|
|
|
+ company.setDayMaxQuoteNum(company.getDayMaxQuoteNum() + num);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ List<QuoteNumRedisVo.QuoteNumberCompanyVo> quoteCompanyList = quoteNumberRedisData.getQuoteCompanyList();
|
|
|
+ QuoteNumRedisVo.QuoteNumberCompanyVo quoteNumberCompanyVo = new QuoteNumRedisVo.QuoteNumberCompanyVo();
|
|
|
+ quoteNumberCompanyVo.setCompanyId(companyId);
|
|
|
+ quoteNumberCompanyVo.setDayMaxQuoteNum(num);
|
|
|
+ quoteCompanyList.add(quoteNumberCompanyVo);
|
|
|
+ quoteNumberRedisData.setQuoteCompanyList(quoteCompanyList);
|
|
|
+ }
|
|
|
+
|
|
|
+ //判断缓存中的车牌报价是否存在
|
|
|
+ boolean carIsExists = quoteNumberRedisData.getCarList().stream().anyMatch(car -> car.getLicenseNo().equals(licenseNo));
|
|
|
+ if(carIsExists){
|
|
|
+ quoteNumberRedisData.getCarList().forEach(car -> {
|
|
|
+ if(car.getLicenseNo().equals(licenseNo)){
|
|
|
+ car.setQuoteNum(car.getQuoteNum() + num);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ List<QuoteNumRedisVo.CarQuoteNumberVo> carList = quoteNumberRedisData.getCarList();
|
|
|
+ QuoteNumRedisVo.CarQuoteNumberVo carQuoteNumberVo = new QuoteNumRedisVo.CarQuoteNumberVo();
|
|
|
+ carQuoteNumberVo.setLicenseNo(licenseNo);
|
|
|
+ carQuoteNumberVo.setQuoteNum(num);
|
|
|
+ carQuoteNumberVo.setCompanyId(companyId);
|
|
|
+ carList.add(carQuoteNumberVo);
|
|
|
+ quoteNumberRedisData.setCarList(carList);
|
|
|
+ }
|
|
|
+
|
|
|
+ redisTemplate.opsForValue().set(getQuoteNumberRedisKey(userId), JSONObject.toJSONString(quoteNumberRedisData));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据车辆信息获取最大的报价次数
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Integer getMaxQuoteNum(QuoteNumRedisVo quoteNumberRedisData, String companyId, String userId, String licenseNo) {
|
|
|
+ Integer maxQuoteNum = 10;
|
|
|
+ //当天最大报价的次数
|
|
|
+ Integer dayMaxQuoteNum = 0;
|
|
|
+ // 当天已经报价的次数
|
|
|
+ Integer dayAlreadyQuoteNum = 0;
|
|
|
+ //车辆最大报价的次数
|
|
|
+ Integer carMaxQuoteNum = 0;
|
|
|
+ //车辆已经报价的次数
|
|
|
+ Integer carAlreadyQuoteNum = 0;
|
|
|
+ QuoteNumRedisVo.QuoteNumberCompanyVo quoteNumberCompanyVo1 = quoteNumberRedisData.getOriginalCompanyList().stream()
|
|
|
+ .filter(company -> company.getCompanyId().equals(companyId)).findFirst().orElse(null);
|
|
|
+ if(!Objects.isNull(quoteNumberCompanyVo1)){
|
|
|
+
|
|
|
+ dayMaxQuoteNum = quoteNumberCompanyVo1.getDayMaxQuoteNum();
|
|
|
+ carMaxQuoteNum = quoteNumberCompanyVo1.getCarMaxQuoteNum();
|
|
|
+
|
|
|
+
|
|
|
+ QuoteNumRedisVo.QuoteNumberCompanyVo quoteNumberCompanyVo = quoteNumberRedisData.getQuoteCompanyList().stream()
|
|
|
+ .filter(company -> company.getCompanyId().equals(companyId)).findFirst().orElse(null);
|
|
|
+ if(!Objects.isNull(quoteNumberCompanyVo)){
|
|
|
+ dayAlreadyQuoteNum = quoteNumberCompanyVo.getDayMaxQuoteNum();
|
|
|
+ }
|
|
|
+
|
|
|
+ QuoteNumRedisVo.CarQuoteNumberVo carQuoteNumberVo = quoteNumberRedisData.getCarList().stream()
|
|
|
+ .filter(car -> car.getLicenseNo().equals(licenseNo) && car.getCompanyId().equals(companyId))
|
|
|
+ .findAny().orElse(null);
|
|
|
+ if(!Objects.isNull(carQuoteNumberVo)){
|
|
|
+ carAlreadyQuoteNum = carQuoteNumberVo.getQuoteNum();
|
|
|
+ }
|
|
|
+
|
|
|
+ //最大报价次数 - 已报价 = 剩余 当天剩余 与 车辆剩余报价 取最小值
|
|
|
+ maxQuoteNum = Math.min(dayMaxQuoteNum - dayAlreadyQuoteNum,carMaxQuoteNum - carAlreadyQuoteNum);
|
|
|
+ }
|
|
|
+
|
|
|
+ return maxQuoteNum;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BigDecimal getQuoteRatio(String companyId, String userId) {
|
|
|
+ BigDecimal quoteRatio = sysQuoteRecordMapper.getQuoteRatio(userId, companyId);
|
|
|
+ return quoteRatio;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 刷新报价次数
|
|
|
+ * @param companyId
|
|
|
+ * @param userId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void refreshQuoteNum(String companyId, String userId, List<SysQuoteRecord> sysQuoteRecords) {
|
|
|
+ String licenseNo = sysQuoteRecords.get(0).getLicenseNo();
|
|
|
+ QuoteNumRedisVo quoteNumberRedisData = getQuoteNumberRedisData(userId);
|
|
|
+
|
|
|
+ if(quoteNumberRedisData.getQuoteCompanyList().stream().anyMatch(company -> company.getCompanyId().equals(companyId))){
|
|
|
+ quoteNumberRedisData.getQuoteCompanyList().forEach(item->{
|
|
|
+ if(item.getCompanyId().equals(companyId)){
|
|
|
+ item.setDayMaxQuoteNum(item.getDayMaxQuoteNum() + sysQuoteRecords.size());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ QuoteNumRedisVo.QuoteNumberCompanyVo quoteNumberCompanyVo1 = new QuoteNumRedisVo.QuoteNumberCompanyVo();
|
|
|
+ quoteNumberCompanyVo1.setCompanyId(companyId);
|
|
|
+ quoteNumberCompanyVo1.setDayMaxQuoteNum(sysQuoteRecords.size());
|
|
|
+ quoteNumberRedisData.getQuoteCompanyList().add(quoteNumberCompanyVo1);
|
|
|
+ }
|
|
|
+
|
|
|
+ QuoteNumRedisVo.CarQuoteNumberVo carQuoteNumberVo = quoteNumberRedisData.getCarList().stream()
|
|
|
+ .filter(car -> car.getLicenseNo().equals(licenseNo) && car.getCompanyId().equals(companyId))
|
|
|
+ .findFirst().orElse(null);
|
|
|
+ if(!Objects.isNull(carQuoteNumberVo)){
|
|
|
+ quoteNumberRedisData.getCarList().forEach(item->{
|
|
|
+ if(item.getLicenseNo().equals(licenseNo)){
|
|
|
+ item.setQuoteNum(item.getQuoteNum() + sysQuoteRecords.size());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ carQuoteNumberVo = new QuoteNumRedisVo.CarQuoteNumberVo();
|
|
|
+ carQuoteNumberVo.setCompanyId(companyId);
|
|
|
+ carQuoteNumberVo.setLicenseNo(licenseNo);
|
|
|
+ carQuoteNumberVo.setQuoteNum(sysQuoteRecords.size());
|
|
|
+ quoteNumberRedisData.getCarList().add(carQuoteNumberVo);
|
|
|
+ }
|
|
|
+ redisTemplate.opsForValue().set(getQuoteNumberRedisKey(userId), JSONObject.toJSONString(quoteNumberRedisData));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|