zss
2025-03-25 b700b37c67c8155d3078955f2690406d814f1826
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.device.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import com.alibaba.fastjson2.JSON;
@@ -12,7 +13,9 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.basic.mapper.LaboratoryMapper;
import com.ruoyi.basic.mapper.StructureItemParameterMapper;
import com.ruoyi.basic.pojo.Laboratory;
import com.ruoyi.basic.pojo.StructureItemParameter;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.User;
@@ -25,19 +28,22 @@
import com.ruoyi.device.pojo.*;
import com.ruoyi.device.service.DataConfigService;
import com.ruoyi.device.service.DeviceService;
import com.ruoyi.device.service.DocumentService;
import com.ruoyi.device.service.DeviceDocumentsService;
import com.ruoyi.device.utils.DataAcquisition;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.mapper.InsSampleMapper;
import com.ruoyi.inspect.pojo.InsProduct;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.performance.dto.AuxiliaryCorrectionHoursDto;
import com.ruoyi.performance.pojo.AuxiliaryCorrectionHours;
import com.ruoyi.system.mapper.SysDictDataMapper;
import com.ruoyi.system.mapper.UserMapper;
import lombok.AllArgsConstructor;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -48,6 +54,7 @@
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
@@ -61,15 +68,17 @@
    private UserMapper userMapper;
    private LaboratoryMapper laboratoryMapper;
    private SysDictDataMapper sysDictDataMapper;
    private StructureItemParameterMapper structureItemParameterMapper;
    private DataConfigService dataConfigService;
    private QrShowServiceImpl qrShowService;
    private InsSampleMapper insSampleMapper;
    private DocumentService documentService;
    private DeviceDocumentsService documentService;
    private DeviceMetricRecordMapper deviceMetricRecordMapper;
@@ -120,11 +129,6 @@
    }
    @Override
    public List<Device> selectDevicePrincipal() {
        return deviceMapper.selectDevicePrincipal();
    }
    @Override
    public List<Device> selectDeviceByCategory(String inspectionItem, String inspectionItemSubclass, String laboratory) {
        List<Integer> id;
@@ -171,7 +175,7 @@
        }
        deviceDto.setAuthorizedPersonName(name);
        //查询设备校准信息
        DeviceMetricRecord calibrate = qrShowService.getDeviceMetricRecord(id, "calibrate");
        DeviceMetricRecord calibrate = getDeviceMetricRecord(id, "calibrate");
        deviceDto.setCalibrateNo(calibrate.getCertificateSerialNumber());
        // 到了停用日期,自动将状态改为停用
@@ -185,6 +189,21 @@
            }
        }
        return deviceDto;
    }
    /**
     * 查询设备校准/核查记录
     * @param deviceId
     * @param type
     * @return
     */
    public DeviceMetricRecord getDeviceMetricRecord(int deviceId, String type){
        return Optional.ofNullable(
                deviceMetricRecordMapper.selectOne(Wrappers.<DeviceMetricRecord>lambdaQuery()
                        .eq(DeviceMetricRecord::getDeviceId, deviceId)
                        .eq(DeviceMetricRecord::getType, type)
                        .orderByDesc(DeviceMetricRecord::getCreateTime)
                        .last("limit 1"))).orElse(new DeviceMetricRecord());
    }
    @Override
@@ -309,7 +328,7 @@
        // 设备信息
        Device device = baseMapper.selectById(deviceId);
        // 设备档案
        List<Document> documentList = documentService.list(Wrappers.<Document>lambdaQuery().eq(Document::getDeviceId, deviceId));
        List<DeviceDocuments> documentList = documentService.list(Wrappers.<DeviceDocuments>lambdaQuery().eq(DeviceDocuments::getDeviceId, deviceId));
        // 设备校准表
        List<DeviceMetricRecord> deviceMetricRecordList = deviceMetricRecordMapper.selectList(Wrappers.<DeviceMetricRecord>lambdaQuery().eq(DeviceMetricRecord::getDeviceId, deviceId));
        // 设备维修表
@@ -411,13 +430,13 @@
     * @param documentList              档案列表
     * @param documentExportWordDtoList 返回给word的数据列表
     */
    private static void extracted(List<Document> documentList, List<DocumentExportWordDto> documentExportWordDtoList) {
    private static void extracted(List<DeviceDocuments> documentList, List<DocumentExportWordDto> documentExportWordDtoList) {
        // 给档案加序号   并且分为左右两个列表在word中显示
        for (int i = 0; i < documentList.size(); i++) {
            // 创建word表格中一行的数据对象
            DocumentExportWordDto documentExportWordDto = new DocumentExportWordDto();
            // 获取档案信息
            Document document = documentList.get(i);
            DeviceDocuments document = documentList.get(i);
            // 格式化日期
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            // 根据序号 分别加入两个列表
@@ -489,4 +508,50 @@
            throw new RuntimeException("导出失败");
        }
    }
    //导入设备
    @Override
    public void importExcel(List<Device> list){
        if (CollectionUtil.isEmpty(list)) {
            return;
        }
        List<Device> deviceList = new ArrayList<>();
        List<Device> devices = new ArrayList<>();
        for (Device device : list) {
            Device device1 = deviceMapper.selectOne(Wrappers.<Device>lambdaQuery()
                    .eq(Device::getDeviceName, device.getDeviceName())
                    .eq(Device::getSpecificationModel, device.getSpecificationModel())
                    .eq(Device::getManagementNumber, device.getManagementNumber()));
            //管理人
            if (ObjectUtils.isNotEmpty(device.getEquipmentManagerName())){
                //查对应管理人
                User user = userMapper.selectOne(Wrappers.<User>lambdaQuery()
                        .eq(User::getName, device.getEquipmentManagerName()));
                device.setEquipmentManager(user.getId());
            }
            //所属部门
            if (ObjectUtils.isNotEmpty(device.getSubordinateDepartments())){
                //查对应所属部门
                Laboratory laboratory = laboratoryMapper.selectOne(Wrappers.<Laboratory>lambdaQuery()
                        .eq(Laboratory::getLaboratoryName,device.getSubordinateDepartments()));
                device.setSubordinateDepartmentsId(laboratory.getId());
            }
            //设备状态
            if (ObjectUtils.isNotEmpty(device.getDeviceStatusName())){
                //查字典对应的值
                String status = sysDictDataMapper.selectDictValue("device_status", device.getDeviceStatusName());
                device.setDeviceStatus(Integer.parseInt(status));
            }
            if (ObjectUtils.isNotEmpty(device1)) {
                devices.add(device1);
            } else {
                deviceList.add(device);
            }
        }
        //批量新增
        saveBatch(deviceList);
        //批量修改
        updateBatchById(devices);
    }
}