package com.ruoyi.warehouse.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.poi.ExcelUtil; import com.ruoyi.warehouse.dto.DocumentationBorrowManagementDto; import com.ruoyi.warehouse.dto.ReturnExportDto; import com.ruoyi.warehouse.pojo.Documentation; import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement; import com.ruoyi.warehouse.service.DocumentationBorrowManagementService; import com.ruoyi.warehouse.mapper.DocumentationBorrowManagementMapper; import com.ruoyi.warehouse.service.DocumentationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.time.LocalDateTime; import java.util.List; import java.util.stream.Collectors; /** * @author 86151 * @description 针对表【documentation_borrow_management(文档借阅-归还表)】的数据库操作Service实现 * @createDate 2025-08-14 15:55:45 */ @Service @Transactional(rollbackFor = Exception.class) public class DocumentationBorrowManagementServiceImpl extends ServiceImpl implements DocumentationBorrowManagementService{ @Autowired private DocumentationBorrowManagementMapper documentationBorrowManagementMapper; @Autowired private DocumentationService documentationService; @Override public IPage listPage(Page page, DocumentationBorrowManagement documentationBorrowManagement) { IPage listPage = documentationBorrowManagementMapper.listPage(page, documentationBorrowManagement); return listPage; } @Override public boolean add(DocumentationBorrowManagement documentationBorrowManagement) { documentationBorrowManagementMapper.insert(documentationBorrowManagement); Documentation documentation = documentationService.getById(documentationBorrowManagement.getDocumentationId()); documentation.setDocStatus("借出"); documentationService.updateById(documentation); return true; } @Override public boolean reventdbm(DocumentationBorrowManagement documentationBorrowManagement) { // 更新借阅记录状态为归还 DocumentationBorrowManagement documentationBorrowManagement1 = documentationBorrowManagementMapper.selectById(documentationBorrowManagement.getId()); documentationBorrowManagement1.setReturnerId(documentationBorrowManagement.getReturnerId()); documentationBorrowManagement1.setBorrowStatus("归还"); documentationBorrowManagement1.setReturnDate(LocalDateTime.now()); documentationBorrowManagementMapper.updateById(documentationBorrowManagement1); // 更新文档状态为正常 Documentation documentation = documentationService.getById(documentationBorrowManagement.getDocumentationId()); documentation.setDocStatus("正常"); documentationService.updateById(documentation); return true; } @Override public boolean reventDeleteByIds(List ids) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", ids); queryWrapper.eq("borrow_status", "归还"); List list = documentationBorrowManagementMapper.selectList(queryWrapper); for (DocumentationBorrowManagement documentationBorrowManagement : list) { try { documentationBorrowManagement.setBorrowStatus("借阅"); documentationBorrowManagement.setReturnDate(null); documentationBorrowManagementMapper.updateById(documentationBorrowManagement); Documentation documentation = documentationService.getById(documentationBorrowManagement.getDocumentationId()); if (documentation != null) { documentation.setDocStatus("借出"); documentationService.updateById(documentation); } } catch (Exception e) { throw new RuntimeException("更新借阅记录和文档状态时出错", e); } } return true; } @Override public void export(HttpServletResponse response, DocumentationBorrowManagement documentationBorrowManagement) { List documentationBorrowManagements = documentationBorrowManagementMapper.export(documentationBorrowManagement); ExcelUtil util = new ExcelUtil<>(DocumentationBorrowManagementDto.class); util.exportExcel(response, documentationBorrowManagements, "文档借阅-借阅记录"); } @Override public void exportrevent(HttpServletResponse response, DocumentationBorrowManagement documentationBorrowManagement) { List documentationBorrowManagements = documentationBorrowManagementMapper.exportrevent(documentationBorrowManagement); ExcelUtil util = new ExcelUtil<>(ReturnExportDto.class); util.exportExcel(response, documentationBorrowManagements, "文档借阅-归还记录"); } @Override public boolean deleteByIds(List ids) { List list = documentationBorrowManagementMapper.selectList(new LambdaQueryWrapper().in(DocumentationBorrowManagement::getId, ids)); for (DocumentationBorrowManagement documentationBorrowManagement : list) { Documentation documentation = documentationService.getById(documentationBorrowManagement.getDocumentationId()); documentation.setDocStatus("正常"); boolean b = documentationService.updateById(documentation); if (!b){ throw new RuntimeException("更新文档状态失败"); } } documentationBorrowManagementMapper.deleteBatchIds(ids); return true; } }