|
|
@@ -1,6 +1,7 @@
|
|
|
package com.zhongshu.card.server.core.service.devices;
|
|
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
+import com.github.microservice.core.util.os.SystemUtil;
|
|
|
import com.github.microservice.models.device.DevicePerQuery;
|
|
|
import com.github.microservice.models.device.UserPerQuery;
|
|
|
import com.github.microservice.models.devicePermiss.DeviceAboutPermiss;
|
|
|
@@ -23,16 +24,20 @@ import com.zhongshu.card.server.core.domain.school.CardInfo;
|
|
|
import com.zhongshu.card.server.core.service.projectAbout.CardInfoServiceImpl;
|
|
|
import com.zhongshu.card.server.core.service.projectAbout.OrgUserFaceService;
|
|
|
import com.zhongshu.card.server.core.service.user.UserAccountServiceImpl;
|
|
|
+import com.zhongshu.card.server.core.util.CommonUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.context.ApplicationContext;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.concurrent.ExecutorService;
|
|
|
+import java.util.concurrent.Executors;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -66,6 +71,16 @@ public class DevicePermissIotService {
|
|
|
@Autowired
|
|
|
private UserAccountServiceImpl userAccountService;
|
|
|
|
|
|
+ //线程池
|
|
|
+ private ExecutorService executorService = Executors.newFixedThreadPool(SystemUtil.getCpuCoreCount() * 2);
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private void init(ApplicationContext applicationContext) {
|
|
|
+ Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
|
|
+ executorService.shutdownNow();
|
|
|
+ }));
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 组装设备权限变更的数据
|
|
|
*
|
|
|
@@ -73,23 +88,32 @@ public class DevicePermissIotService {
|
|
|
* @param mark 0: 删除 1:新增、修改 2:全量
|
|
|
* @return
|
|
|
*/
|
|
|
- public ResultContent changeDeviceUser(List<DevicePermiss> permisses, int mark) {
|
|
|
+ public ResultContent changeDeviceUser(List<DevicePermiss> permisses, int mark, String groupId) {
|
|
|
if (ObjectUtils.isNotEmpty(permisses)) {
|
|
|
- Map<String, List<DevicePermiss>> map = permisses.stream().collect(Collectors.groupingBy(DevicePermiss::getGateWayId));
|
|
|
- map.forEach((gateWayId, tempList) -> {
|
|
|
- GateWayPermissModel gateWayPermissModel = new GateWayPermissModel();
|
|
|
- gateWayPermissModel.setGateWayId(gateWayId);
|
|
|
+ executorService.execute(() -> {
|
|
|
+ Map<String, List<DevicePermiss>> map = permisses.stream().collect(Collectors.groupingBy(DevicePermiss::getGateWayId));
|
|
|
+ map.forEach((gateWayId, tempList) -> {
|
|
|
+ GateWayPermissModel gateWayPermissModel = new GateWayPermissModel();
|
|
|
+ gateWayPermissModel.setGateWayId(gateWayId);
|
|
|
+ gateWayPermissModel.setGroupId(groupId);
|
|
|
+ List<DeviceAboutPermiss> devices = tempList.stream().map(it -> {
|
|
|
+ DeviceAboutPermiss permiss = new DeviceAboutPermiss();
|
|
|
+ permiss.setDeviceId(it.getDeviceId());
|
|
|
+ permiss.addUser(it.getUserId());
|
|
|
+ //TODO
|
|
|
+ List<String> ids = new ArrayList<>();
|
|
|
+ for (int i = 0; i < 10000; i++) {
|
|
|
+ ids.add(CommonUtil.UUID());
|
|
|
+ }
|
|
|
+ permiss.addUsers(ids);
|
|
|
+ permiss.setMark(mark);
|
|
|
+ return permiss;
|
|
|
+ }).collect(Collectors.toUnmodifiableList());
|
|
|
+ gateWayPermissModel.setDevices(devices);
|
|
|
|
|
|
- List<DeviceAboutPermiss> devices = tempList.stream().map(it -> {
|
|
|
- DeviceAboutPermiss permiss = new DeviceAboutPermiss();
|
|
|
- permiss.setDeviceId(it.getDeviceId());
|
|
|
- permiss.addUser(it.getUserId());
|
|
|
- permiss.setMark(mark);
|
|
|
- return permiss;
|
|
|
- }).collect(Collectors.toUnmodifiableList());
|
|
|
- gateWayPermissModel.setDevices(devices);
|
|
|
- // 下发设备数据
|
|
|
- devicePermissEventService.requestDeviceBindData(gateWayPermissModel, tempList.get(0).getProjectOid());
|
|
|
+ // 下发设备数据
|
|
|
+ devicePermissEventService.requestDeviceBindData(gateWayPermissModel, tempList.get(0).getProjectOid());
|
|
|
+ });
|
|
|
});
|
|
|
}
|
|
|
return ResultContent.buildSuccess();
|