|
|
@@ -1,6 +1,9 @@
|
|
1
|
1
|
package com.sundot.airport.equipment.service.impl;
|
|
2
|
2
|
|
|
|
3
|
+import java.util.Collections;
|
|
3
|
4
|
import java.util.List;
|
|
|
5
|
+import java.util.Map;
|
|
|
6
|
+import java.util.stream.Collectors;
|
|
4
|
7
|
|
|
5
|
8
|
import cn.hutool.core.collection.CollUtil;
|
|
6
|
9
|
import cn.hutool.core.util.ObjUtil;
|
|
|
@@ -8,6 +11,9 @@ import cn.hutool.core.util.StrUtil;
|
|
8
|
11
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
9
|
12
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
10
|
13
|
import com.sundot.airport.common.constant.Constants;
|
|
|
14
|
+import com.sundot.airport.common.core.domain.entity.SysDept;
|
|
|
15
|
+import com.sundot.airport.common.core.domain.entity.SysDictData;
|
|
|
16
|
+import com.sundot.airport.common.core.domain.entity.SysUser;
|
|
11
|
17
|
import com.sundot.airport.common.core.redis.RedisSerialGenerator;
|
|
12
|
18
|
import com.sundot.airport.common.domain.BaseAttachment;
|
|
13
|
19
|
import com.sundot.airport.common.enums.BaseAttachmentSourceTypeEnum;
|
|
|
@@ -17,8 +23,14 @@ import com.sundot.airport.common.exception.ServiceException;
|
|
17
|
23
|
import com.sundot.airport.common.service.IBaseAttachmentService;
|
|
18
|
24
|
import com.sundot.airport.common.utils.DateUtils;
|
|
19
|
25
|
import com.sundot.airport.common.utils.EquipmentDateUtils;
|
|
|
26
|
+import com.sundot.airport.common.utils.SecurityUtils;
|
|
20
|
27
|
import com.sundot.airport.equipment.domain.EquipmentInspectionRecord;
|
|
21
|
28
|
import com.sundot.airport.equipment.service.IEquipmentInspectionRecordService;
|
|
|
29
|
+import com.sundot.airport.system.domain.BasePosition;
|
|
|
30
|
+import com.sundot.airport.system.service.IBasePositionService;
|
|
|
31
|
+import com.sundot.airport.system.service.ISysDeptService;
|
|
|
32
|
+import com.sundot.airport.system.service.ISysDictDataService;
|
|
|
33
|
+import com.sundot.airport.system.service.ISysUserService;
|
|
22
|
34
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
23
|
35
|
import org.springframework.stereotype.Service;
|
|
24
|
36
|
import com.sundot.airport.equipment.mapper.EquipmentLedgerMapper;
|
|
|
@@ -42,6 +54,14 @@ public class EquipmentLedgerServiceImpl extends ServiceImpl<EquipmentLedgerMappe
|
|
42
|
54
|
private IBaseAttachmentService baseAttachmentService;
|
|
43
|
55
|
@Autowired
|
|
44
|
56
|
private RedisSerialGenerator redisSerialGenerator;
|
|
|
57
|
+ @Autowired
|
|
|
58
|
+ private ISysDictDataService sysDictDataService;
|
|
|
59
|
+ @Autowired
|
|
|
60
|
+ private IBasePositionService basePositionService;
|
|
|
61
|
+ @Autowired
|
|
|
62
|
+ private ISysUserService sysUserService;
|
|
|
63
|
+ @Autowired
|
|
|
64
|
+ private ISysDeptService sysDeptService;
|
|
45
|
65
|
|
|
46
|
66
|
/**
|
|
47
|
67
|
* 查询设备台账
|
|
|
@@ -268,4 +288,157 @@ public class EquipmentLedgerServiceImpl extends ServiceImpl<EquipmentLedgerMappe
|
|
268
|
288
|
public List<EquipmentLedger> selectTwoWeeksUpcomingInspectionList() {
|
|
269
|
289
|
return equipmentLedgerMapper.selectTwoWeeksUpcomingInspectionList();
|
|
270
|
290
|
}
|
|
|
291
|
+
|
|
|
292
|
+ /**
|
|
|
293
|
+ * 导入设备台账数据
|
|
|
294
|
+ *
|
|
|
295
|
+ * @param list 数据列表
|
|
|
296
|
+ * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
|
|
|
297
|
+ * @return 结果
|
|
|
298
|
+ */
|
|
|
299
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
300
|
+ @Override
|
|
|
301
|
+ public String importData(List<EquipmentLedger> list, boolean isUpdateSupport) {
|
|
|
302
|
+ if (CollUtil.isEmpty(list)) {
|
|
|
303
|
+ throw new ServiceException("导入设备台账数据不能为空!");
|
|
|
304
|
+ }
|
|
|
305
|
+
|
|
|
306
|
+ // 用户
|
|
|
307
|
+ List<SysUser> sysUserListAll = sysUserService.selectUserAll();
|
|
|
308
|
+ Map<String, Long> sysUserMap = sysUserListAll.stream().collect(Collectors.toMap(SysUser::getNickName, SysUser::getUserId, (oldValue, newValue) -> newValue));
|
|
|
309
|
+
|
|
|
310
|
+ // 航站楼
|
|
|
311
|
+ BasePosition terminlQuery = new BasePosition();
|
|
|
312
|
+ terminlQuery.setLevel(1);
|
|
|
313
|
+ List<BasePosition> terminlList = basePositionService.selectBasePositionList(terminlQuery);
|
|
|
314
|
+ Map<String, String> terminlMap = terminlList.stream().collect(Collectors.toMap(BasePosition::getName, BasePosition::getCode, (oldValue, newValue) -> newValue));
|
|
|
315
|
+
|
|
|
316
|
+ // 区域
|
|
|
317
|
+ BasePosition regionalQuery = new BasePosition();
|
|
|
318
|
+ regionalQuery.setLevel(2);
|
|
|
319
|
+ List<BasePosition> regionalList = basePositionService.selectBasePositionList(regionalQuery);
|
|
|
320
|
+ Map<String, String> regionalMap = regionalList.stream().collect(Collectors.toMap(BasePosition::getName, BasePosition::getCode, (oldValue, newValue) -> newValue));
|
|
|
321
|
+
|
|
|
322
|
+ // 通道
|
|
|
323
|
+ BasePosition channelQuery = new BasePosition();
|
|
|
324
|
+ channelQuery.setLevel(3);
|
|
|
325
|
+ List<BasePosition> channelList = basePositionService.selectBasePositionList(channelQuery);
|
|
|
326
|
+ Map<String, String> channelMap = channelList.stream().collect(Collectors.toMap(BasePosition::getName, BasePosition::getCode, (oldValue, newValue) -> newValue));
|
|
|
327
|
+
|
|
|
328
|
+ // 使用状态
|
|
|
329
|
+ SysDictData equipmentUsageStatusQuery = new SysDictData();
|
|
|
330
|
+ equipmentUsageStatusQuery.setDictType("equipment_usage_status");
|
|
|
331
|
+ List<SysDictData> equipmentUsageStatusList = sysDictDataService.selectDictDataList(equipmentUsageStatusQuery);
|
|
|
332
|
+ Map<String, String> equipmentUsageStatusMap = equipmentUsageStatusList.stream().collect(Collectors.toMap(SysDictData::getDictLabel, SysDictData::getDictValue));
|
|
|
333
|
+
|
|
|
334
|
+ int successNum = 0;
|
|
|
335
|
+ int failureNum = 0;
|
|
|
336
|
+ StringBuilder successMsg = new StringBuilder();
|
|
|
337
|
+ StringBuilder failureMsg = new StringBuilder();
|
|
|
338
|
+
|
|
|
339
|
+ for (EquipmentLedger data : list) {
|
|
|
340
|
+ // 根据名称填充ID字段
|
|
|
341
|
+ fillIdsByName(data, sysUserMap, terminlMap, regionalMap, channelMap, equipmentUsageStatusMap);
|
|
|
342
|
+ try {
|
|
|
343
|
+ if (ObjUtil.isNull(data.getEquipmentSerialNumber())) {
|
|
|
344
|
+ failureNum++;
|
|
|
345
|
+ failureMsg.append("<br/>" + failureNum + "、设备序列号【" + data.getEquipmentSerialNumber() + "】、设备名称【" + data.getEquipmentName() + "】设备序列号不能为空");
|
|
|
346
|
+ continue;
|
|
|
347
|
+ }
|
|
|
348
|
+ if (ObjUtil.isNull(data.getEquipmentName())) {
|
|
|
349
|
+ failureNum++;
|
|
|
350
|
+ failureMsg.append("<br/>" + failureNum + "、设备序列号【" + data.getEquipmentSerialNumber() + "】、设备名称【" + data.getEquipmentName() + "】设备名称不能为空");
|
|
|
351
|
+ continue;
|
|
|
352
|
+ }
|
|
|
353
|
+
|
|
|
354
|
+ // 查询是否已存在(根据【设备序列号】唯一)
|
|
|
355
|
+ EquipmentLedger queryParam = new EquipmentLedger();
|
|
|
356
|
+ queryParam.setEquipmentSerialNumber(data.getEquipmentSerialNumber());
|
|
|
357
|
+ List<EquipmentLedger> existingList = equipmentLedgerMapper.selectEquipmentLedgerList(queryParam);
|
|
|
358
|
+
|
|
|
359
|
+ if (CollUtil.isEmpty(existingList)) {
|
|
|
360
|
+ // 新增
|
|
|
361
|
+ data.setEquipmentCode(redisSerialGenerator.generate(Constants.EQUIPMENT_LEDGER));
|
|
|
362
|
+ data.setCreateTime(DateUtils.getNowDate());
|
|
|
363
|
+ equipmentLedgerMapper.insertEquipmentLedger(data);
|
|
|
364
|
+ successNum++;
|
|
|
365
|
+ successMsg.append("<br/>" + successNum + "、设备序列号【" + data.getEquipmentSerialNumber() + "】、设备名称【" + data.getEquipmentName() + "】导入成功");
|
|
|
366
|
+ } else if (isUpdateSupport) {
|
|
|
367
|
+ // 更新
|
|
|
368
|
+ EquipmentLedger old = existingList.get(0);
|
|
|
369
|
+ data.setId(old.getId());
|
|
|
370
|
+ data.setEquipmentCode(old.getEquipmentCode());
|
|
|
371
|
+ data.setUpdateTime(DateUtils.getNowDate());
|
|
|
372
|
+ equipmentLedgerMapper.updateEquipmentLedger(data);
|
|
|
373
|
+ successNum++;
|
|
|
374
|
+ successMsg.append("<br/>" + successNum + "、设备序列号【" + data.getEquipmentSerialNumber() + "】、设备名称【" + data.getEquipmentName() + "】更新成功");
|
|
|
375
|
+ } else {
|
|
|
376
|
+ failureNum++;
|
|
|
377
|
+ failureMsg.append("<br/>" + failureNum + "、设备序列号【" + data.getEquipmentSerialNumber() + "】、设备名称【" + data.getEquipmentName() + "】已存在");
|
|
|
378
|
+ }
|
|
|
379
|
+ } catch (Exception e) {
|
|
|
380
|
+ failureNum++;
|
|
|
381
|
+ String msg = "<br/>" + failureNum + "、设备序列号【" + data.getEquipmentSerialNumber() + "】、设备名称【" + data.getEquipmentName() + "】导入失败:";
|
|
|
382
|
+ failureMsg.append(msg + e.getMessage());
|
|
|
383
|
+ }
|
|
|
384
|
+ }
|
|
|
385
|
+
|
|
|
386
|
+ if (failureNum > 0) {
|
|
|
387
|
+ failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
|
|
|
388
|
+ throw new ServiceException(failureMsg.toString());
|
|
|
389
|
+ } else {
|
|
|
390
|
+ successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
|
|
|
391
|
+ }
|
|
|
392
|
+ return successMsg.toString();
|
|
|
393
|
+ }
|
|
|
394
|
+
|
|
|
395
|
+ /**
|
|
|
396
|
+ * 根据名称填充ID字段
|
|
|
397
|
+ *
|
|
|
398
|
+ * @param data 速率数据
|
|
|
399
|
+ */
|
|
|
400
|
+ private void fillIdsByName(EquipmentLedger data, Map<String, Long> sysUserMap, Map<String, String> terminlMap, Map<String, String> regionalMap, Map<String, String> channelMap, Map<String, String> equipmentUsageStatusMap) {
|
|
|
401
|
+ // 定/自检小组组长
|
|
|
402
|
+ if (ObjUtil.isNotNull(data.getInspectionTeamLeaderName())) {
|
|
|
403
|
+ data.setInspectionTeamLeaderId(sysUserMap.get(data.getInspectionTeamLeaderName()));
|
|
|
404
|
+ }
|
|
|
405
|
+ // 定/自检小组组员1
|
|
|
406
|
+ if (ObjUtil.isNotNull(data.getInspectionTeamMember1Name())) {
|
|
|
407
|
+ data.setInspectionTeamMember1Id(sysUserMap.get(data.getInspectionTeamMember1Name()));
|
|
|
408
|
+ }
|
|
|
409
|
+ // 定/自检小组组员2
|
|
|
410
|
+ if (ObjUtil.isNotNull(data.getInspectionTeamMember2Name())) {
|
|
|
411
|
+ data.setInspectionTeamMember2Id(sysUserMap.get(data.getInspectionTeamMember2Name()));
|
|
|
412
|
+ }
|
|
|
413
|
+ // 航站楼
|
|
|
414
|
+ if (ObjUtil.isNotNull(data.getTerminlName())) {
|
|
|
415
|
+ data.setTerminlCode(terminlMap.get(data.getTerminlName()));
|
|
|
416
|
+ }
|
|
|
417
|
+ // 区域
|
|
|
418
|
+ if (ObjUtil.isNotNull(data.getRegionalName())) {
|
|
|
419
|
+ data.setRegionalCode(regionalMap.get(data.getRegionalName()));
|
|
|
420
|
+ }
|
|
|
421
|
+ // 通道
|
|
|
422
|
+ if (ObjUtil.isNotNull(data.getChannelName())) {
|
|
|
423
|
+ data.setChannelCode(channelMap.get(data.getChannelName()));
|
|
|
424
|
+ }
|
|
|
425
|
+ }
|
|
|
426
|
+
|
|
|
427
|
+ /**
|
|
|
428
|
+ * 设备台账通知
|
|
|
429
|
+ *
|
|
|
430
|
+ * @param equipmentLedger 设备台账
|
|
|
431
|
+ * @return 设备台账
|
|
|
432
|
+ */
|
|
|
433
|
+ @Override
|
|
|
434
|
+ public List<EquipmentLedger> notice(EquipmentLedger equipmentLedger) {
|
|
|
435
|
+ if (ObjUtil.isNull(SecurityUtils.getDeptId())) {
|
|
|
436
|
+ return Collections.emptyList();
|
|
|
437
|
+ }
|
|
|
438
|
+ SysDept sysDept = sysDeptService.selectDeptById(SecurityUtils.getDeptId());
|
|
|
439
|
+ if (!StrUtil.equals("设备维修中心", sysDept.getDeptName())) {
|
|
|
440
|
+ return Collections.emptyList();
|
|
|
441
|
+ }
|
|
|
442
|
+ return selectEquipmentLedgerList(equipmentLedger);
|
|
|
443
|
+ }
|
|
271
|
444
|
}
|