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,6 +4,7 @@ import com.ruoyi.common.annotation.Log;
4 import com.ruoyi.common.core.controller.BaseController; 4 import com.ruoyi.common.core.controller.BaseController;
5 import com.ruoyi.common.core.domain.AjaxResult; 5 import com.ruoyi.common.core.domain.AjaxResult;
6 import com.ruoyi.common.core.page.TableDataInfo; 6 import com.ruoyi.common.core.page.TableDataInfo;
  7 +import com.ruoyi.common.core.redis.RedisCache;
7 import com.ruoyi.common.enums.BusinessType; 8 import com.ruoyi.common.enums.BusinessType;
8 import com.ruoyi.common.exception.file.FileUploadException; 9 import com.ruoyi.common.exception.file.FileUploadException;
9 import com.ruoyi.common.utils.poi.ExcelUtil; 10 import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -11,11 +12,13 @@ import com.ruoyi.in.domain.SignIn; @@ -11,11 +12,13 @@ import com.ruoyi.in.domain.SignIn;
11 import com.ruoyi.in.service.ISignInService; 12 import com.ruoyi.in.service.ISignInService;
12 import com.ruoyi.in.service.SignInServiceV1; 13 import com.ruoyi.in.service.SignInServiceV1;
13 import com.ruoyi.pojo.response.SignInResponseVo; 14 import com.ruoyi.pojo.response.SignInResponseVo;
  15 +import com.ruoyi.utils.ConstDateUtil;
14 import io.swagger.annotations.Api; 16 import io.swagger.annotations.Api;
15 import io.swagger.annotations.ApiOperation; 17 import io.swagger.annotations.ApiOperation;
16 import io.swagger.annotations.ApiParam; 18 import io.swagger.annotations.ApiParam;
17 import lombok.extern.slf4j.Slf4j; 19 import lombok.extern.slf4j.Slf4j;
18 import org.apache.commons.lang3.RandomUtils; 20 import org.apache.commons.lang3.RandomUtils;
  21 +import org.apache.commons.lang3.StringUtils;
19 import org.springframework.beans.factory.annotation.Autowired; 22 import org.springframework.beans.factory.annotation.Autowired;
20 import org.springframework.validation.annotation.Validated; 23 import org.springframework.validation.annotation.Validated;
21 import org.springframework.web.bind.annotation.*; 24 import org.springframework.web.bind.annotation.*;
@@ -23,7 +26,12 @@ import org.springframework.web.bind.annotation.*; @@ -23,7 +26,12 @@ import org.springframework.web.bind.annotation.*;
23 import javax.servlet.http.HttpServletRequest; 26 import javax.servlet.http.HttpServletRequest;
24 import javax.servlet.http.HttpServletResponse; 27 import javax.servlet.http.HttpServletResponse;
25 import java.io.IOException; 28 import java.io.IOException;
  29 +import java.text.MessageFormat;
  30 +import java.util.Date;
26 import java.util.List; 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 * 签到Controller 37 * 签到Controller
@@ -40,6 +48,8 @@ public class SignInController extends BaseController { @@ -40,6 +48,8 @@ public class SignInController extends BaseController {
40 private ISignInService signInService; 48 private ISignInService signInService;
41 @Autowired 49 @Autowired
42 private SignInServiceV1 signInServiceV1; 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,10 +109,28 @@ public class SignInController extends BaseController {
99 @PostMapping("/newAdd") 109 @PostMapping("/newAdd")
100 @ApiOperation("新增签到(设备传入)") 110 @ApiOperation("新增签到(设备传入)")
101 public AjaxResult addSignIn(@ApiParam @RequestBody @Validated SignIn signIn) throws FileUploadException, IOException { 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 Integer num = RandomUtils.nextInt(0, 9); 118 Integer num = RandomUtils.nextInt(0, 9);
103 - if (num < 3) { 119 + if (num < 5) {
  120 + redisCache.setCacheObject(key, num, 5, TimeUnit.MINUTES);
104 log.info("[{}] sing method 走新的签到方式 :[{}] ", num, signIn); 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 } else { 134 } else {
107 log.info("[{}] sing method old sign :[{}]", num, signIn); 135 log.info("[{}] sing method old sign :[{}]", num, signIn);
108 return signInService.addSignIn(signIn); 136 return signInService.addSignIn(signIn);
Bsth-admin/src/main/java/com/ruoyi/in/service/impl/SignInServiceImpl.java
1 package com.ruoyi.in.service.impl; 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 import cn.hutool.core.collection.CollectionUtil; 3 import cn.hutool.core.collection.CollectionUtil;
15 import com.ruoyi.common.cache.NowSchedulingCache; 4 import com.ruoyi.common.cache.NowSchedulingCache;
16 import com.ruoyi.common.cache.SchedulingCache; 5 import com.ruoyi.common.cache.SchedulingCache;
@@ -25,15 +14,18 @@ import com.ruoyi.common.utils.StringUtils; @@ -25,15 +14,18 @@ import com.ruoyi.common.utils.StringUtils;
25 import com.ruoyi.common.utils.ip.IpUtils; 14 import com.ruoyi.common.utils.ip.IpUtils;
26 import com.ruoyi.common.utils.uuid.Seq; 15 import com.ruoyi.common.utils.uuid.Seq;
27 import com.ruoyi.common.utils.uuid.UUID; 16 import com.ruoyi.common.utils.uuid.UUID;
  17 +import com.ruoyi.domain.DriverScheduling;
28 import com.ruoyi.driver.domain.Driver; 18 import com.ruoyi.driver.domain.Driver;
29 import com.ruoyi.driver.mapper.DriverMapper; 19 import com.ruoyi.driver.mapper.DriverMapper;
30 import com.ruoyi.driver.mapper.DriverSchedulingMapper; 20 import com.ruoyi.driver.mapper.DriverSchedulingMapper;
31 import com.ruoyi.equipment.domain.Equipment; 21 import com.ruoyi.equipment.domain.Equipment;
32 import com.ruoyi.equipment.mapper.EquipmentMapper; 22 import com.ruoyi.equipment.mapper.EquipmentMapper;
33 import com.ruoyi.errorScheduling.service.IErrorJobcodeService; 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 import com.ruoyi.pojo.DriverSignInRecommendation; 27 import com.ruoyi.pojo.DriverSignInRecommendation;
35 import com.ruoyi.pojo.GlobalIndex; 28 import com.ruoyi.pojo.GlobalIndex;
36 -import com.ruoyi.domain.DriverScheduling;  
37 import com.ruoyi.pojo.response.SignInResponseVo; 29 import com.ruoyi.pojo.response.SignInResponseVo;
38 import com.ruoyi.service.SchedulingService; 30 import com.ruoyi.service.SchedulingService;
39 import com.ruoyi.service.ThreadJobService; 31 import com.ruoyi.service.ThreadJobService;
@@ -44,17 +36,24 @@ import org.slf4j.Logger; @@ -44,17 +36,24 @@ import org.slf4j.Logger;
44 import org.slf4j.LoggerFactory; 36 import org.slf4j.LoggerFactory;
45 import org.springframework.beans.factory.annotation.Autowired; 37 import org.springframework.beans.factory.annotation.Autowired;
46 import org.springframework.stereotype.Service; 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 import org.springframework.transaction.annotation.Transactional; 39 import org.springframework.transaction.annotation.Transactional;
51 40
52 import javax.annotation.Resource; 41 import javax.annotation.Resource;
53 import javax.servlet.http.HttpServletRequest; 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 import static com.ruoyi.common.ConstDriverProperties.*; 54 import static com.ruoyi.common.ConstDriverProperties.*;
56 -import static com.ruoyi.common.ErrorTypeProperties.*;  
57 import static com.ruoyi.common.ConstSignInConstSignInProperties.*; 55 import static com.ruoyi.common.ConstSignInConstSignInProperties.*;
  56 +import static com.ruoyi.common.ErrorTypeProperties.*;
58 import static com.ruoyi.common.redispre.GlobalRedisPreName.REDIS_SIGN_IN_DRIVER_ALCOHOL_OVERFLOW; 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,8 +647,8 @@ public class SignInServiceImpl implements ISignInService {
648 if (BC_TYPE_OUT.equals(currentScheduling.getBcType())) { 647 if (BC_TYPE_OUT.equals(currentScheduling.getBcType())) {
649 LocalDateTime time = ConstDateUtil.stringTransformLocalDateTime(ConstDateUtil.formatDate("yyyy-MM-dd HH:mm:ss", new Date(currentScheduling.getTimestamps())), "yyyy-MM-dd HH:mm:ss"); 648 LocalDateTime time = ConstDateUtil.stringTransformLocalDateTime(ConstDateUtil.formatDate("yyyy-MM-dd HH:mm:ss", new Date(currentScheduling.getTimestamps())), "yyyy-MM-dd HH:mm:ss");
650 LocalDateTime subHours = time.plusHours(-1); 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 } else { 652 } else {
654 // 延后一小时 653 // 延后一小时
655 LocalDateTime time = ConstDateUtil.stringTransformLocalDateTime(ConstDateUtil.formatDate("yyyy-MM-dd HH:mm:ss", new Date(currentScheduling.getTimestamps())), "yyyy-MM-dd HH:mm:ss"); 654 LocalDateTime time = ConstDateUtil.stringTransformLocalDateTime(ConstDateUtil.formatDate("yyyy-MM-dd HH:mm:ss", new Date(currentScheduling.getTimestamps())), "yyyy-MM-dd HH:mm:ss");