瀏覽代碼

pms 设备调拨保存责任人姓名

zhangcl 1 月之前
父節點
當前提交
9706915ffb

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

@@ -32,4 +32,7 @@ public class IotDeviceAllotSaveReqVO {
     @Schema(description = "人员id集合", example = "30175,122")
     private List<Long> personIds;
 
+    @Schema(description = "人员姓名集合", example = "张三,李四")
+    private List<String> personNames;
+
 }

+ 24 - 6
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotdeviceallotlog/IotDeviceAllotLogServiceImpl.java

@@ -1,6 +1,7 @@
 package cn.iocoder.yudao.module.pms.service.iotdeviceallotlog;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceallotlog.vo.IotDeviceAllotLogPageReqVO;
@@ -115,6 +116,7 @@ public class IotDeviceAllotLogServiceImpl implements IotDeviceAllotLogService {
         }
         // 查询出所有要保存设备的id
         List<Long> deviceIds = new ArrayList<>();
+        List<Long> changedDeviceIds = new ArrayList<>();
         reqVOS.forEach(req -> {
             deviceIds.add(req.getDeviceId());
         });
@@ -125,9 +127,17 @@ public class IotDeviceAllotLogServiceImpl implements IotDeviceAllotLogService {
         List<IotDeviceDO> tobeUpdatedDevices = new ArrayList<>();
         List<IotDevicePersonRelationSaveReqVO> personRelations = new ArrayList<>();
         AtomicReference<Long> deptId = new AtomicReference<>(0L);
+        // 设备对应 责任人姓名(逗号分隔)
+        AtomicReference<String> devicePersonNames = new AtomicReference<>(StrUtil.EMPTY);
+        // 如果选择了设备责任人 查询出所有责任人姓名
         reqVOS.forEach(req -> {
             deptId.set(req.getDeptId());
             if (deviceMap.containsKey(req.getDeviceId()) && !req.getDeptId().equals(deviceMap.get(req.getDeviceId()).getDeptId())) {
+                // 如果同步选择了设备责任人 姓名也存在 将责任人姓名同步到 设备表 chargeName
+                if (CollUtil.isNotEmpty(req.getPersonNames())) {
+                    devicePersonNames.set(CollUtil.join(req.getPersonNames(), StrUtil.COMMA));
+                }
+
                 IotDeviceAllotLogDO tempDeviceAllot = new IotDeviceAllotLogDO();
                 tempDeviceAllot.setDeviceId(req.getDeviceId());
                 tempDeviceAllot.setOldDeptId(deviceMap.get(req.getDeviceId()).getDeptId());
@@ -136,7 +146,10 @@ public class IotDeviceAllotLogServiceImpl implements IotDeviceAllotLogService {
                 deviceAllotLogs.add(tempDeviceAllot);
                 IotDeviceDO device = deviceMap.get(req.getDeviceId());
                 device.setDeptId(req.getDeptId());
+                device.setChargeName(devicePersonNames.get());
                 tobeUpdatedDevices.add(device);
+                // 只处理调拨前后部门不同的设备 相关历史数据
+                changedDeviceIds.add(req.getDeviceId());
             }
             // 如果同步选择了设备责任人 需要同步修改相关设备的责任人并记录日志
             if (CollUtil.isNotEmpty(req.getPersonIds())) {
@@ -146,6 +159,7 @@ public class IotDeviceAllotLogServiceImpl implements IotDeviceAllotLogService {
                 tempReqVO.setReason(req.getReason());
                 personRelations.add(tempReqVO);
             }
+
         });
         if (CollUtil.isNotEmpty(deviceAllotLogs)) {
             iotDeviceAllotLogMapper.insertBatch(deviceAllotLogs);
@@ -161,17 +175,21 @@ public class IotDeviceAllotLogServiceImpl implements IotDeviceAllotLogService {
         pmsThreadPoolTaskExecutor.execute(() -> {
             // 异步修改 设备相关的 历史工单
             // 运行记录的历史工单
-            iotOpeationFillService.syncWordOrderData(deviceIds, null, deptId.get());
+            iotOpeationFillService.syncWordOrderData(changedDeviceIds, null, deptId.get());
             // 故障上报历史工单部门
-            iotFailureReportService.syncWordOrderData(deviceIds, deptId.get());
+            iotFailureReportService.syncWordOrderData(changedDeviceIds, deptId.get());
             // 修改维修历史工单
-            iotMaintainService.syncWordOrderData(deviceIds, deptId.get());
+            iotMaintainService.syncWordOrderData(changedDeviceIds, deptId.get());
             // 修改巡检历史工单
-            iotInspectOrderService.syncWordOrderData(deviceIds, deptId.get());
+            iotInspectOrderService.syncWordOrderData(changedDeviceIds, deptId.get());
             // 修改保养历史工单
-            iotMainWorkOrderService.syncWorkOrderData(deviceIds, deptId.get(), reqVOS.get(0).getPersonIds());
+            if (CollUtil.isNotEmpty(reqVOS.get(0).getPersonIds())) {
+                iotMainWorkOrderService.syncWorkOrderData(changedDeviceIds, deptId.get(), reqVOS.get(0).getPersonIds());
+            }
             // 修改历史设备资料库
-            iotTreeService.deviceAllotTree(deviceIds, deptId.get());
+            iotTreeService.deviceAllotTree(changedDeviceIds, deptId.get());
+            // 如果选择了设备责任人 用 责任人名称 更新设备表的字段 chargeName
+
         });
         return 1l;
     }