yaowanxin
2 天以前 b33e6f53dd537abaebad066de12474580fcc33b2
Merge branch 'pim_ywx'
已修改1个文件
已添加55个文件
3032 ■■■■■ 文件已修改
src/main/java/com/ruoyi/warehouse/controller/DocumentClassificationController.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/controller/WarehouseController.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesController.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesRowcolController.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationDto.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationTreeDto.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/dto/DocumentationBorrowManagementDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/dto/DocumentationDto.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/dto/DocumentationReturnManagementDto.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/dto/WarehouseDto.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesDto.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesRowcolDto.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/dto/WarehouseTreeDto.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/mapper/DocumentClassificationMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/mapper/DocumentationFileMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/mapper/DocumentationMapper.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/mapper/DocumentationReturnManagementMapper.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesRowcolMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/mapper/WarehouseMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/pojo/DocumentClassification.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/pojo/Documentation.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/pojo/DocumentationBorrowManagement.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/pojo/DocumentationReturnManagement.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/pojo/Warehouse.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelves.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelvesRowcol.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/service/DocumentClassificationService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/service/DocumentationFileService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/service/DocumentationService.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesRowcolService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/service/WarehouseService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/service/impl/DocumentClassificationServiceImpl.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/service/impl/DocumentationFileServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesRowcolServiceImpl.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/service/impl/WarehouseServiceImpl.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/warehouse/DocumentClassificationMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/warehouse/DocumentationBorrowManagementMapper.xml 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/warehouse/DocumentationFileMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/warehouse/DocumentationMapper.xml 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/warehouse/DocumentationReturnManagementMapper.xml 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/warehouse/WarehouseGoodsShelvesMapper.xml 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/warehouse/WarehouseGoodsShelvesRowcolMapper.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/warehouse/WarehouseMapper.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mybatis/mybatis-config.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/warehouse/controller/DocumentClassificationController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package com.ruoyi.warehouse.controller;
import com.ruoyi.basic.dto.ProductDto;
import com.ruoyi.basic.dto.ProductTreeDto;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.warehouse.dto.DocumentClassificationDto;
import com.ruoyi.warehouse.dto.DocumentClassificationTreeDto;
import com.ruoyi.warehouse.pojo.DocumentClassification;
import com.ruoyi.warehouse.service.DocumentClassificationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@Api(tags = "文档分类")
@RequestMapping("/warehouse/documentClassification")
public class DocumentClassificationController extends BaseController {
    @Autowired
    private DocumentClassificationService documentClassificationService;
    //树结构
    @GetMapping("/getList")
    public  AjaxResult getList() {
        return AjaxResult.success(documentClassificationService.selectDocumentClassificationList());
    }
    @PostMapping("/add")
    @ApiOperation("文档分类-添加")
    @Log(title = "文档分类-添加", businessType = BusinessType.INSERT)
    public AjaxResult add(@RequestBody DocumentClassification documentClassification) {
        return AjaxResult.success(documentClassificationService.save(documentClassification));
    }
    @PutMapping("/update")
    @ApiOperation("文档分类-更新")
    @Log(title = "文档分类-更新", businessType = BusinessType.UPDATE)
    public AjaxResult update(@RequestBody DocumentClassification documentClassification) {
        return AjaxResult.success(documentClassificationService.updateById(documentClassification));
    }
    @DeleteMapping("/delete")
    @ApiOperation("文档分类删除")
    @Log(title = "文档分类删除", businessType = BusinessType.DELETE)
    public AjaxResult delete(@RequestBody List<Long> ids) {
        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("请传入要删除的ID");
        return AjaxResult.success(documentClassificationService.deleteByIds(ids));
    }
}
src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
package com.ruoyi.warehouse.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.warehouse.mapper.DocumentationBorrowManagementMapper;
import com.ruoyi.warehouse.mapper.DocumentationReturnManagementMapper;
import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement;
import com.ruoyi.warehouse.pojo.DocumentationReturnManagement;
import com.ruoyi.warehouse.pojo.Warehouse;
import com.ruoyi.warehouse.service.DocumentationBorrowManagementService;
import com.ruoyi.warehouse.service.WarehouseService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.util.List;
@RestController
@Api(tags = "文档借阅管理")
@RequestMapping("/documentationBorrowManagement")
public class DocumentationBorrowManagementController extends BaseController {
    @Autowired
    private DocumentationBorrowManagementService documentationBorrowManagementService;
    @Autowired
    private DocumentationBorrowManagementMapper documentationBorrowManagementMapper;
    @Autowired
    private DocumentationReturnManagementMapper documentationReturnManagementMapper;
    @GetMapping("/listPage")
    @ApiOperation("文档借阅管理-借阅分页查询")
    @Log(title = "文档借阅管理-借阅分页查询", businessType = BusinessType.OTHER)
    public AjaxResult listPage(Page page, DocumentationBorrowManagement documentationBorrowManagement) {
        return AjaxResult.success(documentationBorrowManagementService.listPage(page, documentationBorrowManagement));
    }
    @GetMapping("/list")
    @ApiOperation("文档借阅管理-借阅查询")
    @Log(title = "文档借阅管理-借阅查询", businessType = BusinessType.OTHER)
    public AjaxResult list() {
        return AjaxResult.success(documentationBorrowManagementService.listAll());
    }
    @GetMapping("/listPageReturn")
    @ApiOperation("文档借阅管理-归还分页查询")
    @Log(title = "文档借阅管理-归还分页查询", businessType = BusinessType.OTHER)
    public AjaxResult listPageReturn(Page page, DocumentationReturnManagement documentationReturnManagement) {
        return AjaxResult.success(documentationReturnManagementMapper.listPage(page, documentationReturnManagement));
    }
    @PostMapping("/add")
    @ApiOperation("文档借阅管理-借阅")
    @Log(title = "文档借阅管理-借阅", businessType = BusinessType.INSERT)
    public AjaxResult add(@RequestBody DocumentationBorrowManagement documentationBorrowManagement) {
        return AjaxResult.success(documentationBorrowManagementService.add(documentationBorrowManagement));
    }
    @PutMapping("/revent")
    @ApiOperation("文档借阅管理-归还")
    @Log(title = "文档借阅管理-归还", businessType = BusinessType.UPDATE)
    public AjaxResult revent(@RequestBody DocumentationReturnManagement documentationReturnManagement) {
        return AjaxResult.success(documentationBorrowManagementService.reventdbm(documentationReturnManagement));
    }
    @PutMapping("/update")
    @ApiOperation("文档借阅管理-更新")
    @Log(title = "文档借阅管理-更新", businessType = BusinessType.UPDATE)
    public AjaxResult update(@RequestBody DocumentationBorrowManagement documentationBorrowManagement) {
        return AjaxResult.success(documentationBorrowManagementService.updateById(documentationBorrowManagement));
    }
    @PutMapping("/reventUpdate")
    @ApiOperation("文档借阅管理-归还更新")
    @Log(title = "文档借阅管理-归还更新", businessType = BusinessType.UPDATE)
    public AjaxResult reventupdate(@RequestBody DocumentationReturnManagement documentationReturnManagement) {
        return AjaxResult.success(documentationReturnManagementMapper.updateById(documentationReturnManagement));
    }
    @DeleteMapping ("/delete")
    @ApiOperation("文档借阅管理-借阅删除")
    @Log(title = "文档借阅管理-借阅删除", businessType = BusinessType.DELETE)
    public AjaxResult delete(@RequestBody List<Long> ids) {
        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("请传入要删除的ID");
        return AjaxResult.success(documentationBorrowManagementService.deleteByIds(ids));
    }
    @DeleteMapping ("/reventDelete")
    @ApiOperation("文档借阅管理-归还删除")
    @Log(title = "文档借阅管理-归还删除", businessType = BusinessType.DELETE)
    public AjaxResult reventdelete(@RequestBody List<Long> ids) {
        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("请传入要删除的ID");
        return AjaxResult.success(documentationBorrowManagementService.reventDeleteByIds(ids));
    }
    @PostMapping("/export")
    @ApiOperation("文档借阅管理-借阅导出")
    @Log(title = "文档借阅管理-借阅导出", businessType = BusinessType.EXPORT)
    public void export(HttpServletResponse response,DocumentationBorrowManagement documentationBorrowManagement) {
        documentationBorrowManagementService.export(response,documentationBorrowManagement);
    }
    @PostMapping("/exportrevent")
    @ApiOperation("文档借阅管理-归还导出")
    @Log(title = "文档借阅管理-归还导出", businessType = BusinessType.EXPORT)
    public void exportrevent(HttpServletResponse response, DocumentationReturnManagement documentationReturnManagement) {
        documentationBorrowManagementService.exportrevent(response,documentationReturnManagement);
    }
}
src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package com.ruoyi.warehouse.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.warehouse.dto.DocumentationDto;
import com.ruoyi.warehouse.pojo.Documentation;
import com.ruoyi.warehouse.pojo.Warehouse;
import com.ruoyi.warehouse.service.DocumentationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/documentation")
@Api(tags = "文档信息表")
public class DocumentationController extends BaseController {
    @Autowired
    private DocumentationService documentationService;
    @GetMapping("/listPage")
    @ApiOperation("文档信息表-分页查询")
    @Log(title = "文档信息表-分页查询", businessType = BusinessType.OTHER)
    public AjaxResult listPage(Page page, Documentation documentation) {
        IPage<DocumentationDto> list = documentationService.listPage(page, documentation);
        return AjaxResult.success(list);
    }
    @GetMapping("/list")
    @ApiOperation("文档信息表查询")
    @Log(title = "文档信息表查询", businessType = BusinessType.OTHER)
    public AjaxResult list() {
        List<DocumentationDto> list = documentationService.listAll();
        return AjaxResult.success(list);
    }
    @PostMapping("/add")
    @ApiOperation("文档信息表-添加")
    @Log(title = "文档信息表-添加", businessType = BusinessType.INSERT)
    public AjaxResult add(@RequestBody Documentation documentation) {
        return AjaxResult.success(documentationService.save(documentation));
    }
    @PutMapping("/update")
    @ApiOperation("文档信息表-更新")
    @Log(title = "文档信息表-更新", businessType = BusinessType.UPDATE)
    public AjaxResult update(@RequestBody Documentation documentation) {
        return AjaxResult.success(documentationService.updateById(documentation));
    }
    @DeleteMapping("/delete")
    @ApiOperation("文档信息表-删除")
    @Log(title = "文档信息表-删除", businessType = BusinessType.DELETE)
    public AjaxResult delete(@RequestBody List<Long> ids) {
        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("请传入要删除的ID");
        return AjaxResult.success(documentationService.deleteByIds(ids));
    }
    @PostMapping("/export")
    @ApiOperation("文档信息表-导出")
    @Log(title = "文档信息表-导出", businessType = BusinessType.EXPORT)
    public void export(HttpServletResponse response,Documentation documentation ) {
        documentationService.export(response,documentation);
    }
    @ApiOperation("文档信息表-统计")
    @GetMapping("/overview")
    public AjaxResult getOverviewStatistics() {
        Map<String, Object> result = new HashMap<>();
        result.put("totalDocsCount", documentationService.getTotalDocsCount());
        result.put("categoryNumCount", documentationService.getCategoryNumCount());
        result.put("borrowedDocsCount", documentationService.getBorrowedDocsCount());
        result.put("monthlyAddedDocsCount", documentationService.getMonthlyAddedDocsCount());
        return AjaxResult.success(result);
    }
    @ApiOperation("文档信息表-分类统计")
    @GetMapping("/category")
    public AjaxResult getCategoryDistribution() {
        return AjaxResult.success(documentationService.getCategoryDistribution());
    }
    @ApiOperation("文档信息表-状态统计")
    @GetMapping("/status")
    public AjaxResult getStatusDistribution() {
        return AjaxResult.success(documentationService.getStatusDistribution());
    }
}
src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.ruoyi.warehouse.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.account.pojo.AccountFile;
import com.ruoyi.account.service.AccountFileService;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.warehouse.pojo.DocumentationFile;
import com.ruoyi.warehouse.service.DocumentationFileService;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
 * æ–‡æ¡£é™„ä»¶
 */
@RestController
@RequestMapping("/documentation/documentationFile")
public class DocumentationFileController {
    @Resource
    private DocumentationFileService documentationFileService;
    /**
     * æ–°å¢ž
     * @param documentationFile
     * @return
     */
    @PostMapping("/add")
    public AjaxResult add(@RequestBody DocumentationFile documentationFile) {
        return AjaxResult.success(documentationFileService.save(documentationFile));
    }
    /**
     * åˆ é™¤
     * @param ids
     * @return
     */
    @DeleteMapping("/del")
    public AjaxResult delDocumentationFile(@RequestBody List<Long> ids) {
        if(CollectionUtils.isEmpty(ids)){
            return AjaxResult.error("请选择至少一条数据");
        }
        //删除检验附件
        return AjaxResult.success(documentationFileService.removeBatchByIds(ids));
    }
    /**
     *查询
     * @param
     * @param documentationFile
     * @return
     */
    @GetMapping("/listPage")
    public AjaxResult documentationFileListPage(DocumentationFile documentationFile) {
        return AjaxResult.success(documentationFileService.documentationFileListPage( documentationFile));
    }
}
src/main/java/com/ruoyi/warehouse/controller/WarehouseController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.ruoyi.warehouse.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.ruoyi.warehouse.pojo.Warehouse;
import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
import com.ruoyi.warehouse.service.WarehouseGoodsShelvesService;
import com.ruoyi.warehouse.service.WarehouseService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@Api(tags = "仓库")
@RequestMapping("/warehouse")
public class WarehouseController extends BaseController {
    @Autowired
    private WarehouseService warehouseService;
    @GetMapping("/tree")
    @ApiOperation("仓库-查询树")
    @Log(title = "仓库-查询树", businessType = BusinessType.OTHER)
    public AjaxResult listTree() {
        return AjaxResult.success(warehouseService.findListTree());
    }
    @GetMapping("/list")
    @ApiOperation("仓库-查询")
    @Log(title = "仓库-查询", businessType = BusinessType.OTHER)
    public AjaxResult list(Warehouse warehouse) {
        return AjaxResult.success(warehouseService.findList(warehouse));
    }
    @PostMapping("/add")
    @ApiOperation("仓库-添加")
    @Log(title = "仓库-添加", businessType = BusinessType.INSERT)
    public AjaxResult add(@RequestBody Warehouse warehouse) {
        return AjaxResult.success(warehouseService.save(warehouse));
    }
    @PutMapping("/update")
    @ApiOperation("仓库-更新")
    @Log(title = "仓库-更新", businessType = BusinessType.UPDATE)
    public AjaxResult update(@RequestBody Warehouse warehouse) {
        return AjaxResult.success(warehouseService.updateById(warehouse));
    }
    @DeleteMapping("/delete")
    @ApiOperation("仓库-删除")
    @Log(title = "仓库-删除", businessType = BusinessType.DELETE)
    public AjaxResult delete(@RequestBody List<Long> ids) {
        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("请传入要删除的ID");
        return AjaxResult.success(warehouseService.deleteByIds(ids));
    }
}
src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.ruoyi.warehouse.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto;
import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
import com.ruoyi.warehouse.service.WarehouseGoodsShelvesService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@Api(tags = "商品货架")
@RequestMapping("/warehouse/goodsShelves")
public class WarehouseGoodsShelvesController extends BaseController {
    @Autowired
    private WarehouseGoodsShelvesService warehouseGoodsShelvesService;
    @GetMapping("/listById")
    @ApiOperation("商品货架-查询")
    @Log(title = "商品货架-查询", businessType = BusinessType.OTHER)
    public AjaxResult listById(WarehouseGoodsShelves warehouseGoodsShelves) {
        List<WarehouseGoodsShelvesDto> list = warehouseGoodsShelvesService.findList(warehouseGoodsShelves);
        return AjaxResult.success(list);
    }
    @PostMapping("/add")
    @ApiOperation("商品货架-添加")
    @Log(title = "商品货架-添加", businessType = BusinessType.INSERT)
    public AjaxResult add(@RequestBody WarehouseGoodsShelves warehouseGoodsShelves) {
        return AjaxResult.success(warehouseGoodsShelvesService.add(warehouseGoodsShelves));
    }
    @PutMapping("/update")
    @ApiOperation("商品货架-更新")
    @Log(title = "商品货架-更新", businessType = BusinessType.UPDATE)
    public AjaxResult update(@RequestBody WarehouseGoodsShelves warehouseGoodsShelves) {
        return AjaxResult.success(warehouseGoodsShelvesService.updateRowcolById(warehouseGoodsShelves));
    }
    @DeleteMapping("/delete")
    @ApiOperation("商品货架-删除")
    @Log(title = "商品货架-删除", businessType = BusinessType.DELETE)
    public AjaxResult delete(@RequestBody List<Long> ids) {
        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("请传入要删除的ID");
        return  AjaxResult.success(warehouseGoodsShelvesService.deleteByIds(ids));
    }
}
src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesRowcolController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.ruoyi.warehouse.controller;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesRowcolDto;
import com.ruoyi.warehouse.service.WarehouseGoodsShelvesRowcolService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@Api(tags = "商品货架行列")
@RequestMapping("/warehouse/goodsShelvesRowcol")
public class WarehouseGoodsShelvesRowcolController extends BaseController {
    @Autowired
    private WarehouseGoodsShelvesRowcolService warehouseGoodsShelvesRowcolService;
    @GetMapping("/list")
    @ApiOperation("商品货架行列-查询")
    @Log(title = "商品货架行列-查询", businessType = BusinessType.OTHER)
    public AjaxResult list(WarehouseGoodsShelvesRowcol warehouseGoodsShelvesRowcol) {
        List<WarehouseGoodsShelvesRowcolDto> list = warehouseGoodsShelvesRowcolService.getList(warehouseGoodsShelvesRowcol);
        return AjaxResult.success(list);
    }
}
src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.warehouse.dto;
import com.ruoyi.warehouse.pojo.DocumentClassification;
import lombok.Data;
import java.util.List;
@Data
public class DocumentClassificationDto extends DocumentClassification {
    private List<DocumentClassification> documentClassificationList;
}
src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationTreeDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.ruoyi.warehouse.dto;
import lombok.Data;
import java.util.List;
@Data
public class DocumentClassificationTreeDto {
    private Long id;
    private Long parentId;
    private String category;
    private List<DocumentClassificationTreeDto> children;
}
src/main/java/com/ruoyi/warehouse/dto/DocumentationBorrowManagementDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.warehouse.dto;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class DocumentationBorrowManagementDto extends DocumentationBorrowManagement {
    /**
     * æ–‡æ¡£åç§°
     */
    @Excel(name = "文档名称")
    private String docName;
}
src/main/java/com/ruoyi/warehouse/dto/DocumentationDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.warehouse.dto;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.warehouse.pojo.Documentation;
import lombok.Data;
@Data
public class DocumentationDto extends Documentation {
    /**
     * ç±»åˆ«åç§°
     */
    @Excel(name = "类别名称")
    private String category;
    /**
     * ä½ç½®ä¿¡æ¯
     */
    @Excel(name = "位置信息")
    private String locationInfo;
}
src/main/java/com/ruoyi/warehouse/dto/DocumentationReturnManagementDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.warehouse.dto;
import com.ruoyi.warehouse.pojo.DocumentationReturnManagement;
import lombok.Data;
@Data
public class DocumentationReturnManagementDto extends DocumentationReturnManagement {
    /**
     * æ–‡æ¡£åç§°
     */
    private String docName;
}
src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.ruoyi.warehouse.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
public class ReturnExportDto {
    private String id; // è®°å½•编号
    @Excel(name = "文档名称")
    private String docName; // æ–‡æ¡£åç§°
    @Excel(name = "原借阅人")
    private String borrower; // å€Ÿé˜…人
    @Excel(name = "借阅时间", dateFormat = "yyyy-MM-dd", width = 30)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime borrowDate; // å€Ÿé˜…æ—¶é—´
    @Excel(name = "归还人")
    @NotBlank(message = "归还人不能为空!!")
    private String returner; // å½’还人
    @Excel(name = "归还时间", dateFormat = "yyyy-MM-dd", width = 30)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime returnDate; // å½’还时间
}
src/main/java/com/ruoyi/warehouse/dto/WarehouseDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.ruoyi.warehouse.dto;
import com.ruoyi.warehouse.pojo.*;
import lombok.Data;
import java.util.List;
@Data
public class WarehouseDto extends Warehouse {
    private String goodsShelvesName;
    private String category;
}
src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.warehouse.dto;
import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
import java.util.List;
public class WarehouseGoodsShelvesDto extends WarehouseGoodsShelves {
    private String warehouseName;
    private String docName;
    private String docNumber;
    private String category;
}
src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesRowcolDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.ruoyi.warehouse.dto;
import com.ruoyi.warehouse.dto.DocumentationDto;
import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
import lombok.Data;
import java.util.List;
@Data
public class WarehouseGoodsShelvesRowcolDto extends WarehouseGoodsShelvesRowcol {
    private String warehouseName;
    private String name;
    private List<DocumentationDto> documentationDtoList;
    private String category;
}
src/main/java/com/ruoyi/warehouse/dto/WarehouseTreeDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.warehouse.dto;
import lombok.Data;
import java.util.List;
@Data
public class WarehouseTreeDto {
    private Long id;
    private String label;
    private List<WarehouseTreeDto> children;
}
src/main/java/com/ruoyi/warehouse/mapper/DocumentClassificationMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.warehouse.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.warehouse.pojo.DocumentClassification;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€document_classification(文档分类表)】的数据库操作Mapper
* @createDate 2025-08-15 10:44:23
* @Entity com.ruoyi.warehouse.pojo.DocumentClassification
*/
@Mapper
public interface DocumentClassificationMapper extends BaseMapper<DocumentClassification> {
}
src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.ruoyi.warehouse.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.warehouse.dto.DocumentationBorrowManagementDto;
import com.ruoyi.warehouse.dto.ReturnExportDto;
import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€documentation_borrow_management(文档借阅-归还表)】的数据库操作Mapper
* @createDate 2025-08-14 15:55:45
* @Entity com.ruoyi.warehouse.pojo.DocumentationBorrowManagement
*/
@Mapper
public interface DocumentationBorrowManagementMapper extends BaseMapper<DocumentationBorrowManagement> {
    IPage<DocumentationBorrowManagement> listPage(Page page, @Param("documentationBorrowManagement") DocumentationBorrowManagement documentationBorrowManagement);
    List<DocumentationBorrowManagementDto> export(@Param("documentationBorrowManagement") DocumentationBorrowManagement documentationBorrowManagement);
    List<DocumentationBorrowManagementDto> list(@Param("ew") Wrapper<DocumentationBorrowManagementDto> queryWrapper);
}
src/main/java/com/ruoyi/warehouse/mapper/DocumentationFileMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.ruoyi.warehouse.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.account.pojo.AccountFile;
import com.ruoyi.warehouse.pojo.DocumentationFile;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface DocumentationFileMapper extends BaseMapper<DocumentationFile> {
    List<DocumentationFile> documentationFileListPage(@Param("documentationFile") DocumentationFile documentationFile);
}
src/main/java/com/ruoyi/warehouse/mapper/DocumentationMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package com.ruoyi.warehouse.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
import com.ruoyi.warehouse.dto.DocumentationDto;
import com.ruoyi.warehouse.pojo.Documentation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€documentation(文档信息表)】的数据库操作Mapper
* @createDate 2025-08-14 14:05:49
* @Entity com.ruoyi.warehouse.pojo.Documentation
*/
@Mapper
public interface DocumentationMapper extends BaseMapper<Documentation> {
    IPage<DocumentationDto> listPage(Page page, @Param("documentation") Documentation documentation);
    List<DocumentationDto> list();
    List<DocumentationDto> listByDocumentClassificationId(@Param("documentClassificationId") Long documentClassificationId);
    List<DocumentationDto> listBywarehouseGoodsShelvesRowcolId(@Param("warehouseGoodsShelvesRowcolId") Long warehouseGoodsShelvesRowcolId);
    @Select("select count(*) from documentation")
    Integer countTotalDocs();
    @Select("select count(distinct document_classification_id) from documentation")
    Integer countCategoryNum();
    @Select("select count(*) from documentation where doc_status = '借出'")
    Integer countBorrowedDocs();
    @Select("select count(*) from documentation where create_time >= date_format(now(), '%Y-%m-01') and create_time < date_format(now(), '%Y-%m-%d')")
    Integer countMonthlyAddedDocs();
    @Select("select dc.category, count(*) as count from documentation doc left join document_classification dc on doc.document_classification_id = dc.id group by dc.category")
    List<Map<String, Object>> countCategoryDistribution();
    @Select("select doc_status as docStatus, count(*) as count from documentation group by doc_status")
    List<Map<String, Object>> countStatusDistribution();
}
src/main/java/com/ruoyi/warehouse/mapper/DocumentationReturnManagementMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package com.ruoyi.warehouse.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.warehouse.dto.DocumentationBorrowManagementDto;
import com.ruoyi.warehouse.dto.ReturnExportDto;
import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement;
import com.ruoyi.warehouse.pojo.DocumentationReturnManagement;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€documentation_borrow_management(文档借阅-归还表)】的数据库操作Mapper
* @createDate 2025-08-14 15:55:45
* @Entity com.ruoyi.warehouse.pojo.DocumentationBorrowManagement
*/
@Mapper
public interface DocumentationReturnManagementMapper extends BaseMapper<DocumentationReturnManagement> {
    IPage<DocumentationReturnManagement> listPage(Page page, @Param("documentationReturnManagement") DocumentationReturnManagement documentationReturnManagement);
//
//    List<DocumentationReturnManagementDto> export(@Param("documentationReturnManagement") DocumentationReturnManagement documentationReturnManagement);
//
    List<ReturnExportDto> exportrevent(@Param("documentationReturnManagement") DocumentationReturnManagement documentationReturnManagement);
}
src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.warehouse.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto;
import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
* @description é’ˆå¯¹è¡¨ã€warehouse_goods_shelves(仓库货架表)】的数据库操作Mapper
* @createDate 2025-08-13 11:49:02
* @Entity warehouse.pojo.WarehouseGoodsShelves
*/
@Mapper
public interface WarehouseGoodsShelvesMapper extends BaseMapper<WarehouseGoodsShelves> {
    List<WarehouseGoodsShelvesDto> findList(@Param("warehouseGoodsShelves") WarehouseGoodsShelves warehouseGoodsShelves);
    List<WarehouseGoodsShelvesDto> listAll(@Param("warehouseGoodsShelves") WarehouseGoodsShelves warehouseGoodsShelves);
}
src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesRowcolMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.warehouse.mapper;
import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesRowcolDto;
import org.apache.ibatis.annotations.Mapper;
import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€warehouse_goods_shelves_rowcol(仓库货架层,列表)】的数据库操作Mapper
* @createDate 2025-08-13 11:49:02
* @Entity warehouse.pojo.WarehouseGoodsShelvesRowcol
*/
@Mapper
public interface WarehouseGoodsShelvesRowcolMapper extends BaseMapper<WarehouseGoodsShelvesRowcol> {
    List<WarehouseGoodsShelvesRowcolDto> findList(@Param("warehouseGoodsShelvesRowcol") WarehouseGoodsShelvesRowcol warehouseGoodsShelvesRowcol);
}
src/main/java/com/ruoyi/warehouse/mapper/WarehouseMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.ruoyi.warehouse.mapper;
import com.ruoyi.warehouse.dto.WarehouseDto;
import com.ruoyi.warehouse.pojo.Warehouse;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€warehouse(仓库表)】的数据库操作Mapper
* @createDate 2025-08-13 11:49:02
* @Entity warehouse.pojo.Warehouse
*/
@Mapper
public interface WarehouseMapper extends BaseMapper<Warehouse> {
    List<WarehouseDto> findList(@Param("warehouse") Warehouse warehouse);
    List<Warehouse> listAll(@Param("warehouse") Warehouse warehouse);
}
src/main/java/com/ruoyi/warehouse/pojo/DocumentClassification.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.ruoyi.warehouse.pojo;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
 * æ–‡æ¡£åˆ†ç±»è¡¨
 * @TableName document_classification
 */
@TableName(value ="document_classification")
@Data
@ApiModel(value = "文档分类表")
public class DocumentClassification implements Serializable {
    /**
     *
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * ç±»åˆ«åç§°
     */
    private String category;
    /**
     * çˆ¶ç±»id
     */
    private Long parentId;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    /**
     * åˆ›å»ºç”¨æˆ·
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    /**
     * ä¿®æ”¹æ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    /**
     * ä¿®æ”¹ç”¨æˆ·
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    /**
     * ç§Ÿæˆ·id
     */
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    private static final long serialVersionUID = 1L;
}
src/main/java/com/ruoyi/warehouse/pojo/Documentation.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,175 @@
package com.ruoyi.warehouse.pojo;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * æ–‡æ¡£ä¿¡æ¯è¡¨
 * @TableName documentation
 */
@TableName(value ="documentation")
@Data
@ApiModel(value = "文档信息表")
public class Documentation implements Serializable {
    /**
     *
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "文档ID")
    private Long id;
    /**
     * ç±»åˆ«åç§°id
     */
    @Excel(name = "类别名称id")
    @ApiModelProperty(value = "类别名称id")
    private Long documentClassificationId;
    /**
     * æ–‡æ¡£åç§°
     */
    @Excel(name = "文档名称")
    @ApiModelProperty(value = "文档名称")
    private String docName;
    /**
     * æ–‡æ¡£ç¼–号
     */
    @Excel(name = "文档编号")
    @ApiModelProperty(value = "文档编号")
    private String docNumber;
    /**
     * å¹´ä»½
     */
    @Excel(name = "年份")
    @ApiModelProperty(value = "年份")
    private Long year;
    /**
     * è´£ä»»äºº
     */
    @Excel(name = "责任人")
    @ApiModelProperty(value = "责任人")
    private String responsiblePerson;
    /**
     * æ–‡æ¡£æ”¾ç½®ä½ç½®
     */
    @Excel(name = "文档放置位置")
    @ApiModelProperty(value = "文档放置位置")
    private Long warehouseGoodsShelvesRowcolId;
    /**
     * æ–‡æ¡£æ—¥æœŸ
     */
    @Excel(name = "文档日期", dateFormat = "yyyy-MM-dd", width = 30)
    @ApiModelProperty(value = "文档日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime docDate;
    /**
     * ä¿ç®¡æœŸé™
     */
    @Excel(name = "保管期限")
    @ApiModelProperty(value = "保管期限")
    private Long retentionPeriod;
    /**
     * ä¿å¯†çº§åˆ«
     */
    @Excel(name = "保密级别")
    @ApiModelProperty(value = "保密级别")
    private String securityLevel;
    /**
     * ä»½æ•°
     */
    @Excel(name = "份数")
    @ApiModelProperty(value = "份数")
    private Long copyCount;
    /**
     * é¡µæ•°
     */
    @Excel(name = "页数")
    @ApiModelProperty(value = "页数")
    private Long pageCount;
    /**
     * æ–‡æ¡£ç±»åˆ«
     */
    @Excel(name = "文档类别")
    @ApiModelProperty(value = "文档类别")
    private String docCategory;
    /**
     * æ–‡æ¡£ç§ç±»
     */
    @Excel(name = "文档种类")
    @ApiModelProperty(value = "文档种类")
    private String docType;
    /**
     * ç´§æ€¥ç¨‹åº¦
     */
    @Excel(name = "紧急程度")
    @ApiModelProperty(value = "紧急程度")
    private String urgencyLevel;
    /**
     * æ–‡æ¡£çŠ¶æ€
     */
    @Excel(name = "文档状态")
    @ApiModelProperty(value = "文档状态")
    private String docStatus;
    /**
     * å¤‡æ³¨
     */
    @Excel(name = "备注")
    @ApiModelProperty(value = "备注")
    private String remark;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    /**
     * åˆ›å»ºç”¨æˆ·
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    /**
     * ä¿®æ”¹æ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    /**
     * ä¿®æ”¹ç”¨æˆ·
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    /**
     * ç§Ÿæˆ·ID
     */
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    private static final long serialVersionUID = 1L;
}
src/main/java/com/ruoyi/warehouse/pojo/DocumentationBorrowManagement.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
package com.ruoyi.warehouse.pojo;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.dto.DateQueryDto;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * æ–‡æ¡£å€Ÿé˜…-归还表
 * @TableName documentation_borrow_management
 */
@TableName(value ="documentation_borrow_management")
@Data
@ApiModel(value = "文档借阅表")
public class DocumentationBorrowManagement extends DateQueryDto implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * æ–‡æ¡£id
     */
    @ApiModelProperty(value = "文档id")
    private Long documentationId;
    /**
     * å€Ÿé˜…人
     */
    @ApiModelProperty(value = "借阅人")
    @Excel(name = "借阅人")
    private String borrower;
    /**
     * å½’还人
     */
    @ApiModelProperty(value = "归还人")
    @Excel(name = "归还人")
    private String returner;
    /**
     * å€Ÿé˜…目的
     */
    @Excel(name = "借阅目的")
    @ApiModelProperty(value = "借阅目的")
    private String borrowPurpose;
    /**
     * å€Ÿé˜…日期
     */
    @ApiModelProperty(value = "借阅日期")
    @Excel(name = "借阅日期", dateFormat = "yyyy-MM-dd", width = 30)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate borrowDate;
    /**
     * åº”归还日期
     */
    @ApiModelProperty(value = "应归还日期")
    @Excel(name = "应归还日期", dateFormat = "yyyy-MM-dd", width = 30)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate dueReturnDate;
    /**
     * å®žé™…归还日期
     */
    @ApiModelProperty(value = "实际归还日期")
    @Excel(name = "实际归还日期", dateFormat = "yyyy-MM-dd", width = 30)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate returnDate;
    /**
     * å€Ÿé˜…状态
     */
    @ApiModelProperty(value = "借阅状态")
    @Excel(name = "借阅状态")
    private String borrowStatus;
    /**
     * å¤‡æ³¨
     */
    @ApiModelProperty(value = "备注")
    @Excel(name = "备注")
    private String remark;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    /**
     * åˆ›å»ºç”¨æˆ·
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    /**
     * ä¿®æ”¹æ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    /**
     * ä¿®æ”¹ç”¨æˆ·
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    /**
     * ç§Ÿæˆ·id
     */
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
}
src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.ruoyi.warehouse.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * æ–‡æ¡£ä¿¡æ¯è¡¨--附件
 * documentation_file
 */
@TableName(value = "documentation_file")
@Data
public class DocumentationFile implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * åºå·
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    @ApiModelProperty(value = "文件名称")
    private String name;
    @ApiModelProperty(value = "文件路径")
    private String url;
    @ApiModelProperty(value = "文件大小")
    private Long fileSize;
    @ApiModelProperty(value = "文档ID")
    @NotBlank(message = "文档id不能为空!")
    private Long documentationId;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty(value = "修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "创建用户")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改用户")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
}
src/main/java/com/ruoyi/warehouse/pojo/DocumentationReturnManagement.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,130 @@
package com.ruoyi.warehouse.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.dto.DateQueryDto;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * æ–‡æ¡£å€Ÿé˜…-归还表
 * @TableName documentation_return_management
 */
@TableName(value ="documentation_return_management")
@Data
@ApiModel(value = "文档归还表")
public class DocumentationReturnManagement extends DateQueryDto implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * æ–‡æ¡£id
     */
    @ApiModelProperty(value = "文档id")
    private Long documentationId;
    /**
     * å€Ÿé˜…id
     */
    private Long borrowId;
    /**
     * å€Ÿé˜…人
     */
    @ApiModelProperty(value = "借阅人")
    @Excel(name = "借阅人")
    private String borrower;
    /**
     * å½’还人
     */
    @ApiModelProperty(value = "归还人")
    @Excel(name = "归还人")
    private String returner;
    /**
     * å€Ÿé˜…目的
     */
    @Excel(name = "借阅目的")
    @ApiModelProperty(value = "借阅目的")
    private String borrowPurpose;
    /**
     * å€Ÿé˜…日期
     */
    @ApiModelProperty(value = "借阅日期")
    @Excel(name = "借阅日期", dateFormat = "yyyy-MM-dd", width = 30)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate borrowDate;
    /**
     * åº”归还日期
     */
    @ApiModelProperty(value = "应归还日期")
    @Excel(name = "应归还日期", dateFormat = "yyyy-MM-dd", width = 30)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate dueReturnDate;
    /**
     * å®žé™…归还日期
     */
    @ApiModelProperty(value = "实际归还日期")
    @Excel(name = "实际归还日期", dateFormat = "yyyy-MM-dd", width = 30)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate returnDate;
    /**
     * å€Ÿé˜…状态
     */
    @ApiModelProperty(value = "借阅状态")
    @Excel(name = "借阅状态")
    private String borrowStatus;
    /**
     * å¤‡æ³¨
     */
    @ApiModelProperty(value = "备注")
    @Excel(name = "备注")
    private String remark;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    /**
     * åˆ›å»ºç”¨æˆ·
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    /**
     * ä¿®æ”¹æ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    /**
     * ä¿®æ”¹ç”¨æˆ·
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    /**
     * ç§Ÿæˆ·id
     */
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
}
src/main/java/com/ruoyi/warehouse/pojo/Warehouse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.ruoyi.warehouse.pojo;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
 * ä»“库表
 * @TableName warehouse
 */
@TableName(value ="warehouse")
@Data
@ApiModel
public class Warehouse implements Serializable {
    /**
     *
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * ä»“库名称
     */
    private String warehouseName;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    /**
     * åˆ›å»ºç”¨æˆ·
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    /**
     * ä¿®æ”¹æ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    /**
     * ä¿®æ”¹ç”¨æˆ·
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    /**
     * ç§Ÿæˆ·ID
     */
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    private static final long serialVersionUID = 1L;
}
src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelves.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
package com.ruoyi.warehouse.pojo;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
 * ä»“库货架表
 * @TableName warehouse_goods_shelves
 */
@TableName(value ="warehouse_goods_shelves")
@Data
@ApiModel
public class WarehouseGoodsShelves implements Serializable {
    /**
     *
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * è´§æž¶åç§°
     */
    private String name;
    /**
     * å±‚æ•°
     */
    @TableField("`row`")
    private Long row;
    /**
     * åˆ—æ•°
     */
    @TableField("`col`")
    private Long col;
    /**
     * ä»“库id
     */
    private Long warehouseId;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    /**
     * åˆ›å»ºç”¨æˆ·
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    /**
     * ä¿®æ”¹æ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    /**
     * ä¿®æ”¹ç”¨æˆ·
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    /**
     * ç§Ÿæˆ·ID
     */
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    private static final long serialVersionUID = 1L;
}
src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelvesRowcol.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
package com.ruoyi.warehouse.pojo;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
 * ä»“库货架层,列表
 * @TableName warehouse_goods_shelves_rowcol
 */
@TableName(value ="warehouse_goods_shelves_rowcol")
@Data
@ApiModel(value = "仓库货架层,列表")
public class WarehouseGoodsShelvesRowcol implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * å±‚æ•°
     */
    @TableField("`row`")
    private Long row;
    /**
     * åˆ—æ•°
     */
    @TableField("`col`")
    private Long col;
    /**
     * è´§æž¶id
     */
    private Long warehouseGoodsShelvesId;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    /**
     * åˆ›å»ºç”¨æˆ·
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    /**
     * ä¿®æ”¹æ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    /**
     * ä¿®æ”¹ç”¨æˆ·
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer updateUser;
    /**
     * ç§Ÿæˆ·ID
     */
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    /**
     * å¤‡æ³¨
     */
    private String remark;
}
src/main/java/com/ruoyi/warehouse/service/DocumentClassificationService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.warehouse.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.warehouse.dto.DocumentClassificationDto;
import com.ruoyi.warehouse.dto.DocumentClassificationTreeDto;
import com.ruoyi.warehouse.pojo.DocumentClassification;
import java.util.List;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€document_classification(文档分类表)】的数据库操作Service
* @createDate 2025-08-15 10:44:23
*/
public interface DocumentClassificationService extends IService<DocumentClassification> {
    boolean deleteByIds(List<Long> ids);
    List<DocumentClassificationTreeDto> selectDocumentClassificationList();
}
src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.ruoyi.warehouse.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.warehouse.dto.DocumentationBorrowManagementDto;
import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.warehouse.pojo.DocumentationReturnManagement;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€documentation_borrow_management(文档借阅-归还表)】的数据库操作Service
* @createDate 2025-08-14 15:55:45
*/
public interface DocumentationBorrowManagementService extends IService<DocumentationBorrowManagement> {
    IPage<DocumentationBorrowManagement> listPage(Page page, DocumentationBorrowManagement documentationBorrowManagement);
    boolean add(DocumentationBorrowManagement documentationBorrowManagement);
    boolean deleteByIds(List<Long> ids);
    boolean reventdbm(DocumentationReturnManagement documentationReturnManagement);
    boolean reventDeleteByIds(List<Long> ids);
    void export(HttpServletResponse response, DocumentationBorrowManagement documentationBorrowManagement);
    void exportrevent(HttpServletResponse response, DocumentationReturnManagement documentationReturnManagement);
    List<DocumentationBorrowManagementDto> listAll();
}
src/main/java/com/ruoyi/warehouse/service/DocumentationFileService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.ruoyi.warehouse.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.account.pojo.AccountFile;
import com.ruoyi.warehouse.pojo.DocumentationFile;
import java.util.List;
public interface DocumentationFileService extends IService<DocumentationFile> {
    List<DocumentationFile> documentationFileListPage(DocumentationFile documentationFile);
}
src/main/java/com/ruoyi/warehouse/service/DocumentationService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.ruoyi.warehouse.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.warehouse.dto.DocumentationDto;
import com.ruoyi.warehouse.pojo.Documentation;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€documentation(文档信息表)】的数据库操作Service
* @createDate 2025-08-14 14:05:49
*/
public interface DocumentationService extends IService<Documentation> {
    IPage<DocumentationDto> listPage(Page page, Documentation documentation);
    void export(HttpServletResponse response,Documentation documentation);
    boolean deleteByIds(List<Long> ids);
    List<DocumentationDto> listAll();
    Integer getTotalDocsCount();
    Integer getCategoryNumCount();
    Integer getBorrowedDocsCount();
    Integer getMonthlyAddedDocsCount();
    List<Map<String, Object>> getCategoryDistribution();
    List<Map<String, Object>> getStatusDistribution();
}
src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesRowcolService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.warehouse.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesRowcolDto;
import java.util.List;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€warehouse_goods_shelves_rowcol(仓库货架层,列表)】的数据库操作Service
* @createDate 2025-08-13 11:49:02
*/
public interface WarehouseGoodsShelvesRowcolService extends IService<WarehouseGoodsShelvesRowcol> {
    boolean deleteByIds(List<Long> ids);
    List<WarehouseGoodsShelvesRowcolDto> getList(WarehouseGoodsShelvesRowcol warehouseGoodsShelvesRowcol);
}
src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.ruoyi.warehouse.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto;
import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€warehouse_goods_shelves(仓库货架表)】的数据库操作Service
* @createDate 2025-08-13 11:49:02
*/
public interface WarehouseGoodsShelvesService extends IService<WarehouseGoodsShelves> {
    boolean add(WarehouseGoodsShelves warehouseGoodsShelves);
    boolean updateRowcolById(WarehouseGoodsShelves warehouseGoodsShelves);
    boolean deleteByIds(List<Long> ids);
    List<WarehouseGoodsShelvesDto> findList(WarehouseGoodsShelves warehouseGoodsShelves);
}
src/main/java/com/ruoyi/warehouse/service/WarehouseService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.warehouse.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.warehouse.dto.WarehouseDto;
import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto;
import com.ruoyi.warehouse.dto.WarehouseTreeDto;
import com.ruoyi.warehouse.pojo.Warehouse;
import java.util.List;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€warehouse(仓库表)】的数据库操作Service
* @createDate 2025-08-13 11:49:02
*/
public interface WarehouseService extends IService<Warehouse> {
    boolean deleteByIds(List<Long> ids);
    List<Warehouse> findList(Warehouse warehouse);
    List<WarehouseTreeDto> findListTree();
}
src/main/java/com/ruoyi/warehouse/service/impl/DocumentClassificationServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.ruoyi.warehouse.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.dto.ProductTreeDto;
import com.ruoyi.basic.pojo.Product;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.warehouse.dto.DocumentClassificationDto;
import com.ruoyi.warehouse.dto.DocumentClassificationTreeDto;
import com.ruoyi.warehouse.dto.DocumentationDto;
import com.ruoyi.warehouse.mapper.DocumentationMapper;
import com.ruoyi.warehouse.pojo.DocumentClassification;
import com.ruoyi.warehouse.pojo.Documentation;
import com.ruoyi.warehouse.service.DocumentClassificationService;
import com.ruoyi.warehouse.mapper.DocumentClassificationMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€document_classification(文档分类表)】的数据库操作Service实现
* @createDate 2025-08-15 10:44:23
*/
@Service
public class DocumentClassificationServiceImpl extends ServiceImpl<DocumentClassificationMapper, DocumentClassification>
    implements DocumentClassificationService{
    @Autowired
    private DocumentationMapper documentationMapper;
    @Autowired
    private DocumentClassificationMapper documentClassificationMapper;
    @Override
    public boolean deleteByIds(List<Long> ids) {
        List<DocumentClassification> list = documentClassificationMapper.selectList(new LambdaQueryWrapper<DocumentClassification>().in(DocumentClassification::getId, ids));
        for (DocumentClassification documentClassification : list) {
          //如果每项的父id为空,说明是根节点,需要删除文档信息表中的数据
            List<DocumentationDto> documentationDtos = documentationMapper.listByDocumentClassificationId(documentClassification.getId());
            if (CollectionUtils.isNotEmpty(documentationDtos)){
                throw new RuntimeException("存在文档信息,不能删除");
            }
            documentClassificationMapper.deleteById(documentClassification.getId());
        }
        return true;
    }
    @Override
    public List<DocumentClassificationTreeDto> selectDocumentClassificationList() {
        // æŸ¥è¯¢æ ¹èŠ‚ç‚¹ï¼ˆparentId ä¸º null)
        LambdaQueryWrapper<DocumentClassification> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.isNull(DocumentClassification::getParentId);
        // æŸ¥è¯¢æ ¹èŠ‚ç‚¹åˆ—è¡¨
        List<DocumentClassification> rootList = baseMapper.selectList(queryWrapper);
        // è½¬æ¢ä¸ºæ ‘节点并递归构建子树
        List<DocumentClassificationTreeDto> tree = new ArrayList<>();
        for (DocumentClassification documentClassification : rootList) {
            DocumentClassificationTreeDto node = convertToTreeDto(documentClassification);
            node.setChildren(buildDocumentChildrenNodes(documentClassification.getId()));
            tree.add(node);
        }
        return tree;
    }
    // é€’归构建子节点
    private List<DocumentClassificationTreeDto> buildDocumentChildrenNodes(Long parentId) {
        // æŸ¥è¯¢å½“前父节点的子节点
        LambdaQueryWrapper<DocumentClassification> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(DocumentClassification::getParentId, parentId);
        List<DocumentClassification> childList = baseMapper.selectList(queryWrapper);
        // è½¬æ¢å­èŠ‚ç‚¹å¹¶é€’å½’æž„å»ºå®ƒä»¬çš„å­æ ‘
        List<DocumentClassificationTreeDto> children = new ArrayList<>();
        for (DocumentClassification child : childList) {
            DocumentClassificationTreeDto childNode = convertToTreeDto(child);
            childNode.setChildren(buildDocumentChildrenNodes(child.getId()));
            children.add(childNode);
        }
        return children;
    }
    // å°† DocumentClassification è½¬æ¢ä¸º DocumentClassificationTreeDto
    private DocumentClassificationTreeDto convertToTreeDto(DocumentClassification documentClassification) {
        DocumentClassificationTreeDto dto = new DocumentClassificationTreeDto();
        BeanUtils.copyProperties(documentClassification, dto);
        dto.setCategory(documentClassification.getCategory()); // è®¾ç½® label ä¸ºäº§å“åç§°
        dto.setChildren(new ArrayList<>());
        return dto;
    }
}
src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,157 @@
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<DocumentationBorrowManagementMapper, DocumentationBorrowManagement>
    implements DocumentationBorrowManagementService{
    @Autowired
    private DocumentationBorrowManagementMapper documentationBorrowManagementMapper;
    @Autowired
    private DocumentationReturnManagementMapper documentationReturnManagementMapper;
    @Autowired
    private DocumentationService documentationService;
    @Override
    public IPage<DocumentationBorrowManagement> listPage(Page page, DocumentationBorrowManagement documentationBorrowManagement) {
        IPage<DocumentationBorrowManagement> 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<Long> ids) {
        QueryWrapper<DocumentationReturnManagement> queryWrapper = new QueryWrapper<>();
        queryWrapper.in("id", ids);
//        queryWrapper.eq("borrow_status", "归还");
        List<DocumentationReturnManagement> 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<DocumentationBorrowManagementDto> documentationBorrowManagements = documentationBorrowManagementMapper.export(documentationBorrowManagement);
        ExcelUtil<DocumentationBorrowManagementDto> util = new ExcelUtil<>(DocumentationBorrowManagementDto.class);
        util.exportExcel(response, documentationBorrowManagements, "文档借阅-借阅记录");
    }
    @Override
    public void exportrevent(HttpServletResponse response, DocumentationReturnManagement documentationReturnManagement) {
        List<ReturnExportDto> documentationReturnManagements = documentationReturnManagementMapper.exportrevent(documentationReturnManagement);
        ExcelUtil<ReturnExportDto> util = new ExcelUtil<>(ReturnExportDto.class);
        util.exportExcel(response, documentationReturnManagements, "文档借阅-归还记录");
    }
    @Override
    public List<DocumentationBorrowManagementDto> listAll() {
        return documentationBorrowManagementMapper.list(new LambdaQueryWrapper<DocumentationBorrowManagementDto>().eq(DocumentationBorrowManagementDto::getBorrowStatus, "借阅"));
    }
    @Override
    public boolean deleteByIds(List<Long> ids) {
        List<DocumentationBorrowManagement> list = documentationBorrowManagementMapper.selectList(new LambdaQueryWrapper<DocumentationBorrowManagement>().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;
    }
}
src/main/java/com/ruoyi/warehouse/service/impl/DocumentationFileServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.ruoyi.warehouse.service.impl;
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.warehouse.mapper.DocumentationFileMapper;
import com.ruoyi.warehouse.pojo.DocumentationFile;
import com.ruoyi.warehouse.service.DocumentationFileService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
@AllArgsConstructor
@Service
public class DocumentationFileServiceImpl extends ServiceImpl<DocumentationFileMapper, DocumentationFile> implements DocumentationFileService {
    private DocumentationFileMapper documentationFileMapper;
    @Override
    public List<DocumentationFile> documentationFileListPage(DocumentationFile documentationFile) {
        return documentationFileMapper.documentationFileListPage(documentationFile);
    }
}
src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,116 @@
package com.ruoyi.warehouse.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.DocumentationDto;
import com.ruoyi.warehouse.pojo.Documentation;
import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement;
import com.ruoyi.warehouse.service.DocumentationService;
import com.ruoyi.warehouse.mapper.DocumentationMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€documentation(文档信息表)】的数据库操作Service实现
* @createDate 2025-08-14 14:05:49
*/
@Service
public class DocumentationServiceImpl extends ServiceImpl<DocumentationMapper, Documentation>
    implements DocumentationService{
    @Autowired
    private DocumentationMapper documentationMapper;
    @Override
    public IPage<DocumentationDto> listPage(Page page, Documentation documentation) {
        return documentationMapper.listPage(page, documentation);
    }
    @Override
    public void export(HttpServletResponse response,Documentation documentation) {
        IPage<DocumentationDto> list = documentationMapper.listPage(null, documentation);
        ExcelUtil<DocumentationDto> util = new ExcelUtil<>(DocumentationDto.class);
        util.exportExcel(response, list.getRecords(), "文档信息表");
    }
    @Override
    public boolean deleteByIds(List<Long> ids) {
        List<Documentation> documentationList = documentationMapper.selectList(new LambdaQueryWrapper<Documentation>().in(Documentation::getId, ids));
        for (Documentation documentation : documentationList) {
            //如果文档状态是已借出,不能删除
            if ("借出".equals(documentation.getDocStatus()) || "作废".equals(documentation.getDocStatus())) {
                throw new RuntimeException("当前文档状态为 " + documentation.getDocStatus() + ",不支持删除");
            }
            documentationMapper.deleteById(documentation.getId());
        }
        return true;
    }
    /**
     * åˆ—表所有文档
     * @return
     */
    @Override
    public List<DocumentationDto> listAll() {
        List<DocumentationDto> list = documentationMapper.list().stream().filter(documentationDto -> "正常".equals(documentationDto.getDocStatus())).collect(Collectors.toList());
        return list;
    }
    /**
     * èŽ·å–æ–‡æ¡£æ€»æ•°
     * @return
     */
    @Override
    public Integer getTotalDocsCount() {
        return documentationMapper.countTotalDocs();
    }
    /**
     * èŽ·å–æ–‡æ¡£åˆ†ç±»æ€»æ•°
     * @return
     */
    @Override
    public Integer getCategoryNumCount() {
        return documentationMapper.countCategoryNum();
    }
    /**
     * èŽ·å–å·²å€Ÿå‡ºæ–‡æ¡£æ€»æ•°
     * @return
     */
    @Override
    public Integer getBorrowedDocsCount() {
        return documentationMapper.countBorrowedDocs();
    }
    /**
     * èŽ·å–æ¯æœˆæ–°å¢žæ–‡æ¡£æ€»æ•°
     * @return
     */
    @Override
    public Integer getMonthlyAddedDocsCount() {
        return documentationMapper.countMonthlyAddedDocs();
    }
    /**
     * èŽ·å–æ–‡æ¡£åˆ†ç±»åˆ†å¸ƒ
     * @return
     */
    @Override
    public List<Map<String, Object>> getCategoryDistribution() {
        return documentationMapper.countCategoryDistribution();
    }
    /**
     * èŽ·å–æ–‡æ¡£çŠ¶æ€åˆ†å¸ƒ
     * @return
     */
    @Override
    public List<Map<String, Object>> getStatusDistribution() {
        return documentationMapper.countStatusDistribution();
    }
}
src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesRowcolServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.ruoyi.warehouse.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.warehouse.mapper.DocumentationMapper;
import com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesRowcolMapper;
import com.ruoyi.warehouse.pojo.Documentation;
import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesRowcolDto;
import com.ruoyi.warehouse.service.WarehouseGoodsShelvesRowcolService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€warehouse_goods_shelves_rowcol(仓库货架层,列表)】的数据库操作Service实现
* @createDate 2025-08-13 11:49:02
*/
@Service
@Slf4j
public class WarehouseGoodsShelvesRowcolServiceImpl extends ServiceImpl<WarehouseGoodsShelvesRowcolMapper, WarehouseGoodsShelvesRowcol>
    implements WarehouseGoodsShelvesRowcolService {
    @Autowired
    private WarehouseGoodsShelvesRowcolMapper warehouseGoodsShelvesRowcolMapper;
    @Autowired
    private DocumentationMapper documentationMapper;
    @Override
    public List<WarehouseGoodsShelvesRowcolDto> getList(WarehouseGoodsShelvesRowcol warehouseGoodsShelvesRowcol) {
        List<WarehouseGoodsShelvesRowcolDto> list = warehouseGoodsShelvesRowcolMapper.findList(warehouseGoodsShelvesRowcol);
        for (WarehouseGoodsShelvesRowcolDto dto : list) {
            //获取层ids
            Long id = dto.getId();
            //获取文档
            dto.setDocumentationDtoList(documentationMapper.listBywarehouseGoodsShelvesRowcolId(id));
        }
        return list;
    }
    @Override
    public boolean deleteByIds(List<Long> ids) {
        // 3. æ£€æŸ¥æ˜¯å¦æœ‰å•†å“
        Wrapper<Documentation> queryWrapper = new LambdaQueryWrapper<Documentation>()
                .in(Documentation::getWarehouseGoodsShelvesRowcolId, ids);
        List<Documentation> documentations = documentationMapper.selectList(queryWrapper);
        if (!documentations.isEmpty()) throw new RuntimeException("货架下有商品,不能删除");
        warehouseGoodsShelvesRowcolMapper.deleteBatchIds(ids);
        return true;
    }
}
src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,179 @@
package com.ruoyi.warehouse.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto;
import com.ruoyi.warehouse.mapper.DocumentationMapper;
import com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesMapper;
import com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesRowcolMapper;
import com.ruoyi.warehouse.pojo.Documentation;
import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
import com.ruoyi.warehouse.service.DocumentationService;
import com.ruoyi.warehouse.service.WarehouseGoodsShelvesRowcolService;
import com.ruoyi.warehouse.service.WarehouseGoodsShelvesService;
import lombok.extern.slf4j.Slf4j;
import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€warehouse_goods_shelves(仓库货架表)】的数据库操作Service实现
* @createDate 2025-08-13 11:49:02
*/
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class WarehouseGoodsShelvesServiceImpl extends ServiceImpl<WarehouseGoodsShelvesMapper, WarehouseGoodsShelves>
    implements WarehouseGoodsShelvesService {
    @Autowired
    private WarehouseGoodsShelvesRowcolService warehouseGoodsShelvesRowcolService;
    @Autowired
    private WarehouseGoodsShelvesRowcolMapper warehouseGoodsShelvesRowcolMapper;
    @Autowired
    private WarehouseGoodsShelvesMapper warehouseGoodsShelvesMapper;
    @Autowired
    private DocumentationService documentationService;
    @Autowired
    private DocumentationMapper documentationMapper;
    @Override
    public boolean add(WarehouseGoodsShelves warehouseGoodsShelves) {
        WarehouseGoodsShelves one = warehouseGoodsShelvesMapper.selectOne(new LambdaQueryWrapper<WarehouseGoodsShelves>().eq(WarehouseGoodsShelves::getId, warehouseGoodsShelves.getId()));
        // 1. æ£€æŸ¥è´§æž¶åç§°æ˜¯å¦å·²å­˜åœ¨
        if (one == null) {
            if(warehouseGoodsShelves.getRow() == null || warehouseGoodsShelves.getRow() == 0 && warehouseGoodsShelves.getCol() == null || warehouseGoodsShelves.getCol() == 0){
                throw new IllegalArgumentException("层数和列数不能为空");
            }
            int insert = warehouseGoodsShelvesMapper.insert(warehouseGoodsShelves);
            if (insert <= 0) return false;
        }
        Long shelvesId = warehouseGoodsShelves.getId();
        Long warehouseId = warehouseGoodsShelves.getWarehouseId();
        // 3. æ‰¹é‡åˆ›å»ºè¡Œåˆ—记录
        List<WarehouseGoodsShelvesRowcol> rowcolList = new ArrayList<>();
        for (long i = 1; i <= warehouseGoodsShelves.getRow(); i++) {
            for (long j = 1; j <= warehouseGoodsShelves.getCol(); j++) {
                WarehouseGoodsShelvesRowcol rowcol = new WarehouseGoodsShelvesRowcol();
                rowcol.setRow(i);
                rowcol.setCol(j);
                rowcol.setWarehouseGoodsShelvesId(shelvesId);
                rowcolList.add(rowcol);
            }
        }
        // 4. æ‰¹é‡æ’入行列记录
        if (!rowcolList.isEmpty()) {
            try {
                // ä½¿ç”¨æ‰¹é‡æ’入方法替代循环单条插入
                warehouseGoodsShelvesRowcolService.saveBatch(rowcolList);
            } catch (Exception e) {
                // æŠ›å‡ºå¼‚常触发事务回滚
                throw e;
            }
        }
        return true;
    }
    /**
     * æ ¹æ®ID更新货架及其行列信息
     * @param warehouseGoodsShelves è´§æž¶ä¿¡æ¯
     * @return æ˜¯å¦æ›´æ–°æˆåŠŸ
     */
    @Override
    public boolean updateRowcolById(WarehouseGoodsShelves warehouseGoodsShelves) {
        Long shelvesId = warehouseGoodsShelves.getId();
        // æž„建查询条件:查询该货架下的所有行列记录
        Wrapper<WarehouseGoodsShelvesRowcol> queryWrapper = new LambdaQueryWrapper<WarehouseGoodsShelvesRowcol>()
                .eq(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, shelvesId);
        List<WarehouseGoodsShelvesRowcol> rowcolList = warehouseGoodsShelvesRowcolService.list(queryWrapper);
        //获得rowcolList中所有的Id
        List<Long> rowcolIds = rowcolList.stream()
                .map(WarehouseGoodsShelvesRowcol::getId)
                .collect(Collectors.toList());
        // 3. æ£€æŸ¥æ˜¯å¦æœ‰å•†å“
        Wrapper<Documentation> queryWrapper1 = new LambdaQueryWrapper<Documentation>()
                .in(Documentation::getWarehouseGoodsShelvesRowcolId, rowcolIds);
        List<Documentation> documentations = documentationMapper.selectList(queryWrapper1);
        if (!documentations.isEmpty()) throw new RuntimeException("货架下有商品,不能删除");
        // å…ˆæ›´æ–°è´§æž¶ä¸»ä¿¡æ¯
        updateById(warehouseGoodsShelves);
        // åˆ é™¤æ—§çš„行列记录
        warehouseGoodsShelvesRowcolService.removeByIds(rowcolIds);
        // æ·»åŠ æ–°çš„è¡Œåˆ—è®°å½•
        add(warehouseGoodsShelves);
        return true;
    }
    /**
     * æ‰¹é‡åˆ é™¤è´§æž¶åŠå…¶å…³è”的行列记录
     * @param ids è´§æž¶ID列表
     * @return æ˜¯å¦åˆ é™¤æˆåŠŸ
     */
    @Override
    public boolean deleteByIds(List<Long> ids) {
        // 1. å…ˆæŸ¥è¯¢æ‰€æœ‰è¦åˆ é™¤çš„货架信息
        List<WarehouseGoodsShelves> shelvesList = warehouseGoodsShelvesMapper.selectBatchIds(ids);
        // 2. æ£€æŸ¥æ‰€æœ‰è´§æž¶æ˜¯å¦å­˜åœ¨å•†å“ï¼ˆæœ‰å•†å“åˆ™ä¸å…è®¸åˆ é™¤ï¼‰
        for (WarehouseGoodsShelves shelves : shelvesList) {
            Long shelvesId = shelves.getId();
            // æž„建查询条件:查询当前货架的所有行列记录
            Wrapper<WarehouseGoodsShelvesRowcol> queryWrapper = new LambdaQueryWrapper<WarehouseGoodsShelvesRowcol>()
                    .eq(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, shelvesId);
            List<WarehouseGoodsShelvesRowcol> rowcolList = warehouseGoodsShelvesRowcolService.list(queryWrapper);
            if (CollectionUtils.isEmpty(rowcolList)) {
                continue; // æ— å…³è”记录,跳过检查
            }
            //获得rowcolList中所有的Id
            List<Long> rowcolIds = rowcolList.stream()
                    .map(WarehouseGoodsShelvesRowcol::getId)
                    .collect(Collectors.toList());
            // 3. æ£€æŸ¥æ˜¯å¦æœ‰å•†å“
            Wrapper<Documentation> queryWrapper1 = new LambdaQueryWrapper<Documentation>()
                    .in(Documentation::getWarehouseGoodsShelvesRowcolId, rowcolIds);
            List<Documentation> documentations = documentationMapper.selectList(queryWrapper1);
            if (!documentations.isEmpty()) throw new RuntimeException("货架下有商品,不能删除"); // ä»»ä¸€è´§æž¶æœ‰å•†å“åˆ™ç»ˆæ­¢åˆ é™¤
        }
        // 3. å…ˆåˆ é™¤è´§æž¶ä¸»è®°å½•
        warehouseGoodsShelvesMapper.deleteBatchIds(ids);
        // 4. æ‰¹é‡åˆ é™¤æ‰€æœ‰è¡Œåˆ—记录
        List<Long> allShelvesIds = shelvesList.stream()
                .map(WarehouseGoodsShelves::getId)
                .collect(Collectors.toList());
        // æž„建批量删除条件
        Wrapper<WarehouseGoodsShelvesRowcol> deleteWrapper = new LambdaQueryWrapper<WarehouseGoodsShelvesRowcol>()
                .in(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, allShelvesIds);
        warehouseGoodsShelvesRowcolService.remove(deleteWrapper);
        return true;
    }
    @Override
    public List<WarehouseGoodsShelvesDto> findList(WarehouseGoodsShelves warehouseGoodsShelves) {
        return warehouseGoodsShelvesMapper.listAll(warehouseGoodsShelves);
    }
}
src/main/java/com/ruoyi/warehouse/service/impl/WarehouseServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,175 @@
package com.ruoyi.warehouse.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
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.framework.web.domain.AjaxResult;
import com.ruoyi.warehouse.dto.WarehouseDto;
import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto;
import com.ruoyi.warehouse.dto.WarehouseTreeDto;
import com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesMapper;
import com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesRowcolMapper;
import com.ruoyi.warehouse.mapper.WarehouseMapper;
import com.ruoyi.warehouse.pojo.Warehouse;
import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
import com.ruoyi.warehouse.service.WarehouseGoodsShelvesService;
import com.ruoyi.warehouse.service.WarehouseService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.sql.Array;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import static org.springframework.beans.BeanUtils.copyProperties;
/**
* @author 86151
* @description é’ˆå¯¹è¡¨ã€warehouse(仓库表)】的数据库操作Service实现
* @createDate 2025-08-13 11:49:02
*/
@Service
@Slf4j
public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper, Warehouse>
    implements WarehouseService {
    @Autowired
    private WarehouseMapper warehouseMapper;
    @Autowired
    private WarehouseGoodsShelvesService warehouseGoodsShelvesService;
    @Autowired
    private WarehouseGoodsShelvesMapper warehouseGoodsShelvesMapper;
    @Autowired
    private WarehouseGoodsShelvesRowcolMapper warehouseGoodsShelvesRowcolMapper;
    @Override
    public boolean deleteByIds(List<Long> ids) {
        // 1. æ£€æŸ¥æ˜¯å¦æœ‰è´§æž¶
        Wrapper<WarehouseGoodsShelves> queryWrapper = new LambdaQueryWrapper<WarehouseGoodsShelves>()
                .in(WarehouseGoodsShelves::getWarehouseId, ids);
        List<WarehouseGoodsShelves> shelvesList = warehouseGoodsShelvesService.list(queryWrapper);
        //获得shelvesList中所有的Id
        List<Long> shelvesIds = shelvesList.stream().map(WarehouseGoodsShelves::getId).collect(Collectors.toList());
        // 2. åˆ é™¤è´§æž¶
        if (!shelvesIds.isEmpty()) {
            boolean b = warehouseGoodsShelvesService.deleteByIds(shelvesIds);
            if (!b) {
                throw new RuntimeException("删除货架失败");
            }
        }
        return removeByIds(ids);
    }
    @Override
    public List<Warehouse> findList(Warehouse warehouse) {
        return warehouseMapper.listAll(warehouse);
    }
    /**
     * æŸ¥è¯¢ä»“库-货架-层列三级树结构
     */
    @Override
    public List<WarehouseTreeDto> findListTree() {
        // æŸ¥è¯¢æ‰€æœ‰æ ¹èŠ‚ç‚¹ï¼ˆä»“åº“ï¼‰
        LambdaQueryWrapper<Warehouse> queryWrapper = new LambdaQueryWrapper<>();
        // æŸ¥è¯¢ä»“库列表(一级节点)
        List<Warehouse> warehouseList = warehouseMapper.selectList(queryWrapper);
        // è½¬æ¢ä¸ºæ ‘节点并构建子树
        List<WarehouseTreeDto> tree = new ArrayList<>();
        for (Warehouse warehouse : warehouseList) {
            WarehouseTreeDto node = convertToWarehouseTreeDto(warehouse);
            // ä¸ºæ¯ä¸ªä»“库添加货架子节点
            node.setChildren(buildShelfChildrenNodes(warehouse.getId()));
            tree.add(node);
        }
        return tree;
    }
    /**
     * æž„建货架子节点(二级节点)
     */
    private List<WarehouseTreeDto> buildShelfChildrenNodes(Long warehouseId) {
        // æŸ¥è¯¢æŒ‡å®šä»“库下的所有货架
        LambdaQueryWrapper<WarehouseGoodsShelves> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(WarehouseGoodsShelves::getWarehouseId, warehouseId);
        List<WarehouseGoodsShelves> shelfList = warehouseGoodsShelvesMapper.selectList(queryWrapper);
        // è½¬æ¢ä¸ºæ ‘节点并构建层列子节点
        List<WarehouseTreeDto> shelfNodes = new ArrayList<>();
        for (WarehouseGoodsShelves shelf : shelfList) {
            WarehouseTreeDto shelfNode = convertToShelfTreeDto(shelf);
            // ä¸ºæ¯ä¸ªè´§æž¶æ·»åŠ å±‚åˆ—å­èŠ‚ç‚¹
            shelfNode.setChildren(buildRowcolChildrenNodes(shelf.getId()));
            shelfNodes.add(shelfNode);
        }
        return shelfNodes;
    }
    /**
     * æž„建层列子节点(三级节点)
     */
    private List<WarehouseTreeDto> buildRowcolChildrenNodes(Long shelfId) {
        // æŸ¥è¯¢æŒ‡å®šè´§æž¶ä¸‹çš„æ‰€æœ‰å±‚列
        LambdaQueryWrapper<WarehouseGoodsShelvesRowcol> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, shelfId);
        List<WarehouseGoodsShelvesRowcol> rowcolList = warehouseGoodsShelvesRowcolMapper.selectList(queryWrapper);
        // è½¬æ¢ä¸ºæ ‘节点(层列没有子节点)
        List<WarehouseTreeDto> rowcolNodes = new ArrayList<>();
        for (WarehouseGoodsShelvesRowcol rowcol : rowcolList) {
            WarehouseTreeDto rowcolNode = convertToRowcolTreeDto(rowcol);
            rowcolNodes.add(rowcolNode);
        }
        return rowcolNodes;
    }
    /**
     * ä»“库实体转换为树节点DTO
     */
    private WarehouseTreeDto convertToWarehouseTreeDto(Warehouse warehouse) {
        WarehouseTreeDto dto = new WarehouseTreeDto();
        copyProperties(warehouse, dto);
        dto.setLabel(warehouse.getWarehouseName());
        dto.setChildren(new ArrayList<>());
        return dto;
    }
    /**
     * è´§æž¶å®žä½“转换为树节点DTO
     */
    private WarehouseTreeDto convertToShelfTreeDto(WarehouseGoodsShelves shelf) {
        WarehouseTreeDto dto = new WarehouseTreeDto();
        copyProperties(shelf, dto);
//        dto.setLabel(shelf.getGoodsShelvesName());
        dto.setLabel(shelf.getName());
        dto.setChildren(new ArrayList<>());
        return dto;
    }
    /**
     * å±‚列实体转换为树节点DTO
     */
    private WarehouseTreeDto convertToRowcolTreeDto(WarehouseGoodsShelvesRowcol rowcol) {
        WarehouseTreeDto dto = new WarehouseTreeDto();
        copyProperties(rowcol, dto);
//        dto.setLabel(rowcol.getStorey() + "-" + rowcol.getArrange());
        dto.setLabel(rowcol.getRow() + "-" + rowcol.getCol());
        dto.setChildren(new ArrayList<>());
        return dto;
    }
}
src/main/resources/mapper/warehouse/DocumentClassificationMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.warehouse.mapper.DocumentClassificationMapper">
    <resultMap id="BaseResultMap" type="com.ruoyi.warehouse.pojo.DocumentClassification">
            <id property="id" column="id" />
            <result property="category" column="category" />
            <result property="parentId" column="parent_id" />
            <result property="createTime" column="create_time" />
            <result property="createUser" column="create_user" />
            <result property="updateTime" column="update_time" />
            <result property="updateUser" column="update_user" />
            <result property="tenantId" column="tenant_id" />
    </resultMap>
    <sql id="Base_Column_List">
        id,category,parent_id,
        create_time,create_user,update_time,
        update_user,tenant_id
    </sql>
</mapper>
src/main/resources/mapper/warehouse/DocumentationBorrowManagementMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.warehouse.mapper.DocumentationBorrowManagementMapper">
<!--    <resultMap id="BaseResultMap" type="com.ruoyi.warehouse.pojo.DocumentationBorrowManagement">-->
<!--            <id property="id" column="id"/>-->
<!--            <result property="documentationId" column="documentation_id" />-->
<!--            <result property="borrowerId" column="borrower_id" />-->
<!--            <result property="borrowPurpose" column="borrow_purpose" />-->
<!--            <result property="borrowDate" column="borrow_date"/>-->
<!--            <result property="dueReturnDate" column="due_return_date" />-->
<!--            <result property="returnDate" column="return_date"/>-->
<!--            <result property="borrowStatus" column="borrow_status" />-->
<!--            <result property="remark" column="remark"/>-->
<!--            <result property="createTime" column="create_time"/>-->
<!--            <result property="createUser" column="create_user"/>-->
<!--            <result property="updateTime" column="update_time"/>-->
<!--            <result property="updateUser" column="update_user"/>-->
<!--            <result property="tenantId" column="tenant_id"/>-->
<!--    </resultMap>-->
<!--    <sql id="Base_Column_List">-->
<!--        id,documentation_id,borrower_id,-->
<!--        borrow_purpose,borrow_date,due_return_date,-->
<!--        return_date,borrow_status,remark,-->
<!--        create_time,create_user,update_time,-->
<!--        update_user,tenant_id-->
<!--    </sql>-->
    <select id="listPage" resultType="com.ruoyi.warehouse.dto.DocumentationBorrowManagementDto">
        select dbm.*,doc.doc_name
        from documentation_borrow_management dbm
        LEFT JOIN documentation doc on doc.id = dbm.documentation_id
        where 1=1
        <if test="documentationBorrowManagement.borrowStatus != null">
            and borrow_status = #{documentationBorrowManagement.borrowStatus}
        </if>
        <if test="documentationBorrowManagement.documentationId != null">
            and documentation_id = #{documentationBorrowManagement.documentationId}
        </if>
        <if test="documentationBorrowManagement.borrower != null">
            and borrower like concat('%',#{documentationBorrowManagement.borrower},'%')
        </if>
        <if test="documentationBorrowManagement.returner != null">
            and returner like concat('%',#{documentationBorrowManagement.returner},'%')
        </if>
        <if test="documentationBorrowManagement.entryDateStart != null and documentationBorrowManagement.entryDateStart != ''">
            and borrow_date >= DATE_FORMAT(#{documentationBorrowManagement.entryDateStart},'%Y-%m-%d')
        </if>
        <if test="documentationBorrowManagement.entryDateEnd != null and documentationBorrowManagement.entryDateEnd != ''">
            and borrow_date &lt;= DATE_FORMAT(#{documentationBorrowManagement.entryDateEnd},'%Y-%m-%d')
        </if>
    </select>
    <select id="export" resultType="com.ruoyi.warehouse.dto.DocumentationBorrowManagementDto">
        select dbm.*,doc.doc_name
        from documentation_borrow_management dbm
        LEFT JOIN documentation doc on doc.id = dbm.documentation_id
        where 1=1
        <if test="documentationBorrowManagement.borrowStatus != null">
            and borrow_status = #{documentationBorrowManagement.borrowStatus}
        </if>
        <if test="documentationBorrowManagement.documentationId != null">
            and documentation_id = #{documentationBorrowManagement.documentationId}
        </if>
        <if test="documentationBorrowManagement.borrower != null">
            and borrower like concat('%',#{documentationBorrowManagement.borrower},'%')
        </if>
        <if test="documentationBorrowManagement.returner != null">
            and returner like concat('%',#{documentationBorrowManagement.returner},'%')
        </if>
        <if test="documentationBorrowManagement.entryDateStart != null and documentationBorrowManagement.entryDateStart != ''">
            and borrow_date >= DATE_FORMAT(#{documentationBorrowManagement.entryDateStart},'%Y-%m-%d')
        </if>
        <if test="documentationBorrowManagement.entryDateEnd != null and documentationBorrowManagement.entryDateEnd != ''">
            and borrow_date &lt;= DATE_FORMAT(#{documentationBorrowManagement.entryDateEnd},'%Y-%m-%d')
        </if>
    </select>
    <select id="list" resultType="com.ruoyi.warehouse.dto.DocumentationBorrowManagementDto">
        select dbm.*,doc.doc_name
        from documentation_borrow_management dbm
        LEFT JOIN documentation doc on doc.id = dbm.documentation_id
        <if test="ew != null">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
src/main/resources/mapper/warehouse/DocumentationFileMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.ruoyi.warehouse.mapper.DocumentationFileMapper">
    <select id="documentationFileListPage" resultType="com.ruoyi.warehouse.pojo.DocumentationFile">
        SELECT
        *
        FROM documentation_file
        where
        1=1
        <if test="documentationFile.name != null and documentationFile.name != '' ">
            AND name = #{documentationFile.name}
        </if>
        <if test="documentationFile.documentationId != null">
            AND documentation_id = #{documentationFile.documentationId}
        </if>
    </select>
</mapper>
src/main/resources/mapper/warehouse/DocumentationMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.warehouse.mapper.DocumentationMapper">
    <select id="listPage" resultType="com.ruoyi.warehouse.dto.DocumentationDto">
        SELECT
        doc.*,
        dc.category,
        CONCAT(
            w.warehouse_name, '-',
            wgs.name, '-',
            wgsr.row, '层-',
            wgsr.col, '列'
        ) AS location_info  -- åˆå¹¶åŽçš„字段名
        FROM documentation doc
        LEFT JOIN document_classification dc ON doc.document_classification_id = dc.id
        LEFT JOIN warehouse_goods_shelves_rowcol wgsr ON wgsr.id = doc.warehouse_goods_shelves_rowcol_id
        LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
        LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
        where 1=1
        <if test="documentation.documentClassificationId != null">
            and doc.document_classification_id = #{documentation.documentClassificationId}
        </if>
        <if test="documentation.docName != null">
            and doc.doc_name = #{documentation.docName}
        </if>
        <if test="documentation.docNumber != null">
            and doc.doc_number = #{documentation.docNumber}
        </if>
        <if test="documentation.id != null">
            and doc.id = #{documentation.id}
        </if>
    </select>
    <select id="listByDocumentClassificationId" resultType="com.ruoyi.warehouse.dto.DocumentationDto">
        SELECT
        doc.*,
        dc.category,
        CONCAT(
        w.warehouse_name, '-',
        wgs.name, '-',
        wgsr.row, '层-',
        wgsr.col, '列'
        ) AS location_info  -- åˆå¹¶åŽçš„字段名
        FROM documentation doc
        LEFT JOIN document_classification dc ON doc.document_classification_id = dc.id
        LEFT JOIN warehouse_goods_shelves_rowcol wgsr ON wgsr.id = doc.warehouse_goods_shelves_rowcol_id
        LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
        LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
        where doc.document_classification_id = #{documentClassificationId}
    </select>
    <select id="list" resultType="com.ruoyi.warehouse.dto.DocumentationDto">
        SELECT
            doc.*,
            dc.category,
            CONCAT(
                    w.warehouse_name, '-',
                    wgs.name, '-',
                    wgsr.row, '层-',
                    wgsr.col, '列'
                ) AS location_info  -- åˆå¹¶åŽçš„字段名
        FROM documentation doc
         LEFT JOIN document_classification dc ON doc.document_classification_id = dc.id
         LEFT JOIN warehouse_goods_shelves_rowcol wgsr ON wgsr.id = doc.warehouse_goods_shelves_rowcol_id
         LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
         LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
    </select>
    <select id="listBywarehouseGoodsShelvesRowcolId" resultType="com.ruoyi.warehouse.dto.DocumentationDto">
        SELECT
        doc.*,
        dc.category,
        CONCAT(
        w.warehouse_name, '-',
        wgs.name, '-',
        wgsr.row, '层-',
        wgsr.col, '列'
        ) AS location_info  -- åˆå¹¶åŽçš„字段名
        FROM documentation doc
        LEFT JOIN document_classification dc ON doc.document_classification_id = dc.id
        LEFT JOIN warehouse_goods_shelves_rowcol wgsr ON wgsr.id = doc.warehouse_goods_shelves_rowcol_id
        LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
        LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
        where doc.warehouse_goods_shelves_rowcol_id = #{warehouseGoodsShelvesRowcolId}
    </select>
</mapper>
src/main/resources/mapper/warehouse/DocumentationReturnManagementMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.warehouse.mapper.DocumentationReturnManagementMapper">
    <select id="listPage" resultType="com.ruoyi.warehouse.dto.DocumentationReturnManagementDto">
        select dbm.*,doc.doc_name
        from documentation_return_management dbm
        LEFT JOIN documentation doc on doc.id = dbm.documentation_id
        where 1=1
        <if test="documentationReturnManagement.borrowStatus != null">
            and borrow_status = #{documentationReturnManagement.borrowStatus}
        </if>
        <if test="documentationReturnManagement.documentationId != null">
            and documentation_id = #{documentationReturnManagement.documentationId}
        </if>
        <if test="documentationReturnManagement.borrower != null">
            and borrower like concat('%',#{documentationReturnManagement.borrower},'%')
        </if>
        <if test="documentationReturnManagement.returner != null">
            and returner like concat('%',#{documentationReturnManagement.returner},'%')
        </if>
        <if test="documentationReturnManagement.entryDateStart != null and documentationReturnManagement.entryDateStart != ''">
            and return_date >= DATE_FORMAT(#{documentationReturnManagement.entryDateStart},'%Y-%m-%d')
        </if>
        <if test="documentationReturnManagement.entryDateEnd != null and documentationReturnManagement.entryDateEnd != ''">
            and return_date &lt;= DATE_FORMAT(#{documentationReturnManagement.entryDateEnd},'%Y-%m-%d')
        </if>
    </select>
    <select id="exportrevent" resultType="com.ruoyi.warehouse.dto.ReturnExportDto">
        select dbm.*,doc.doc_name
        from documentation_return_management dbm
        LEFT JOIN documentation doc on doc.id = dbm.documentation_id
        where dbm.returner IS NOT NULL
        <if test="documentationReturnManagement.returnStatus != null">
            and return_status = #{documentationReturnManagement.returnStatus}
        </if>
        <if test="documentationReturnManagement.documentationId != null">
            and documentation_id = #{documentationReturnManagement.documentationId}
        </if>
        <if test="documentationReturnManagement.borrower != null">
            and borrower like concat('%',#{documentationReturnManagement.borrower},'%')
        </if>
        <if test="documentationReturnManagement.returner != null">
            and returner like concat('%',#{documentationReturnManagement.returner},'%')
        </if>
        <if test="documentationReturnManagement.entryDateStart != null and documentationReturnManagement.entryDateStart != ''">
            and return_date >= DATE_FORMAT(#{documentationReturnManagement.entryDateStart},'%Y-%m-%d')
        </if>
        <if test="documentationReturnManagement.entryDateEnd != null and documentationReturnManagement.entryDateEnd != ''">
            and return_date &lt;= DATE_FORMAT(#{documentationReturnManagement.entryDateEnd},'%Y-%m-%d')
        </if>
    </select>
</mapper>
src/main/resources/mapper/warehouse/WarehouseGoodsShelvesMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesMapper">
    <select id="findList" resultType="com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto">
        SELECT
        doc.doc_name,
        doc.doc_number,
        wgs.*,
        w.warehouse_name,
        dc.category
        FROM warehouse_goods_shelves_rowcol wgsr
        LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
        LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
        LEFT JOIN documentation doc ON doc.warehouse_goods_shelves_rowcol_id = wgsr.id
        LEFT JOIN document_classification dc ON doc.document_classification_id = dc.id
        <where>
            1=1
            <if test="warehouseGoodsShelves.goodsShelvesName != null and warehouseGoodsShelves.goodsShelvesName != ''">
                and wgs.goods_shelves_name like concat('%',#{warehouseGoodsShelves.goodsShelvesName},'%')
            </if>
            <if test="warehouseGoodsShelves.warehouseId != null">
                and wgs.warehouse_id = #{warehouseGoodsShelves.warehouseId}
            </if>
            <if test="warehouseGoodsShelves.id != null">
                and wgs.id = #{warehouseGoodsShelves.id}
            </if>
        </where>
    </select>
    <select id="listAll" resultType="com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto">
        select wgs.*,w.warehouse_name from warehouse_goods_shelves wgs
        LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
        <where>
            1=1
            <if test="warehouseGoodsShelves.goodsShelvesName != null and warehouseGoodsShelves.goodsShelvesName != ''">
                and goods_shelves_name like concat('%',#{warehouseGoodsShelves.goodsShelvesName},'%')
            </if>
            <if test="warehouseGoodsShelves.warehouseId != null">
                and warehouse_id = #{warehouseGoodsShelves.warehouseId}
            </if>
            <if test="warehouseGoodsShelves.id != null">
                and id = #{warehouseGoodsShelves.id}
            </if>
        </where>
    </select>
</mapper>
src/main/resources/mapper/warehouse/WarehouseGoodsShelvesRowcolMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesRowcolMapper">
    <select id="findList" resultType="com.ruoyi.warehouse.dto.WarehouseGoodsShelvesRowcolDto">
--         SELECT
--         wgsr.*,
--         w.warehouse_name,
--         wgs.name,
--         dc.category
--         FROM warehouse_goods_shelves_rowcol wgsr
--         LEFT JOIN documentation doc ON doc.warehouse_goods_shelves_rowcol_id = wgsr.id
--         LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
--         LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
--         LEFT JOIN document_classification dc ON doc.document_classification_id = dc.id
        SELECT
        wgsr.*,
        w.warehouse_name,
        wgs.name
        FROM warehouse_goods_shelves_rowcol wgsr
        LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
        LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
        <where>
            1=1
            <if test="warehouseGoodsShelvesRowcol.row != null">
                and wgsr.row = #{warehouseGoodsShelvesRowcol.row}
            </if>
            <if test="warehouseGoodsShelvesRowcol.col != null">
                and wgsr.col = #{warehouseGoodsShelvesRowcol.col}
            </if>
            <if test="warehouseGoodsShelvesRowcol.warehouseGoodsShelvesId != null">
                and wgsr.warehouse_goods_shelves_id = #{warehouseGoodsShelvesRowcol.warehouseGoodsShelvesId}
            </if>
            <if test="warehouseGoodsShelvesRowcol.id != null">
                and wgsr.id = #{warehouseGoodsShelvesRowcol.id}
            </if>
        </where>
    </select>
</mapper>
src/main/resources/mapper/warehouse/WarehouseMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.warehouse.mapper.WarehouseMapper">
    <select id="findList" resultType="com.ruoyi.warehouse.dto.WarehouseDto">
        SELECT
        w.*,
        wgs.name,
        doc.doc_name,
        doc.doc_number,
        dc.category
        FROM warehouse_goods_shelves_rowcol wgsr
        LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
        LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
        LEFT JOIN documentation doc ON doc.warehouse_goods_shelves_rowcol_id = wgsr.id
        LEFT JOIN document_classification dc ON doc.document_classification_id = dc.id
        <where>
            1=1
            <if test="warehouse.warehouseName != null">
                and w.warehouse_name like concat('%',#{warehouse.warehouseName},'%')
            </if>
            <if test="warehouse.id != null">
                and w.id = #{warehouse.id}
            </if>
        </where>
    </select>
    <select id="listAll" resultType="com.ruoyi.warehouse.pojo.Warehouse">
        select * from warehouse
        <where>
            1=1
            <if test="warehouse.warehouseName != null">
                and warehouse_name like concat('%',#{warehouse.warehouseName},'%')
            </if>
            <if test="warehouse.id != null">
                and w.id = #{warehouse.id}
            </if>
        </where>
    </select>
</mapper>
src/main/resources/mybatis/mybatis-config.xml
@@ -13,6 +13,7 @@
        <setting name="defaultExecutorType"      value="SIMPLE" />
        <!-- æŒ‡å®š MyBatis æ‰€ç”¨æ—¥å¿—的具体实现 -->
        <setting name="logImpl"                  value="SLF4J"  />
<!--        <setting name="logImpl"                  value="org.apache.ibatis.logging.stdout.StdOutImpl"  />-->
        <!-- ä½¿ç”¨é©¼å³°å‘½åæ³•转换字段 -->
        <!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
    </settings>