package com.ruoyi.device.service.impl; 
 | 
  
 | 
import com.baomidou.mybatisplus.core.metadata.IPage; 
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
 | 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
 | 
import com.ruoyi.common.utils.bean.BeanUtils; 
 | 
import com.ruoyi.common.utils.poi.ExcelUtil; 
 | 
import com.ruoyi.device.dto.DeviceDefectRecordDto; 
 | 
import com.ruoyi.device.dto.DeviceRepairDto; 
 | 
import com.ruoyi.device.execl.DeviceRepairExeclDto; 
 | 
import com.ruoyi.device.mapper.DeviceDefectRecordMapper; 
 | 
import com.ruoyi.device.mapper.DeviceRepairMapper; 
 | 
import com.ruoyi.device.pojo.DeviceDefectRecord; 
 | 
import com.ruoyi.device.pojo.DeviceLedger; 
 | 
import com.ruoyi.device.pojo.DeviceRepair; 
 | 
import com.ruoyi.device.service.DeviceDefectRecordService; 
 | 
import com.ruoyi.device.service.IDeviceLedgerService; 
 | 
import com.ruoyi.device.service.IDeviceRepairService; 
 | 
import com.ruoyi.framework.web.domain.AjaxResult; 
 | 
import lombok.AllArgsConstructor; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
  
 | 
import javax.servlet.http.HttpServletResponse; 
 | 
import java.util.ArrayList; 
 | 
import java.util.Arrays; 
 | 
import java.util.List; 
 | 
  
 | 
@Service 
 | 
@AllArgsConstructor 
 | 
@Slf4j 
 | 
public class DeviceRepairServiceImpl extends ServiceImpl<DeviceRepairMapper, DeviceRepair> implements IDeviceRepairService { 
 | 
  
 | 
    @Autowired 
 | 
    private DeviceDefectRecordService deviceDefectRecordService; 
 | 
    @Autowired 
 | 
    private DeviceRepairMapper deviceRepairMapper; 
 | 
    @Autowired 
 | 
    private IDeviceLedgerService deviceLedgerService; 
 | 
    @Override 
 | 
    public IPage<DeviceRepairDto> queryPage(Page page, DeviceRepairDto deviceRepairDto) { 
 | 
  
 | 
        return deviceRepairMapper.queryPage(page, deviceRepairDto); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public AjaxResult saveDeviceRepair(DeviceRepair deviceRepair) { 
 | 
        DeviceLedger byId = deviceLedgerService.getById(deviceRepair.getDeviceLedgerId()); 
 | 
        deviceRepair.setDeviceName(byId.getDeviceName()); 
 | 
        deviceRepair.setDeviceModel(byId.getDeviceModel()); 
 | 
        boolean save = this.save(deviceRepair); 
 | 
        if (save){ 
 | 
            return AjaxResult.success(); 
 | 
        } 
 | 
        return AjaxResult.error(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public AjaxResult updateDeviceRepair(DeviceRepair deviceRepair) { 
 | 
        if (this.updateById(deviceRepair)) { 
 | 
            Long id = deviceRepair.getId(); 
 | 
            // 
 | 
            DeviceDefectRecordDto deviceDefectRecordDto = new DeviceDefectRecordDto(); 
 | 
            deviceDefectRecordDto.setDeviceLedgerId(id); 
 | 
            deviceDefectRecordDto.setStatus("严重缺陷"); 
 | 
            List<DeviceDefectRecordDto> records = deviceDefectRecordService.listPage(new Page<>(1, -1), deviceDefectRecordDto).getRecords(); 
 | 
            if (!records.isEmpty()){ 
 | 
                records.forEach(deviceDefectRecord -> { 
 | 
                    deviceDefectRecord.setStatus("正常"); 
 | 
                    deviceDefectRecordService.updateByDDR(deviceDefectRecord); 
 | 
                }); 
 | 
            } 
 | 
            return AjaxResult.success(); 
 | 
        } 
 | 
        return AjaxResult.error(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void export(HttpServletResponse response, Long[] ids) { 
 | 
        if (ids == null || ids.length == 0) { 
 | 
            List<DeviceRepair> supplierManageList = this.list(); 
 | 
            ArrayList<DeviceRepairExeclDto> deviceLedgerExeclDtos = new ArrayList<>(); 
 | 
            supplierManageList.stream().forEach(deviceRepair -> { 
 | 
                DeviceRepairExeclDto deviceRepairExeclDto = new DeviceRepairExeclDto(); 
 | 
                BeanUtils.copyProperties(deviceRepair,deviceRepairExeclDto); 
 | 
                deviceRepairExeclDto.setStatusStr(deviceRepair.getStatus() == 0 ? "待维修" : "完结"); 
 | 
  
 | 
                deviceLedgerExeclDtos.add(deviceRepairExeclDto); 
 | 
            }); 
 | 
            ExcelUtil<DeviceRepairExeclDto> util = new ExcelUtil<DeviceRepairExeclDto>(DeviceRepairExeclDto.class); 
 | 
            util.exportExcel(response, deviceLedgerExeclDtos, "设备报修导出"); 
 | 
        }else { 
 | 
            ArrayList<Long> arrayList = new ArrayList<>(); 
 | 
            Arrays.stream(ids).map(id -> { 
 | 
                return arrayList.add( id); 
 | 
            }); 
 | 
            List<DeviceRepair> supplierManageList = deviceRepairMapper.selectBatchIds(arrayList); 
 | 
            ArrayList<DeviceRepairExeclDto> deviceLedgerExeclDtos = new ArrayList<>(); 
 | 
            supplierManageList.stream().forEach(deviceRepair -> { 
 | 
                DeviceRepairExeclDto deviceRepairExeclDto = new DeviceRepairExeclDto(); 
 | 
                BeanUtils.copyProperties(deviceRepair,deviceRepairExeclDto); 
 | 
                deviceRepairExeclDto.setStatusStr(deviceRepair.getStatus() == 0 ? "待维修" : "完结"); 
 | 
  
 | 
                deviceLedgerExeclDtos.add(deviceRepairExeclDto); 
 | 
            }); 
 | 
            ExcelUtil<DeviceRepairExeclDto> util = new ExcelUtil<DeviceRepairExeclDto>(DeviceRepairExeclDto.class); 
 | 
            util.exportExcel(response, deviceLedgerExeclDtos, "设备报修导出"); 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public DeviceRepairDto detailById(Long id) { 
 | 
  
 | 
        return deviceRepairMapper.detailById(id); 
 | 
    } 
 | 
  
 | 
} 
 |