|
@@ -2,27 +2,28 @@ package cn.iocoder.yudao.module.pms.service.iotwebtopoproject;
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.ObjUtil;
|
|
import cn.hutool.core.util.ObjUtil;
|
|
|
|
|
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotwebtopoproject.vo.IotWebtopoProjectPageReqVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotwebtopoproject.vo.IotWebtopoProjectPageReqVO;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotwebtopoproject.vo.IotWebtopoProjectSaveReqVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotwebtopoproject.vo.IotWebtopoProjectSaveReqVO;
|
|
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.iotwebtopoprojectdevice.vo.IotWebtopoProjectDevicePageReqVO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotwebtopoproject.IotWebtopoProjectDO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotwebtopoproject.IotWebtopoProjectDO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotwebtopoprojectdevice.IotWebtopoProjectDeviceDO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotwebtopoprojectdevice.IotWebtopoProjectDeviceDO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotwebtopoproject.IotWebtopoProjectMapper;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotwebtopoproject.IotWebtopoProjectMapper;
|
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotwebtopoprojectdevice.IotWebtopoProjectDeviceMapper;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotwebtopoprojectdevice.IotWebtopoProjectDeviceMapper;
|
|
|
-import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
|
|
|
|
|
import com.google.common.collect.ImmutableMap;
|
|
import com.google.common.collect.ImmutableMap;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_WEBTOPO_PROJECT_NOT_EXISTS;
|
|
import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_WEBTOPO_PROJECT_NOT_EXISTS;
|
|
|
-import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.DEPT_NOT_FOUND;
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 组态项目列 Service 实现类
|
|
* 组态项目列 Service 实现类
|
|
@@ -119,4 +120,48 @@ public class IotWebtopoProjectServiceImpl implements IotWebtopoProjectService {
|
|
|
return iotWebtopoProjectMapper.selectPage(pageReqVO);
|
|
return iotWebtopoProjectMapper.selectPage(pageReqVO);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public Long copyProject(IotWebtopoProjectSaveReqVO createReqVO) {
|
|
|
|
|
+ // 拷贝组态项目 提高组态图制作效率
|
|
|
|
|
+ Long projectId = createReqVO.getId();
|
|
|
|
|
+ if (ObjUtil.isEmpty(projectId)) {
|
|
|
|
|
+ throw exception(IOT_WEBTOPO_PROJECT_NOT_EXISTS);
|
|
|
|
|
+ }
|
|
|
|
|
+ IotWebtopoProjectDO existProject = iotWebtopoProjectMapper.selectById(projectId);
|
|
|
|
|
+ if (ObjUtil.isEmpty(existProject)) {
|
|
|
|
|
+ throw exception(IOT_WEBTOPO_PROJECT_NOT_EXISTS);
|
|
|
|
|
+ }
|
|
|
|
|
+ IotWebtopoProjectDO newProject = new IotWebtopoProjectDO();
|
|
|
|
|
+ newProject.setDeptId(existProject.getDeptId());
|
|
|
|
|
+ newProject.setProjectName(createReqVO.getProjectName());
|
|
|
|
|
+ newProject.setThumbnail(existProject.getThumbnail());
|
|
|
|
|
+ newProject.setDataModel(existProject.getDataModel());
|
|
|
|
|
+ newProject.setCreateTime(LocalDateTime.now());
|
|
|
|
|
+ newProject.setRemark(createReqVO.getRemark());
|
|
|
|
|
+ int num = iotWebtopoProjectMapper.insert(newProject);
|
|
|
|
|
+
|
|
|
|
|
+ // 配置新项目关联的设备
|
|
|
|
|
+ List<IotWebtopoProjectDeviceDO> projectDevices = new ArrayList<>();
|
|
|
|
|
+ IotWebtopoProjectDevicePageReqVO reqVO = new IotWebtopoProjectDevicePageReqVO();
|
|
|
|
|
+ reqVO.setProjectId(projectId);
|
|
|
|
|
+ reqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
|
|
|
|
+ PageResult<IotWebtopoProjectDeviceDO> pageDevices = iotWebtopoProjectDeviceMapper.selectPage(reqVO);
|
|
|
|
|
+ if (ObjUtil.isNotEmpty(pageDevices)) {
|
|
|
|
|
+ List<IotWebtopoProjectDeviceDO> devices = pageDevices.getList();
|
|
|
|
|
+ if (CollUtil.isNotEmpty(devices)) {
|
|
|
|
|
+ devices.forEach(device -> {
|
|
|
|
|
+ IotWebtopoProjectDeviceDO projectDevice = new IotWebtopoProjectDeviceDO();
|
|
|
|
|
+ projectDevice.setProjectId(newProject.getId());
|
|
|
|
|
+ projectDevice.setDeviceId(device.getDeviceId());
|
|
|
|
|
+ projectDevice.setCreateTime(LocalDateTime.now());
|
|
|
|
|
+ projectDevices.add(projectDevice);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (CollUtil.isNotEmpty(projectDevices)) {
|
|
|
|
|
+ boolean flag = iotWebtopoProjectDeviceMapper.insertBatch(projectDevices);
|
|
|
|
|
+ }
|
|
|
|
|
+ return newProject.getId();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|