ソースを参照

产品编码工具类

xucaiqin 2 年 前
コミット
5a65bc1ed6

+ 58 - 0
iot-framework/iot-common/src/main/java/com/middle/platform/common/utils/OrderUtil.java

@@ -0,0 +1,58 @@
+package com.middle.platform.common.utils;
+
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+import lombok.SneakyThrows;
+import org.jetbrains.annotations.NotNull;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Optional;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author xucaiqin
+ * @date 2023-12-28 14:28:05
+ */
+public class OrderUtil {
+    private final static String ymd = "yyyyMMdd";
+    private final static LoadingCache<String, Long> cache = CacheBuilder.newBuilder()
+            .expireAfterWrite(24 * 61, TimeUnit.MINUTES) // 设置写入后的过期时间
+            .maximumSize(100) // 设置最大缓存大小
+            .build(new CacheLoader<>() {
+                @NotNull
+                @Override
+                public Long load(String key) {
+                    return 1L;
+                }
+            });
+
+    /**
+     * 流水号
+     *
+     * @param prefix 前缀
+     * @return
+     */
+    @SneakyThrows
+    public static String get(String prefix) {
+        String key = prefix + getYMD();
+        Long aLong = cache.get(key);
+        Optional.of(aLong).ifPresent(v -> cache.put(key, v + 1));
+        return key + String.format("%05d", aLong);
+    }
+
+
+    private static String getYMD() {
+        return LocalDateTimeUtil.format(LocalDate.now(), DateTimeFormatter.ofPattern(ymd));
+    }
+
+    public static void main(String[] args) {
+        for (int i = 0; i < 10; i++) {
+            System.out.println(get("PRO01"));
+        }
+    }
+
+
+}

+ 9 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/constant/Constant.java

@@ -0,0 +1,9 @@
+package com.middle.platform.manage.biz.constant;
+
+/**
+ * @author xucaiqin
+ * @date 2023-12-28 15:35:26
+ */
+public interface Constant {
+    String PRODUCT_PREFIX = "PDT";
+}

+ 1 - 3
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/controller/IotProductController.java

@@ -6,7 +6,6 @@ import com.middle.platform.manage.biz.service.IotCloudService;
 import com.middle.platform.manage.biz.service.IotModService;
 import com.middle.platform.manage.biz.service.IotProductService;
 import com.middle.platform.manage.biz.service.IotUrlService;
-import jakarta.annotation.Resource;
 import jakarta.validation.Valid;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
@@ -22,8 +21,7 @@ import org.springframework.web.bind.annotation.*;
 @RequiredArgsConstructor
 @Validated
 public class IotProductController {
-    @Resource
-    private IotProductService iotProductService;
+    private final IotProductService iotProductService;
     private final IotModService iotModService;
     private final IotCloudService iotCloudService;
     private final IotUrlService iotUrlService;

+ 4 - 1
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotProductService.java

@@ -4,10 +4,12 @@ import cn.hutool.core.util.IdUtil;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.middle.platform.common.exception.BusinessException;
+import com.middle.platform.common.utils.OrderUtil;
 import com.middle.platform.data.api.feign.TdApi;
 import com.middle.platform.manage.api.pojo.DeviceVo;
 import com.middle.platform.manage.api.pojo.ProductVo;
 import com.middle.platform.manage.api.pojo.TopicVo;
+import com.middle.platform.manage.biz.constant.Constant;
 import com.middle.platform.manage.biz.constant.UrlType;
 import com.middle.platform.manage.biz.domain.req.IotProductPara;
 import com.middle.platform.manage.biz.domain.req.ProductPage;
@@ -84,7 +86,7 @@ public class IotProductService {
     @Transactional(rollbackFor = Exception.class)
     public Object save(IotProductPara iotProductPara) {
         IotProduct iotProduct = new IotProduct();
-        iotProduct.setCode(IdUtil.nanoId(12));
+        iotProduct.setCode(OrderUtil.get(Constant.PRODUCT_PREFIX) + String.format("%01d", iotProductPara.getNodeType()));
         iotProduct.setName(iotProductPara.getName());
         iotProduct.setSecret(IdUtil.nanoId());
         iotProduct.setNodeType(iotProductPara.getNodeType());
@@ -193,6 +195,7 @@ public class IotProductService {
 
     /**
      * 查询设备/产品详情
+     *
      * @param id 设备id
      * @return
      */

+ 2 - 2
iot-module/iot-module-system/iot-module-system-api/src/main/java/com/middle/platform/system/api/enums/DictType.java

@@ -7,9 +7,9 @@ package com.middle.platform.system.api.enums;
 public interface DictType {
     String NODE_TYPE = "node_type";
     String NETWORK_TYPE = "network_type";
-    String REPORT_PROTOCOL_TYPE = "reportProtocol_type";
+    String REPORT_PROTOCOL_TYPE = "report_protocol_type";
     String VENDORS_TYPE = "vendors_type";
-    String DATA_FORMAT_TYPE = "data_tormat_type";
+    String DATA_FORMAT_TYPE = "data_format_type";
     String AUTH_TYPE = "auth_type";//认证类型
     String SEX_TYPE = "sex_type";//性别
     String STATUS_TYPE = "status_type";//状态 启用 禁用