From 11af23e0c7976eed1211ba2ca0beae3a12e19310 Mon Sep 17 00:00:00 2001
From: lxp <1928192722@qq.com>
Date: 星期三, 12 三月 2025 15:37:47 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/DeviceFaultServiceImpl.java |  107 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 107 insertions(+), 0 deletions(-)

diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/impl/DeviceFaultServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/DeviceFaultServiceImpl.java
new file mode 100644
index 0000000..3d780b1
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/DeviceFaultServiceImpl.java
@@ -0,0 +1,107 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.mapper.StructureItemParameterMapper;
+import com.ruoyi.basic.pojo.StructureItemParameter;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.utils.DictUtils;
+import com.ruoyi.requier.mapper.DeviceFaultMapper;
+import com.ruoyi.requier.mapper.DeviceFaultOneMapper;
+import com.ruoyi.requier.mapper.DeviceMaintenanceMapper;
+import com.ruoyi.requier.mapper.DeviceMapper;
+import com.ruoyi.requier.pojo.*;
+import com.ruoyi.requier.service.DeviceFaultService;
+import com.ruoyi.system.mapper.SysDictDataMapper;
+import com.ruoyi.system.mapper.SysDictTypeMapper;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+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;
+
+    @Resource
+    private SysDictDataMapper sysDictDataMapper;
+
+    @Autowired
+    private DeviceMaintenanceMapper deviceMaintenanceMapper;
+
+    @Autowired
+    private StructureItemParameterMapper structureItemParameterMapper;
+
+    @Autowired
+    private DeviceFaultOneMapper deviceFaultOneMapper;
+
+    @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<SysDictData> sysDictDataList = sysDictDataMapper.selectDictDataByType("device_status");
+//            List<SysDictData> sysDictDataList = DictUtils.getDictCache("璁惧鐘舵��");
+            SysDictData findEnum = sysDictDataList.stream().filter(e-> Integer.parseInt(e.getDictValue()) ==device.getDeviceStatus()).findFirst().orElse(new SysDictData());
+            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.getDictLabel());//璁惧杩愯鐘舵��
+            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;
+    }
+}

--
Gitblit v1.9.3