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.mapper.DocumentationReturnManagementMapper; import com.ruoyi.warehouse.pojo.Documentation; import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement; import com.ruoyi.warehouse.pojo.DocumentationReturnManagement; 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.LocalDate; 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 DocumentationReturnManagementMapper documentationReturnManagementMapper; @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) { documentationBorrowManagement.setBorrowStatus("借阅"); documentationBorrowManagementMapper.insert(documentationBorrowManagement); Documentation documentation = documentationService.getById(documentationBorrowManagement.getDocumentationId()); documentation.setDocStatus("借出"); documentationService.updateById(documentation); return true; } @Override public boolean reventdbm(DocumentationReturnManagement documentationReturnManagement) { // 更新借阅记录状态为归还 DocumentationBorrowManagement documentationBorrowManagement1 = documentationBorrowManagementMapper.selectById(documentationReturnManagement.getBorrowId()); DocumentationReturnManagement returnManagement = new DocumentationReturnManagement(); returnManagement.setDocumentationId(documentationBorrowManagement1.getDocumentationId()); returnManagement.setBorrower(documentationBorrowManagement1.getBorrower()); returnManagement.setBorrowPurpose(documentationBorrowManagement1.getBorrowPurpose()); returnManagement.setBorrowDate(documentationBorrowManagement1.getBorrowDate()); returnManagement.setDueReturnDate(documentationBorrowManagement1.getDueReturnDate()); returnManagement.setBorrowStatus("归还"); returnManagement.setBorrowId(documentationReturnManagement.getBorrowId()); returnManagement.setReturner(documentationReturnManagement.getReturner()); returnManagement.setReturnDate(LocalDate.now()); returnManagement.setRemark(documentationReturnManagement.getRemark()); documentationReturnManagementMapper.insert(returnManagement); documentationBorrowManagement1.setBorrowStatus("归还"); documentationBorrowManagement1.setReturner(documentationReturnManagement.getReturner()); documentationBorrowManagement1.setReturnDate(LocalDate.now()); documentationBorrowManagementMapper.updateById(documentationBorrowManagement1); // 更新文档状态为正常 Documentation documentation = documentationService.getById(documentationBorrowManagement1.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 = documentationReturnManagementMapper.selectList(queryWrapper); for (DocumentationReturnManagement documentationReturnManagement : list) { try { documentationReturnManagementMapper.deleteById(documentationReturnManagement); DocumentationBorrowManagement documentationBorrowManagement = documentationBorrowManagementMapper.selectById(documentationReturnManagement.getBorrowId()); documentationBorrowManagement.setBorrowStatus("借阅"); documentationBorrowManagement.setReturner(null); documentationBorrowManagement.setReturnDate(null); documentationBorrowManagementMapper.updateById(documentationBorrowManagement); Documentation documentation = documentationService.getById(documentationReturnManagement.getDocumentationId()); documentation.setDocStatus("借出"); documentationService.updateById(documentation); } catch (Exception e) { throw new RuntimeException("删除归还记录和文档状态时出错", e); } } // documentationReturnManagementMapper.deleteBatchIds(ids); 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, DocumentationReturnManagement documentationReturnManagement) { List documentationReturnManagements = documentationReturnManagementMapper.exportrevent(documentationReturnManagement); ExcelUtil util = new ExcelUtil<>(ReturnExportDto.class); util.exportExcel(response, documentationReturnManagements, "文档借阅-归还记录"); } @Override public List listAll() { return documentationBorrowManagementMapper.list(new LambdaQueryWrapper().eq(DocumentationBorrowManagementDto::getBorrowStatus, "借阅")); } @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; } }