|  |  | 
 |  |  | package com.javaweb.geo.service.impl; | 
 |  |  |  | 
 |  |  | import java.io.File; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | import cn.hutool.poi.excel.ExcelReader; | 
 |  |  | import cn.hutool.poi.excel.ExcelUtil; | 
 |  |  | import com.javaweb.common.config.Global; | 
 |  |  | import com.javaweb.common.utils.DateUtils; | 
 |  |  | import com.javaweb.common.utils.IdGenerate; | 
 |  |  | import com.javaweb.geo.domain.Device; | 
 |  |  | import com.javaweb.geo.domain.Project; | 
 |  |  | import com.javaweb.geo.enums.RecordType; | 
 |  |  | import com.javaweb.geo.service.IDeviceService; | 
 |  |  | import com.javaweb.geo.service.IProjectService; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import com.javaweb.geo.mapper.DeviceLogMapper; | 
 |  |  | 
 |  |  | import com.javaweb.geo.service.IDeviceLogService; | 
 |  |  | import com.javaweb.common.core.text.Convert; | 
 |  |  | import org.springframework.util.ObjectUtils; | 
 |  |  | import org.springframework.web.multipart.MultipartFile; | 
 |  |  | import tk.mybatis.mapper.genid.GenIdUtil; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  | 
 |  |  |  */ | 
 |  |  | @Service | 
 |  |  | public class DeviceLogServiceImpl implements IDeviceLogService { | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private DeviceLogMapper deviceLogMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private IProjectService projectService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private IDeviceService deviceService; | 
 |  |  |  | 
 |  |  |     private String fileSaveDir = Global.getProfile() + "\\template\\" ; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 查询设备出入库记录 | 
 |  |  | 
 |  |  |         if(ObjectUtils.isEmpty(deviceLog.getId())){ | 
 |  |  |             deviceLog.setId(IdGenerate.nextId()); | 
 |  |  |         } | 
 |  |  |         deviceLog.setCreateTime(DateUtils.getNowDate()); | 
 |  |  |         deviceLog.setCreateDate(DateUtils.getNowDate()); | 
 |  |  |         return deviceLogMapper.insertDeviceLog(deviceLog); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |     public int deleteDeviceLogById(String id) { | 
 |  |  |         return deviceLogMapper.deleteDeviceLogById(id); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 导入设备出入库记录 | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public String importDeviceLog(String projectId,MultipartFile file, boolean updateSupport) { | 
 |  |  |         // 关联项目信息 | 
 |  |  |         Project project = projectService.selectProjectById(projectId); | 
 |  |  |  | 
 |  |  |         try { | 
 |  |  |             String dest = saveExcel(file); | 
 |  |  |             List<DeviceLog> list = readData(dest); | 
 |  |  |             for (DeviceLog item : list) { | 
 |  |  |                 // 转换项目信息 | 
 |  |  |                 item.setProjectId(projectId); | 
 |  |  |                 item.setProjectName(project.getFullName()); | 
 |  |  |  | 
 |  |  |                 // 转换出入库类型 | 
 |  |  |                 String proTypeCode = RecordType.getKeyByName(item.getType()); | 
 |  |  |                 item.setType(proTypeCode); | 
 |  |  |  | 
 |  |  |                 // 转换设备编码 | 
 |  |  |                 String deviceCode = item.getDeviceCode(); | 
 |  |  |                 if (!ObjectUtils.isEmpty(deviceCode)){ | 
 |  |  |                     Device param = new Device(); | 
 |  |  |                     param.setCode(deviceCode); | 
 |  |  |                     List<Device> devices = deviceService.selectDeviceList(param); | 
 |  |  |                     if (!ObjectUtils.isEmpty(devices)){ | 
 |  |  |                         Device device = devices.get(0); | 
 |  |  |                         item.setDeviceId(device.getId()); | 
 |  |  |                         item.setDeviceCode(device.getCode()); | 
 |  |  |                         item.setDeviceName(device.getName()); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 item.setCreateDate(DateUtils.getNowDate()); | 
 |  |  |                 insertDeviceLog(item); | 
 |  |  |             } | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             return e.toString(); | 
 |  |  |         } | 
 |  |  |         return "导入完毕" ; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private String saveExcel(MultipartFile file) { | 
 |  |  |         String filename = file.getOriginalFilename(); | 
 |  |  |         File dir = new File(fileSaveDir); | 
 |  |  |         if (!dir.exists()) { | 
 |  |  |             dir.mkdir(); | 
 |  |  |         } | 
 |  |  |         String addr = fileSaveDir + filename; | 
 |  |  |         try { | 
 |  |  |             File dest = new File(addr); | 
 |  |  |             file.transferTo(dest); | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             return null; | 
 |  |  |         } | 
 |  |  |         return addr; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private List<DeviceLog> readData(String filepath) { | 
 |  |  |         ExcelReader reader = ExcelUtil.getReader(filepath, 0); | 
 |  |  |         reader.addHeaderAlias("出入库单子号", "code"); | 
 |  |  |         reader.addHeaderAlias("设备编码", "deviceCode"); | 
 |  |  |         reader.addHeaderAlias("出入库类型", "type"); | 
 |  |  |         reader.addHeaderAlias("出入库时间", "transactionDate"); | 
 |  |  |         reader.addHeaderAlias("经办人", "optUser"); | 
 |  |  |         reader.addHeaderAlias("使用人", "applyUser"); | 
 |  |  |         reader.addHeaderAlias("出入库数量", "number"); | 
 |  |  |         reader.addHeaderAlias("备注", "remark"); | 
 |  |  |  | 
 |  |  |         List<DeviceLog> list = reader.readAll(DeviceLog.class); | 
 |  |  |         return list; | 
 |  |  |     } | 
 |  |  | } |