Jelajahi Sumber

pms 瑞都日报汇总 设备利用率 逻辑调整

zhangcl 3 hari lalu
induk
melakukan
840d100748

+ 4 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotmainworkorder/vo/IotMainWorkOrderRespVO.java

@@ -85,6 +85,10 @@ public class IotMainWorkOrderRespVO {
     @ExcelProperty("保养结束时间")
     private LocalDateTime actualEndTime;
 
+    @Schema(description = "填报人", example = "张三")
+    @ExcelProperty("填报人")
+    private String applicant;
+
     @Schema(description = "备注", example = "你说的对")
     @ExcelProperty("备注")
     private String remark;

+ 3 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotmainworkorder/vo/IotMainWorkOrderSaveReqVO.java

@@ -63,6 +63,9 @@ public class IotMainWorkOrderSaveReqVO {
     @Schema(description = "实际保养结束时间")
     private LocalDateTime actualEndTime;
 
+    @Schema(description = "填报人", example = "张三")
+    private String applicant;
+
     @Schema(description = "备注", example = "你说的对")
     private String remark;
 

+ 9 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotwebtopoproject/IotWebtopoProjectController.java

@@ -93,6 +93,15 @@ public class IotWebtopoProjectController {
         return success(buildWebtopProject(iotWebtopoProject));
     }
 
+    @PostMapping("/copyProject")
+    @Operation(summary = "复制组态项目")
+    @Parameter(name = "id", description = "组态项目id", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('pms:iot-webtopo-project:create')")
+    public CommonResult<Long> copyProject(@Valid @RequestBody IotWebtopoProjectSaveReqVO createReqVO) {
+        Long newProjectId = iotWebtopoProjectService.copyProject(createReqVO);
+        return success(newProjectId);
+    }
+
     /**
      * 查询对应的 组态项目信息
      * @param project

+ 4 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotmainworkorder/IotMainWorkOrderDO.java

@@ -93,6 +93,10 @@ public class IotMainWorkOrderDO extends BaseDO {
      * 实际保养结束时间
      */
     private LocalDateTime actualEndTime;
+    /**
+     * 填报人 必填
+     */
+    private String applicant;
     /**
      * 备注
      */

+ 7 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotwebtopoproject/IotWebtopoProjectService.java

@@ -52,4 +52,11 @@ public interface IotWebtopoProjectService {
      */
     PageResult<IotWebtopoProjectDO> getIotWebtopoProjectPage(IotWebtopoProjectPageReqVO pageReqVO);
 
+    /**
+     * 拷贝组态项目
+     *
+     * @param createReqVO 项目信息
+     * @return
+     */
+    Long copyProject(IotWebtopoProjectSaveReqVO createReqVO);
 }

+ 47 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotwebtopoproject/IotWebtopoProjectServiceImpl.java

@@ -2,27 +2,28 @@ package cn.iocoder.yudao.module.pms.service.iotwebtopoproject;
 
 import cn.hutool.core.collection.CollUtil;
 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.util.object.BeanUtils;
 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.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.iotwebtopoprojectdevice.IotWebtopoProjectDeviceDO;
 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.system.dal.dataobject.dept.DeptDO;
 import com.google.common.collect.ImmutableMap;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 
 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.system.enums.ErrorCodeConstants.DEPT_NOT_FOUND;
 
 /**
  * 组态项目列 Service 实现类
@@ -119,4 +120,48 @@ public class IotWebtopoProjectServiceImpl implements IotWebtopoProjectService {
         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();
+    }
+
 }