package com.ruoyi.device.service.impl; 
 | 
  
 | 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 
 | 
import com.baomidou.mybatisplus.core.metadata.IPage; 
 | 
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; 
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
 | 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
 | 
import com.ruoyi.common.utils.SecurityUtils; 
 | 
import com.ruoyi.common.utils.bean.BeanUtils; 
 | 
import com.ruoyi.common.utils.poi.ExcelUtil; 
 | 
import com.ruoyi.device.dto.DeviceLedgerDto; 
 | 
import com.ruoyi.device.execl.DeviceLedgerExeclDto; 
 | 
import com.ruoyi.device.mapper.DeviceLedgerMapper; 
 | 
import com.ruoyi.device.pojo.DeviceLedger; 
 | 
import com.ruoyi.device.service.IDeviceLedgerService; 
 | 
import com.ruoyi.framework.web.domain.AjaxResult; 
 | 
import com.ruoyi.project.system.domain.SysUser; 
 | 
import com.ruoyi.project.system.mapper.SysUserMapper; 
 | 
import lombok.AllArgsConstructor; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.web.multipart.MultipartFile; 
 | 
  
 | 
import javax.servlet.http.HttpServletResponse; 
 | 
import java.io.IOException; 
 | 
import java.time.ZoneOffset; 
 | 
import java.util.ArrayList; 
 | 
import java.util.Arrays; 
 | 
import java.util.List; 
 | 
  
 | 
@Service 
 | 
@AllArgsConstructor 
 | 
@Slf4j 
 | 
public class DeviceLedgerServiceImpl  extends ServiceImpl<DeviceLedgerMapper, DeviceLedger> implements IDeviceLedgerService { 
 | 
  
 | 
    @Autowired 
 | 
    private DeviceLedgerMapper deviceLedgerMapper; 
 | 
    @Autowired 
 | 
    private SysUserMapper sysUserMapper; 
 | 
  
 | 
    @Override 
 | 
    public IPage<DeviceLedgerDto> queryPage(Page page, DeviceLedgerDto deviceLedger) { 
 | 
  
 | 
        return deviceLedgerMapper.queryPage(page, deviceLedger); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public AjaxResult saveDeviceLedger(DeviceLedger deviceLedger) { 
 | 
        LambdaQueryWrapper<DeviceLedger> deviceLedgerLambdaQueryWrapper = new LambdaQueryWrapper<>(); 
 | 
        deviceLedgerLambdaQueryWrapper.eq(DeviceLedger::getDeviceModel,deviceLedger.getDeviceModel()); 
 | 
        if (this.count(deviceLedgerLambdaQueryWrapper) > 0) { 
 | 
            return AjaxResult.error("设备型号已存在"); 
 | 
        } 
 | 
        boolean save = this.save(deviceLedger); 
 | 
        if (save){ 
 | 
            return AjaxResult.success(); 
 | 
        } 
 | 
        return AjaxResult.error(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public AjaxResult updateDeviceLedger(DeviceLedger deviceLedger) { 
 | 
        if (this.updateById(deviceLedger)) { 
 | 
            return AjaxResult.success(); 
 | 
        } 
 | 
        return AjaxResult.error(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void export(HttpServletResponse response, Long[] ids) { 
 | 
  
 | 
        if (ids == null || ids.length == 0) { 
 | 
            List<DeviceLedger> supplierManageList = this.list(); 
 | 
  
 | 
            ArrayList<DeviceLedgerExeclDto> deviceLedgerExeclDtos = new ArrayList<>(); 
 | 
            supplierManageList.stream().forEach(deviceLedger -> { 
 | 
                DeviceLedgerExeclDto deviceLedgerExeclDto = new DeviceLedgerExeclDto(); 
 | 
                BeanUtils.copyProperties(deviceLedger,deviceLedgerExeclDto); 
 | 
                deviceLedgerExeclDto.setCreateUser(sysUserMapper.selectUserById(Long.valueOf(deviceLedger.getCreateUser().toString())).getUserName()); 
 | 
                deviceLedgerExeclDtos.add(deviceLedgerExeclDto); 
 | 
            }); 
 | 
            ExcelUtil<DeviceLedgerExeclDto> util = new ExcelUtil<DeviceLedgerExeclDto>(DeviceLedgerExeclDto.class); 
 | 
            util.exportExcel(response, deviceLedgerExeclDtos, "设备台账导出"); 
 | 
        }else  { 
 | 
            ArrayList<Long> arrayList = new ArrayList<>(); 
 | 
            Arrays.stream(ids).map(id -> { 
 | 
                return arrayList.add( id); 
 | 
            }); 
 | 
            List<DeviceLedger> supplierManageList = deviceLedgerMapper.selectBatchIds(arrayList); 
 | 
            ArrayList<DeviceLedgerExeclDto> deviceLedgerExeclDtos = new ArrayList<>(); 
 | 
            supplierManageList.stream().forEach(deviceLedger -> { 
 | 
                DeviceLedgerExeclDto deviceLedgerExeclDto = new DeviceLedgerExeclDto(); 
 | 
                BeanUtils.copyProperties(deviceLedger,deviceLedgerExeclDto); 
 | 
                deviceLedgerExeclDto.setCreateUser(sysUserMapper.selectUserById(Long.valueOf(deviceLedger.getCreateUser().toString())).getUserName()); 
 | 
                deviceLedgerExeclDtos.add(deviceLedgerExeclDto); 
 | 
            }); 
 | 
            ExcelUtil<DeviceLedgerExeclDto> util = new ExcelUtil<DeviceLedgerExeclDto>(DeviceLedgerExeclDto.class); 
 | 
            util.exportExcel(response, deviceLedgerExeclDtos, "设备台账导出"); 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public Boolean importData(MultipartFile file) throws IOException { 
 | 
        ExcelUtil<DeviceLedgerExeclDto> util = new ExcelUtil<DeviceLedgerExeclDto>(DeviceLedgerExeclDto.class); 
 | 
        List<DeviceLedgerExeclDto> userList = util.importExcel(file.getInputStream()); 
 | 
        userList.forEach(c -> { 
 | 
            DeviceLedger deviceLedger = new DeviceLedger(); 
 | 
            SysUser sysUser = sysUserMapper.selectUserByUserName(c.getCreateUser()); 
 | 
            if (sysUser!=null) { 
 | 
                deviceLedger.setCreateUser(sysUser.getUserId().intValue()); 
 | 
            }else { 
 | 
                deviceLedger.setCreateUser(SecurityUtils.getUserId().intValue()); 
 | 
            } 
 | 
            BeanUtils.copyProperties(c,deviceLedger); 
 | 
            deviceLedgerMapper.insert(deviceLedger); 
 | 
        }); 
 | 
  
 | 
        return true; 
 | 
    } 
 | 
} 
 |