Commit 8005ae8521a4682a3f15d49d8aa94fa54d4cba7b

Authored by liujun001
1 parent 71de797a

优化流量分配方案

Bsth-admin/src/main/java/com/ruoyi/in/controller/SignInController.java
... ... @@ -4,6 +4,7 @@ import com.ruoyi.common.annotation.Log;
4 4 import com.ruoyi.common.core.controller.BaseController;
5 5 import com.ruoyi.common.core.domain.AjaxResult;
6 6 import com.ruoyi.common.core.page.TableDataInfo;
  7 +import com.ruoyi.common.core.redis.RedisCache;
7 8 import com.ruoyi.common.enums.BusinessType;
8 9 import com.ruoyi.common.exception.file.FileUploadException;
9 10 import com.ruoyi.common.utils.poi.ExcelUtil;
... ... @@ -11,11 +12,13 @@ import com.ruoyi.in.domain.SignIn;
11 12 import com.ruoyi.in.service.ISignInService;
12 13 import com.ruoyi.in.service.SignInServiceV1;
13 14 import com.ruoyi.pojo.response.SignInResponseVo;
  15 +import com.ruoyi.utils.ConstDateUtil;
14 16 import io.swagger.annotations.Api;
15 17 import io.swagger.annotations.ApiOperation;
16 18 import io.swagger.annotations.ApiParam;
17 19 import lombok.extern.slf4j.Slf4j;
18 20 import org.apache.commons.lang3.RandomUtils;
  21 +import org.apache.commons.lang3.StringUtils;
19 22 import org.springframework.beans.factory.annotation.Autowired;
20 23 import org.springframework.validation.annotation.Validated;
21 24 import org.springframework.web.bind.annotation.*;
... ... @@ -23,7 +26,12 @@ import org.springframework.web.bind.annotation.*;
23 26 import javax.servlet.http.HttpServletRequest;
24 27 import javax.servlet.http.HttpServletResponse;
25 28 import java.io.IOException;
  29 +import java.text.MessageFormat;
  30 +import java.util.Date;
26 31 import java.util.List;
  32 +import java.util.concurrent.TimeUnit;
  33 +
  34 +import static com.ruoyi.common.redispre.GlobalRedisPreName.REDIS_SIGN_IN_DRIVER_ALCOHOL_OVERFLOW;
27 35  
28 36 /**
29 37 * 签到Controller
... ... @@ -40,6 +48,8 @@ public class SignInController extends BaseController {
40 48 private ISignInService signInService;
41 49 @Autowired
42 50 private SignInServiceV1 signInServiceV1;
  51 + @Autowired
  52 + private RedisCache redisCache;
43 53  
44 54  
45 55 /**
... ... @@ -99,10 +109,28 @@ public class SignInController extends BaseController {
99 109 @PostMapping("/newAdd")
100 110 @ApiOperation("新增签到(设备传入)")
101 111 public AjaxResult addSignIn(@ApiParam @RequestBody @Validated SignIn signIn) throws FileUploadException, IOException {
  112 + String key = MessageFormat.format("sign:assignment:{0}", signIn.getJobCode());
  113 + if (redisCache.hasKey(key)) {
  114 + log.info(" sing method old sign :[{}]", signIn);
  115 + return signInService.addSignIn(signIn);
  116 + }
  117 +
102 118 Integer num = RandomUtils.nextInt(0, 9);
103   - if (num < 3) {
  119 + if (num < 5) {
  120 + redisCache.setCacheObject(key, num, 5, TimeUnit.MINUTES);
104 121 log.info("[{}] sing method 走新的签到方式 :[{}] ", num, signIn);
105   - return signInServiceV1.addsignInV1(signIn);
  122 + try {
  123 + return signInServiceV1.addsignInV1(signIn);
  124 + } catch (Exception e) {
  125 + key = StringUtils.join(REDIS_SIGN_IN_DRIVER_ALCOHOL_OVERFLOW, ConstDateUtil.FAST_YYYY_MM_DD.format(new Date()), ":", signIn.getJobCode());
  126 + if (redisCache.hasKey(key)) {
  127 + redisCache.setCacheObject(key, 0, 1, TimeUnit.DAYS);
  128 + }
  129 +
  130 + log.error("[{}] sing method 走新的签到方式,签到失败 :[{}]", num, signIn, e);
  131 + return AjaxResult.error("签到失败,请再测试一次");
  132 + }
  133 +
106 134 } else {
107 135 log.info("[{}] sing method old sign :[{}]", num, signIn);
108 136 return signInService.addSignIn(signIn);
... ...
Bsth-admin/src/main/java/com/ruoyi/in/service/impl/SignInServiceImpl.java
1 1 package com.ruoyi.in.service.impl;
2 2  
3   -import java.io.File;
4   -import java.io.IOException;
5   -import java.math.BigDecimal;
6   -import java.time.LocalDate;
7   -import java.time.LocalDateTime;
8   -import java.time.format.DateTimeFormatter;
9   -import java.time.temporal.ChronoUnit;
10   -import java.util.*;
11   -import java.util.concurrent.TimeUnit;
12   -import java.util.stream.Collectors;
13   -
14 3 import cn.hutool.core.collection.CollectionUtil;
15 4 import com.ruoyi.common.cache.NowSchedulingCache;
16 5 import com.ruoyi.common.cache.SchedulingCache;
... ... @@ -25,15 +14,18 @@ import com.ruoyi.common.utils.StringUtils;
25 14 import com.ruoyi.common.utils.ip.IpUtils;
26 15 import com.ruoyi.common.utils.uuid.Seq;
27 16 import com.ruoyi.common.utils.uuid.UUID;
  17 +import com.ruoyi.domain.DriverScheduling;
28 18 import com.ruoyi.driver.domain.Driver;
29 19 import com.ruoyi.driver.mapper.DriverMapper;
30 20 import com.ruoyi.driver.mapper.DriverSchedulingMapper;
31 21 import com.ruoyi.equipment.domain.Equipment;
32 22 import com.ruoyi.equipment.mapper.EquipmentMapper;
33 23 import com.ruoyi.errorScheduling.service.IErrorJobcodeService;
  24 +import com.ruoyi.in.domain.SignIn;
  25 +import com.ruoyi.in.mapper.SignInMapper;
  26 +import com.ruoyi.in.service.ISignInService;
34 27 import com.ruoyi.pojo.DriverSignInRecommendation;
35 28 import com.ruoyi.pojo.GlobalIndex;
36   -import com.ruoyi.domain.DriverScheduling;
37 29 import com.ruoyi.pojo.response.SignInResponseVo;
38 30 import com.ruoyi.service.SchedulingService;
39 31 import com.ruoyi.service.ThreadJobService;
... ... @@ -44,17 +36,24 @@ import org.slf4j.Logger;
44 36 import org.slf4j.LoggerFactory;
45 37 import org.springframework.beans.factory.annotation.Autowired;
46 38 import org.springframework.stereotype.Service;
47   -import com.ruoyi.in.mapper.SignInMapper;
48   -import com.ruoyi.in.domain.SignIn;
49   -import com.ruoyi.in.service.ISignInService;
50 39 import org.springframework.transaction.annotation.Transactional;
51 40  
52 41 import javax.annotation.Resource;
53 42 import javax.servlet.http.HttpServletRequest;
  43 +import java.io.File;
  44 +import java.io.IOException;
  45 +import java.math.BigDecimal;
  46 +import java.time.LocalDate;
  47 +import java.time.LocalDateTime;
  48 +import java.time.format.DateTimeFormatter;
  49 +import java.time.temporal.ChronoUnit;
  50 +import java.util.*;
  51 +import java.util.concurrent.TimeUnit;
  52 +import java.util.stream.Collectors;
54 53  
55 54 import static com.ruoyi.common.ConstDriverProperties.*;
56   -import static com.ruoyi.common.ErrorTypeProperties.*;
57 55 import static com.ruoyi.common.ConstSignInConstSignInProperties.*;
  56 +import static com.ruoyi.common.ErrorTypeProperties.*;
58 57 import static com.ruoyi.common.redispre.GlobalRedisPreName.REDIS_SIGN_IN_DRIVER_ALCOHOL_OVERFLOW;
59 58  
60 59 /**
... ... @@ -648,8 +647,8 @@ public class SignInServiceImpl implements ISignInService {
648 647 if (BC_TYPE_OUT.equals(currentScheduling.getBcType())) {
649 648 LocalDateTime time = ConstDateUtil.stringTransformLocalDateTime(ConstDateUtil.formatDate("yyyy-MM-dd HH:mm:ss", new Date(currentScheduling.getTimestamps())), "yyyy-MM-dd HH:mm:ss");
650 649 LocalDateTime subHours = time.plusHours(-1);
651   - return "请在" + ConstDateUtil.formatDate("HH:mm", time) + "到"
652   - + ConstDateUtil.formatDate("HH:mm", subHours) + "之间打卡";
  650 + return "请在" + ConstDateUtil.formatDate("HH:mm", subHours) + "到"
  651 + + ConstDateUtil.formatDate("HH:mm", time) + "之间打卡";
653 652 } else {
654 653 // 延后一小时
655 654 LocalDateTime time = ConstDateUtil.stringTransformLocalDateTime(ConstDateUtil.formatDate("yyyy-MM-dd HH:mm:ss", new Date(currentScheduling.getTimestamps())), "yyyy-MM-dd HH:mm:ss");
... ...