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;
|
}
|
}
|