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.core.domain.AjaxResult; import com.javaweb.common.utils.DateUtils; import com.javaweb.geo.domain.TubLog; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javaweb.geo.mapper.TubLogMapper; import com.javaweb.geo.service.ITubLogService; import com.javaweb.common.core.text.Convert; import org.springframework.util.ObjectUtils; import org.springframework.web.multipart.MultipartFile; /** * 材料出入库记录Service业务层处理 * * @author cxy * @date 2024-05-22 */ @Service public class TubLogServiceImpl implements ITubLogService { @Autowired private TubLogMapper tubLogMapper; private String fileSaveDir = Global.getProfile() + "\\template\\" ; /** * 查询材料出入库记录 * * @param id 材料出入库记录ID * @return 材料出入库记录 */ @Override public TubLog selectTubLogById(Integer id) { return tubLogMapper.selectTubLogById(id); } /** * 查询材料出入库记录列表 * * @param tubLog 材料出入库记录 * @return 材料出入库记录 */ @Override public List selectTubLogList(TubLog tubLog) { return tubLogMapper.selectTubLogList(tubLog); } /** * 新增材料出入库记录 * * @param tubLog 材料出入库记录 * @return 结果 */ @Override public int insertTubLog(TubLog tubLog) { tubLog.setCreateDate(DateUtils.getNowDate()); return tubLogMapper.insertTubLog(tubLog); } /** * 修改材料出入库记录 * * @param tubLog 材料出入库记录 * @return 结果 */ @Override public int updateTubLog(TubLog tubLog) { return tubLogMapper.updateTubLog(tubLog); } /** * 删除材料出入库记录对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteTubLogByIds(String ids) { return tubLogMapper.deleteTubLogByIds(Convert.toStrArray(ids)); } /** * 删除材料出入库记录信息 * * @param id 材料出入库记录ID * @return 结果 */ @Override public int deleteTubLogById(Integer id) { return tubLogMapper.deleteTubLogById(id); } /** * 查询数据库中id最大值 * @return */ @Override public Integer selectMaxTubLogId(String projectId) { return tubLogMapper.selectMaxTubLogId(projectId); } /** * 统计 */ @Override public AjaxResult countTubLogDate(String projectId) { List list = tubLogMapper.countTubLogDate(projectId); return AjaxResult.success("查询成功!",list); } /** * 导入管材出入库记录 */ @Override public String importTubLog(String projectId, MultipartFile file, boolean updateSupport) { // 关联code Integer number = tubLogMapper.selectMaxTubLogId(projectId); try { String dest = saveExcel(file); List list = readData(dest); for (TubLog item : list) { // 转换项目信息 item.setProjectId(projectId); // 转换number信息 if (ObjectUtils.isEmpty(number)){ number = 1; }else { number++; } String code = "ZTCJ" + String.format("%06d", number); item.setCode(code); item.setCreateDate(DateUtils.getNowDate()); insertTubLog(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("管材名称", "tubName"); reader.addHeaderAlias("入库时间", "inboundDate"); reader.addHeaderAlias("出库时间", "outboundDate"); reader.addHeaderAlias("经办人", "optUser"); reader.addHeaderAlias("负责人", "applyUser"); reader.addHeaderAlias("出入库数量", "number"); reader.addHeaderAlias("数据单位", "unit"); reader.addHeaderAlias("备注", "remark"); List list = reader.readAll(TubLog.class); return list; } }