Просмотр исходного кода

Merge branch 'master' into test

李进 2 лет назад
Родитель
Сommit
4e01e9ecf9

+ 72 - 43
device-api-service/src/main/java/com/xy/service/DeviceRegisterServiceImpl.java

@@ -37,7 +37,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
 import java.util.List;
 
 import static com.xy.utils.PlusBeans.*;
@@ -281,11 +280,11 @@ public class DeviceRegisterServiceImpl extends ServiceImpl<DeviceRegisterMapper,
 
     @ApiOperation("上传sn注册设备")
     @PostMapping("uploadSaveBySn")
-    public R uploadSaveBySn(@RequestParam("file") MultipartFile file, @RequestParam("deviceType") Integer deviceType, @RequestParam("devicePc") String devicePc, @RequestParam("assetNo") String assetNo) {
+    public R uploadSaveBySn(@RequestParam("file") MultipartFile file, @RequestParam("devicePc") String devicePc) {
         ThreadPoolUtils.excPoll(DeviceThreadPoolConfig.DEVICE_COMMON_POLL, 1)
                 .execute(() -> {
                     try {
-                        EasyExcel.read(file.getInputStream(), UploadSaveBySn.class, new UploadSaveBySnListener(deviceCreateIdsService, this, alipayDeviceService, deviceType, devicePc, assetNo)).sheet().doRead();
+                        EasyExcel.read(file.getInputStream(), UploadSaveBySn.class, new UploadSaveBySnListener(deviceCreateIdsService, this, alipayDeviceService, devicePc)).sheet().doRead();
                     } catch (IOException e) {
                         log.error("", e);
                     }
@@ -318,13 +317,9 @@ public class DeviceRegisterServiceImpl extends ServiceImpl<DeviceRegisterMapper,
 
         private final AlipayDeviceService alipayDeviceService;
 
-        private final Integer deviceType;
-
         private final String devicePc;
 
-        private final String assetNo;
-
-        private List<UploadSaveBySn> sns = new ArrayList<>();
+        private JList<UploadSaveBySn> sns = new JArrayList<>();
 
         /**
          * 这个每一条数据解析都会来调用
@@ -334,6 +329,20 @@ public class DeviceRegisterServiceImpl extends ServiceImpl<DeviceRegisterMapper,
          */
         @Override
         public void invoke(UploadSaveBySn data, AnalysisContext context) {
+            String deviceType = data.getDeviceType();
+            if (deviceType == null) {
+                return;
+            }
+            Integer deviceTypeValue = deviceType.equals("动态视觉柜(单门)") ? 1
+                    : deviceType.equals("动态视觉柜(双门)") ? 2
+                    : deviceType.equals("重力柜(单门)") ? 3
+                    : deviceType.equals("重力柜(双门)") ? 4
+                    : deviceType.equals("支付宝视动态觉柜") ? 5
+                    : null;
+            if (deviceTypeValue == null) {
+                return;
+            }
+            data.setDeviceTypeValue(deviceTypeValue);
             sns.add(data);
         }
 
@@ -345,42 +354,44 @@ public class DeviceRegisterServiceImpl extends ServiceImpl<DeviceRegisterMapper,
         @Override
         public void doAfterAllAnalysed(AnalysisContext context) {
             log.info("上传sn注册设备文件解析完毕,总数量:{},批次:{}", sns.size(), devicePc);
-            //生成设备号
-            JList<DeviceCreateIds> deviceCreateIds = deviceCreateIdsService.save(new DeviceCreateIdsDto.Save()
-                    .setDeviceType(deviceType)
-                    .setDoorType("1")
-                    .setCreatePc(devicePc)
-                    .setNum(sns.size())
-            ).getData();
-            JList<Long> deviceIds = deviceCreateIds.getProperty(DeviceCreateIds::getDeviceId);
-            //注册设备
-            ThreadPoolUtils.Execute execute = ThreadPoolUtils.excPoll(DeviceThreadPoolConfig.DEVICE_COMMON_POLL, sns.size());
-            for (int i = 0; i < sns.size(); i++) {
-                UploadSaveBySn sn = sns.get(i);
-                Long deviceId = deviceIds.get(i);
-                execute.execute(() -> {
-                    DeviceRegisterDto.Save save = new DeviceRegisterDto.Save()
-                            .setDeviceId(deviceId)
-                            .setDeviceSn(sn.getSn())
-                            .setDevicePc(devicePc)
-                            .setAssetNo(assetNo);
-                    R r = deviceRegisterService.save(save);
-                    if (r.getCode() == R.Enum.FAIL.getCode()) {
-                        log.error("{},{}", sn.getSn(), r.getMsg());
-                    } else {
-                        //初始化支付宝设备
-                        if (deviceType == 5) {
-                            alipayDeviceService.deviceAssign(new DeviceAssignDTO()
-                                    .setTerminalId(String.valueOf(deviceId))
-                                    .setDeviceIdentifyType("DYNAMIC")
-                                    .setDeviceSn(sn.getSn())
-                                    .setDeviceName(String.valueOf(deviceId))
-                            );
+            JMap<Integer, List<UploadSaveBySn>> group = sns.toMap(UploadSaveBySn::getDeviceTypeValue).group();
+            group.forEach((deviceTypeValue, uploadSaveBySns) -> {
+                ThreadPoolUtils.Execute execute = ThreadPoolUtils.excPoll(DeviceThreadPoolConfig.DEVICE_COMMON_POLL, uploadSaveBySns.size());
+                //生成设备号
+                JList<DeviceCreateIds> deviceCreateIds = deviceCreateIdsService.save(new DeviceCreateIdsDto.Save()
+                        .setDeviceType(deviceTypeValue)
+                        .setDoorType("1")
+                        .setCreatePc(devicePc)
+                        .setNum(uploadSaveBySns.size())
+                ).getData();
+                //注册设备
+                for (int i = 0; i < uploadSaveBySns.size(); i++) {
+                    UploadSaveBySn sn = uploadSaveBySns.get(i);
+                    Long deviceId = deviceCreateIds.get(i).getDeviceId();
+                    execute.execute(() -> {
+                        DeviceRegisterDto.Save save = new DeviceRegisterDto.Save()
+                                .setDeviceId(deviceId)
+                                .setDeviceSn(sn.getSn())
+                                .setDevicePc(devicePc)
+                                .setAssetNo(sn.getAssetNo());
+                        R r = deviceRegisterService.save(save);
+                        if (r.getCode() == R.Enum.FAIL.getCode()) {
+                            log.error("{},{}", sn.getSn(), r.getMsg());
+                        } else {
+                            //初始化支付宝设备
+                            if (deviceTypeValue == 5) {
+                                alipayDeviceService.deviceAssign(new DeviceAssignDTO()
+                                        .setTerminalId(String.valueOf(deviceId))
+                                        .setDeviceIdentifyType("DYNAMIC")
+                                        .setDeviceSn(sn.getSn())
+                                        .setDeviceName(String.valueOf(deviceId))
+                                );
+                            }
                         }
-                    }
-                });
-            }
-            execute.end();
+                    });
+                }
+                execute.end();
+            });
             log.info("上传sn注册设备注册完毕,批次:{}", devicePc);
         }
     }
@@ -388,6 +399,24 @@ public class DeviceRegisterServiceImpl extends ServiceImpl<DeviceRegisterMapper,
     @Data
     public static class UploadSaveBySn {
 
+        /**
+         * sn
+         */
         private String sn;
+
+        /**
+         * 设备类型
+         */
+        private String deviceType;
+
+        /**
+         * 资产编号
+         */
+        private String assetNo;
+
+        /**
+         * 设备类型值
+         */
+        private Integer deviceTypeValue;
     }
 }

BIN
device-start/src/main/resources/sn_templet.xlsx