zss
2025-01-13 8d85246f061e3da623c7b9eb4e323ee724b4de0b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.yuanchu.mom.service.impl;
 
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.*;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.service.DeviceFaultService;
import com.yuanchu.mom.service.EnumService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.*;
import java.util.stream.Collectors;
 
@Service
public class DeviceFaultServiceImpl extends ServiceImpl<DeviceFaultMapper, DeviceFault> implements DeviceFaultService {
 
    @Autowired
    private DeviceMapper deviceMapper;
 
    @Autowired
    private QrShowServiceImpl qrShowService;
 
    @Autowired
    private DeviceMaintenanceMapper deviceMaintenanceMapper;
 
    @Autowired
    private StructureItemParameterMapper structureItemParameterMapper;
 
    @Autowired
    private DeviceFaultOneMapper deviceFaultOneMapper;
 
    @Autowired
    private EnumService enumService;
 
    @Override
    public Map<String,Object> findByDeviceId(Integer deviceId) {
        Map<String,Object> map = new HashMap<>();
        if(Objects.isNull(deviceId)){
            return map;
        }
        //查询设备主表信息
        Device device = deviceMapper.selectById(deviceId);
        if(!Objects.isNull(device)){
            //查询设备校准信息
            DeviceMetricRecord calibrate = qrShowService.getDeviceMetricRecord(device.getId(), "calibrate");
            //查询设备核查信息
            DeviceMetricRecord examine = qrShowService.getDeviceMetricRecord(device.getId(), "examine");
            //查询设备维护记录
            DeviceMaintenance deviceMaintenance = Optional.ofNullable(deviceMaintenanceMapper.selectOne(Wrappers.<DeviceMaintenance>lambdaQuery()
                    .eq(DeviceMaintenance::getDeviceId, device.getId())
                    .orderByDesc(DeviceMaintenance::getId)
                    .last("limit 1"))).orElse(new DeviceMaintenance());
            //查询设备故障信息
            List<DeviceFaultOne> deviceFaultOneList = Optional.ofNullable(deviceFaultOneMapper.selectList(Wrappers.<DeviceFaultOne>lambdaQuery()
                    .eq(DeviceFaultOne::getDeviceId, device.getId())
                    .orderByDesc(DeviceFaultOne::getId))).orElse(new ArrayList<>());
            //查询设备状态字典
            List<Enums> deviceStatus = enumService.selectEnumByCategory("设备状态");
            Enums findEnum = deviceStatus.stream().filter(e-> Integer.parseInt(e.getValue()) ==device.getDeviceStatus()).findFirst().orElse(new Enums());
            map.put("progress",qrShowService.calcDeviceNextCheckRatio(calibrate.getCalibrationDate(),calibrate.getNextCalibrationDate()));//距离下次校准日期的天数百分比
            map.put("deviceName",device.getDeviceName());//设备名称
            map.put("deviceCode",device.getManagementNumber());//设备编号
            map.put("usedYears",qrShowService.calcUsedYears(device.getActivationDate()));//启用时长(年)
            map.put("deviceStatus",findEnum.getLabel());//设备运行状态
            map.put("faultCount",deviceFaultOneList.size());//故障次数
            String faultDate = !deviceFaultOneList.isEmpty() ?qrShowService.formatDate(deviceFaultOneList.get(0).getFaultDate(),"yyyy-MM-dd"):"";
            map.put("faultDate",faultDate);//最近故障日期
            map.put("lastCalibrationDate",qrShowService.formatDate(calibrate.getCalibrationDate(),"yyyy-MM-dd"));//最近校准日期
            map.put("nextCalibrationDate",qrShowService.formatDate(calibrate.getNextCalibrationDate(),"yyyy-MM-dd"));//下次校准日期
            String calibrateStatus = "0yes".equals(calibrate.getStatus())?"合格":"1no".equals(calibrate.getStatus())?"不合格":"其他";
            map.put("calibrateStatus",Objects.isNull(calibrate.getCalibrationDate())?"":calibrateStatus);//校准总结论
            map.put("lastExamineDate",examine.getCalibrationDate());//最近核查日期
            map.put("nextExamineDate",examine.getNextCalibrationDate());//下次核查日期
            String examineStatus = "0yes".equals(examine.getStatus())?"合格":"1no".equals(examine.getStatus())?"不合格":"其他";
            map.put("examineStatus",Objects.isNull(examine.getCalibrationDate())?"":examineStatus);//核查总结论
            map.put("maintenanceDate",deviceMaintenance.getDate());//最近维护日期
            map.put("nextMaintenanceDate",deviceMaintenance.getNextDate());//下次维护日期
            String maintenanceType = "";
            if(!Objects.isNull(deviceMaintenance.getMaintenanceType())){
                maintenanceType = 0==deviceMaintenance.getMaintenanceType()?"使用前维护":"使用后维护";
            }
            map.put("maintenanceType",maintenanceType);//维护总结论
            //测量项目
            String insProduct = "";
            if(StringUtils.isNotBlank(device.getInsProductIds())){
                String[] ids = device.getInsProductIds().split(",");
                List<StructureItemParameter> parameters = structureItemParameterMapper.selectBatchIds(Arrays.asList(ids));
                List<String> itemList = parameters.stream().map(StructureItemParameter::getInspectionItem).distinct().collect(Collectors.toList());
                insProduct = String.join(",",itemList);
            }
            map.put("insProduct",insProduct);//测量项目
        }
        return map;
    }
}