zsl преди 2 години
родител
ревизия
7d8e7fdddc

+ 2 - 1
nb-service/web-service/src/main/java/com/nb/web/service/bus/controller/BusDeviceConfigurationController.java

@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.baomidou.mybatisplus.core.mapper.Mapper;
 import com.nb.common.crud.BaseService;
 import com.nb.common.crud.controller.BaseCrudController;
+import com.nb.common.crud.controller.BaseQueryController;
 import com.nb.core.result.R;
 import com.nb.web.api.entity.BusDeviceConfigurationEntity;
 import com.nb.web.service.bus.controller.vo.ConfigurationParamVo;
@@ -33,7 +34,7 @@ import java.util.List;
 @AllArgsConstructor
 @RequestMapping("/bus/remote/configuration")
 @Api(tags = "设备远程配置管理",description = "统一权限前缀(device:configuration)")
-public class BusDeviceConfigurationController  extends BaseCrudController<BusDeviceConfigurationEntity, String> {
+public class BusDeviceConfigurationController  implements BaseQueryController<BusDeviceConfigurationEntity, String> {
     private final LocalBusDeviceConfigurationService configurationService;
 
     /**

+ 55 - 15
nb-service/web-service/src/main/java/com/nb/web/service/bus/service/LocalBusDeviceConfigurationService.java

@@ -1,5 +1,8 @@
 package com.nb.web.service.bus.service;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.nb.common.crud.BaseService;
 import com.nb.web.api.entity.BusConfigLogEntity;
 import com.nb.web.service.bus.controller.vo.ConfigurationParamVo;
@@ -11,8 +14,13 @@ import com.nb.web.service.bus.service.dto.DeviceConfigurationResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * @author zsl
@@ -47,29 +55,61 @@ public class LocalBusDeviceConfigurationService extends BaseService<BusDeviceCon
         return  baseMapper.selectByQuery(query);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     public int updateConfiguration(ConfigurationParamVo configurationParamVo, List<BusDeviceConfigurationEntity> deviceConfigurationEntitys) {
-        int i = 0;
-        for (BusDeviceConfigurationEntity entity: deviceConfigurationEntitys
-             ) {
+        if(CollectionUtil.isEmpty(deviceConfigurationEntitys)){
+            return 0;
+        }
+//        int i = 0;
+        Set<String> deviceIds = deviceConfigurationEntitys.stream()
+                .map(BusDeviceConfigurationEntity::getDeviceId)
+                .collect(Collectors.toSet());
+        List<BusDeviceConfigurationEntity> existDevice = this.list(new LambdaQueryWrapper<BusDeviceConfigurationEntity>()
+                .in(BusDeviceConfigurationEntity::getDeviceId, deviceIds));
+        //更新
+        Map<String, BusDeviceConfigurationEntity> deviceMap = existDevice.stream()
+                .collect(Collectors.groupingBy(BusDeviceConfigurationEntity::getDeviceId, Collectors.collectingAndThen(Collectors.toList(), CollectionUtil::getFirst)));
+
+        List<BusDeviceConfigurationEntity> batchUpdate = new ArrayList<>();
+        List<BusDeviceConfigurationEntity> batchInsert = new ArrayList<>();
+        for (BusDeviceConfigurationEntity entity : deviceConfigurationEntitys) {
+            String deviceId = entity.getDeviceId();
             entity.setMaxDose(configurationParamVo.getMaxDose());
             entity.setFirstDose(configurationParamVo.getFirstDose());
             entity.setContinueDose(configurationParamVo.getContinueDose());
             entity.setAppendDose(configurationParamVo.getAppendDose());
             entity.setSelfControlLockTime(configurationParamVo.getSelfControlLockTime());
             entity.setTotalDose(configurationParamVo.getTotalDose());
-
-            System.out.println(entity+entity.getTenantId());
-            int i1 = baseMapper.insertNew(entity);
-
-            if( i1 ==0 ){
-                i1 = baseMapper.updateByDeviceId(entity);
+            BusDeviceConfigurationEntity deviceConfiguration = deviceMap.get(deviceId);
+            if(ObjectUtil.isNotNull(deviceConfiguration)){
+                entity.setId(deviceConfiguration.getId());
+                batchUpdate.add(entity);
+            }else {
+                batchInsert.add(entity);
             }
-            busCinfigLogMapper.insert((BusConfigLogEntity) entity);
-            i +=i1;
-
         }
-
-
-        return i;
+        this.updateBatchById(batchUpdate);
+        this.saveBatch(batchInsert);
+//        //插入
+//        for (BusDeviceConfigurationEntity entity: deviceConfigurationEntitys
+//             ) {
+//            entity.setMaxDose(configurationParamVo.getMaxDose());
+//            entity.setFirstDose(configurationParamVo.getFirstDose());
+//            entity.setContinueDose(configurationParamVo.getContinueDose());
+//            entity.setAppendDose(configurationParamVo.getAppendDose());
+//            entity.setSelfControlLockTime(configurationParamVo.getSelfControlLockTime());
+//            entity.setTotalDose(configurationParamVo.getTotalDose());
+//
+//            int i1 = baseMapper.insertNew(entity);
+//
+//            if( i1 ==0 ){
+//                i1 = baseMapper.updateByDeviceId(entity);
+//            }
+//    //        busCinfigLogMapper.insert((BusConfigLogEntity) entity);
+//            i +=i1;
+//
+//        }
+
+        return CollectionUtil.size(deviceConfigurationEntitys);
     }
 }