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.domain.DeviceLog; 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业务层处理 * * @author cxy * @date 2024-05-16 */ @Service public class DeviceLogServiceImpl implements IDeviceLogService { @Autowired private DeviceLogMapper deviceLogMapper; @Autowired private IProjectService projectService; private String fileSaveDir = Global.getProfile() + "\\template\\" ; /** * 查询设备出入库记录 * * @param id 设备出入库记录ID * @return 设备出入库记录 */ @Override public DeviceLog selectDeviceLogById(String id) { return deviceLogMapper.selectDeviceLogById(id); } /** * 查询设备出入库记录列表 * * @param deviceLog 设备出入库记录 * @return 设备出入库记录 */ @Override public List selectDeviceLogList(DeviceLog deviceLog) { return deviceLogMapper.selectDeviceLogList(deviceLog); } /** * 新增设备出入库记录 * * @param deviceLog 设备出入库记录 * @return 结果 */ @Override public int insertDeviceLog(DeviceLog deviceLog) { if(ObjectUtils.isEmpty(deviceLog.getId())){ deviceLog.setId(IdGenerate.nextId()); } deviceLog.setCreateDate(DateUtils.getNowDate()); return deviceLogMapper.insertDeviceLog(deviceLog); } /** * 修改设备出入库记录 * * @param deviceLog 设备出入库记录 * @return 结果 */ @Override public int updateDeviceLog(DeviceLog deviceLog) { return deviceLogMapper.updateDeviceLog(deviceLog); } /** * 删除设备出入库记录对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteDeviceLogByIds(String ids) { return deviceLogMapper.deleteDeviceLogByIds(Convert.toStrArray(ids)); } /** * 删除设备出入库记录信息 * * @param id 设备出入库记录ID * @return 结果 */ @Override 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 list = readData(dest); for (DeviceLog item : list) { // 转换项目信息 item.setProjectId(projectId); item.setProjectName(project.getFullName()); 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 readData(String filepath) { ExcelReader reader = ExcelUtil.getReader(filepath, 0); reader.addHeaderAlias("出入库单子号", "code"); reader.addHeaderAlias("设备名称", "deviceName"); reader.addHeaderAlias("类型", "type"); reader.addHeaderAlias("入库时间", "inboundDate"); reader.addHeaderAlias("出库时间", "outboundDate"); reader.addHeaderAlias("经办人", "optUser"); reader.addHeaderAlias("负责人", "applyUser"); reader.addHeaderAlias("出入库数量", "number"); reader.addHeaderAlias("备注", "remark"); List list = reader.readAll(DeviceLog.class); return list; } }