Bladeren bron

防止重复打印

shxiaoc 1 jaar geleden
bovenliggende
commit
901ce484a3

+ 40 - 0
src/main/java/com/steerinfo/dil/config/RedisConfiguration.java

@@ -0,0 +1,40 @@
+package com.steerinfo.dil.config;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.listener.RedisMessageListenerContainer;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+/**
+ * @program: SpringCloud * @description: redis配置类 * @author: zhang yi * @create: 2020-03-24 14:17
+ */
+@Configuration
+public class RedisConfiguration {
+    @Autowired
+    private RedisConnectionFactory redisConnectionFactory;
+
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    @Bean
+    public RedisTemplate<String, Object> stringSerializerRedisTemplate() {
+        RedisSerializer<String> stringSerializer = new StringRedisSerializer();
+        redisTemplate.setKeySerializer(stringSerializer);
+        redisTemplate.setValueSerializer(stringSerializer);
+        redisTemplate.setHashKeySerializer(stringSerializer);
+        redisTemplate.setHashValueSerializer(stringSerializer);
+        return redisTemplate;
+    }
+
+    @Bean
+    public RedisMessageListenerContainer redisMessageListenerContainer() {
+        RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
+        redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
+        return redisMessageListenerContainer;
+    }
+
+}

+ 15 - 0
src/main/java/com/steerinfo/dil/controller/TmstruckSelfMachineController.java

@@ -4,7 +4,9 @@ import com.steerinfo.dil.mapper.RulesMapper;
 import com.steerinfo.dil.service.impl.TmstruckSelfMachineService;
 import com.steerinfo.dil.util.BaseRESTfulController;
 import com.steerinfo.dil.util.DataChange;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.bind.annotation.*;
 
 import javax.xml.crypto.Data;
@@ -13,6 +15,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @author luobang
@@ -28,6 +31,9 @@ public class TmstruckSelfMachineController extends BaseRESTfulController {
     @Autowired
     RulesMapper rulesMapper;
 
+    @Autowired
+    private RedisTemplate redisTemplate;
+
     /**
      * 提货单
      * @param orderNumber
@@ -79,6 +85,15 @@ public class TmstruckSelfMachineController extends BaseRESTfulController {
         || (DataChange.dataToBigDecimal(bigDecimal1.get("printnumber")).intValue() > maxPrintNumber)
         || (bigDecimal1.get("printDate")!=null && new Date().getTime() - ((Date)bigDecimal1.get("printDate")).getTime() < maxPrintDurationTime)) {
             bigDecimal.put("printnumber",1);
+        } else {
+            String lockStr = "PRINT_LOCK_";
+            if(StringUtils.isNotEmpty(orderNumber)){
+                if("1".equals(redisTemplate.opsForValue().get(lockStr + orderNumber))){
+                    bigDecimal.put("printnumber",1);
+                } else {
+                    redisTemplate.opsForValue().set(lockStr + orderNumber, "1", 30, TimeUnit.SECONDS);
+                }
+            }
         }
         return bigDecimal;
     }