From b33e6f53dd537abaebad066de12474580fcc33b2 Mon Sep 17 00:00:00 2001
From: yaowanxin <3588231647@qq.com>
Date: 星期四, 21 八月 2025 15:03:14 +0800
Subject: [PATCH] Merge branch 'pim_ywx'
---
src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesRowcolService.java | 23
src/main/java/com/ruoyi/warehouse/dto/DocumentationBorrowManagementDto.java | 16
src/main/java/com/ruoyi/warehouse/pojo/Warehouse.java | 62 +
src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelves.java | 79 +
src/main/java/com/ruoyi/warehouse/pojo/DocumentationReturnManagement.java | 130 ++
src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java | 116 ++
src/main/java/com/ruoyi/warehouse/mapper/WarehouseMapper.java | 26
src/main/resources/mapper/warehouse/DocumentClassificationMapper.xml | 23
src/main/java/com/ruoyi/warehouse/dto/DocumentationDto.java | 20
src/main/java/com/ruoyi/warehouse/service/DocumentClassificationService.java | 20
src/main/java/com/ruoyi/warehouse/mapper/DocumentationFileMapper.java | 17
src/main/java/com/ruoyi/warehouse/dto/DocumentationReturnManagementDto.java | 12
src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationDto.java | 12
src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationTreeDto.java | 13
src/main/java/com/ruoyi/warehouse/mapper/DocumentationReturnManagementMapper.java | 33
src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java | 35
src/main/java/com/ruoyi/warehouse/mapper/DocumentClassificationMapper.java | 20
src/main/java/com/ruoyi/warehouse/service/impl/DocumentClassificationServiceImpl.java | 97 +
src/main/resources/mapper/warehouse/WarehouseMapper.xml | 42
src/main/resources/mybatis/mybatis-config.xml | 1
src/main/java/com/ruoyi/warehouse/service/impl/WarehouseServiceImpl.java | 175 +++
src/main/java/com/ruoyi/warehouse/dto/WarehouseDto.java | 13
src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesDto.java | 12
src/main/java/com/ruoyi/warehouse/controller/DocumentClassificationController.java | 52 +
src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java | 64 +
src/main/resources/mapper/warehouse/DocumentationMapper.xml | 87 +
src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesRowcolDto.java | 15
src/main/resources/mapper/warehouse/WarehouseGoodsShelvesMapper.xml | 50
src/main/resources/mapper/warehouse/DocumentationBorrowManagementMapper.xml | 88 +
src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java | 60 +
src/main/resources/mapper/warehouse/DocumentationFileMapper.xml | 17
src/main/java/com/ruoyi/warehouse/pojo/DocumentClassification.java | 67 +
src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesMapper.java | 29
src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesController.java | 54 +
src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java | 179 +++
src/main/java/com/ruoyi/warehouse/pojo/DocumentationBorrowManagement.java | 129 ++
src/main/java/com/ruoyi/warehouse/service/DocumentationService.java | 40
src/main/java/com/ruoyi/warehouse/dto/WarehouseTreeDto.java | 12
src/main/java/com/ruoyi/warehouse/pojo/Documentation.java | 175 +++
src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesRowcolController.java | 32
src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesRowcolServiceImpl.java | 63 +
src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java | 91 +
src/main/java/com/ruoyi/warehouse/controller/WarehouseController.java | 63 +
src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelvesRowcol.java | 79 +
src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesService.java | 27
src/main/java/com/ruoyi/warehouse/mapper/DocumentationMapper.java | 48
src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java | 27
src/main/java/com/ruoyi/warehouse/service/WarehouseService.java | 24
src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesRowcolMapper.java | 25
src/main/java/com/ruoyi/warehouse/service/DocumentationFileService.java | 14
src/main/resources/mapper/warehouse/DocumentationReturnManagementMapper.xml | 57 +
src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java | 157 +++
src/main/resources/mapper/warehouse/WarehouseGoodsShelvesRowcolMapper.xml | 41
src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java | 36
src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java | 107 ++
src/main/java/com/ruoyi/warehouse/service/impl/DocumentationFileServiceImpl.java | 26
56 files changed, 3,032 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/warehouse/controller/DocumentClassificationController.java b/src/main/java/com/ruoyi/warehouse/controller/DocumentClassificationController.java
new file mode 100644
index 0000000..625c82b
--- /dev/null
+++ b/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("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(documentClassificationService.deleteByIds(ids));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java b/src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java
new file mode 100644
index 0000000..d4b44ad
--- /dev/null
+++ b/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("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ 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("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ 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);
+ }
+}
diff --git a/src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java b/src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java
new file mode 100644
index 0000000..586c330
--- /dev/null
+++ b/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("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ 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());
+ }
+}
diff --git a/src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java b/src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java
new file mode 100644
index 0000000..13a1bc7
--- /dev/null
+++ b/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));
+ }
+
+
+
+
+}
diff --git a/src/main/java/com/ruoyi/warehouse/controller/WarehouseController.java b/src/main/java/com/ruoyi/warehouse/controller/WarehouseController.java
new file mode 100644
index 0000000..0876334
--- /dev/null
+++ b/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("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(warehouseService.deleteByIds(ids));
+ }
+}
diff --git a/src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesController.java b/src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesController.java
new file mode 100644
index 0000000..bed5510
--- /dev/null
+++ b/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("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(warehouseGoodsShelvesService.deleteByIds(ids));
+ }
+}
diff --git a/src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesRowcolController.java b/src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesRowcolController.java
new file mode 100644
index 0000000..36073ac
--- /dev/null
+++ b/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);
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationDto.java b/src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationDto.java
new file mode 100644
index 0000000..ed20c8d
--- /dev/null
+++ b/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;
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationTreeDto.java b/src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationTreeDto.java
new file mode 100644
index 0000000..e2817db
--- /dev/null
+++ b/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;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/dto/DocumentationBorrowManagementDto.java b/src/main/java/com/ruoyi/warehouse/dto/DocumentationBorrowManagementDto.java
new file mode 100644
index 0000000..8fb893a
--- /dev/null
+++ b/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;
+
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/DocumentationDto.java b/src/main/java/com/ruoyi/warehouse/dto/DocumentationDto.java
new file mode 100644
index 0000000..ad10fc2
--- /dev/null
+++ b/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;
+
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/DocumentationReturnManagementDto.java b/src/main/java/com/ruoyi/warehouse/dto/DocumentationReturnManagementDto.java
new file mode 100644
index 0000000..a65e1e0
--- /dev/null
+++ b/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;
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java b/src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java
new file mode 100644
index 0000000..bb9c391
--- /dev/null
+++ b/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; // 褰掕繕鏃堕棿
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/WarehouseDto.java b/src/main/java/com/ruoyi/warehouse/dto/WarehouseDto.java
new file mode 100644
index 0000000..34ac3f1
--- /dev/null
+++ b/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;
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesDto.java b/src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesDto.java
new file mode 100644
index 0000000..b637542
--- /dev/null
+++ b/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;
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesRowcolDto.java b/src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesRowcolDto.java
new file mode 100644
index 0000000..2bff39e
--- /dev/null
+++ b/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;
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/WarehouseTreeDto.java b/src/main/java/com/ruoyi/warehouse/dto/WarehouseTreeDto.java
new file mode 100644
index 0000000..80be317
--- /dev/null
+++ b/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;
+}
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/DocumentClassificationMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/DocumentClassificationMapper.java
new file mode 100644
index 0000000..93b121f
--- /dev/null
+++ b/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 閽堝琛ㄣ�恉ocument_classification(鏂囨。鍒嗙被琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-08-15 10:44:23
+* @Entity com.ruoyi.warehouse.pojo.DocumentClassification
+*/
+@Mapper
+public interface DocumentClassificationMapper extends BaseMapper<DocumentClassification> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java
new file mode 100644
index 0000000..6af2ceb
--- /dev/null
+++ b/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 閽堝琛ㄣ�恉ocumentation_borrow_management(鏂囨。鍊熼槄-褰掕繕琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @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);
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/DocumentationFileMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationFileMapper.java
new file mode 100644
index 0000000..0617258
--- /dev/null
+++ b/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);
+}
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/DocumentationMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationMapper.java
new file mode 100644
index 0000000..33278bf
--- /dev/null
+++ b/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 閽堝琛ㄣ�恉ocumentation(鏂囨。淇℃伅琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @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();
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/DocumentationReturnManagementMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationReturnManagementMapper.java
new file mode 100644
index 0000000..d9de592
--- /dev/null
+++ b/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 閽堝琛ㄣ�恉ocumentation_borrow_management(鏂囨。鍊熼槄-褰掕繕琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @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);
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesMapper.java
new file mode 100644
index 0000000..d02e0cd
--- /dev/null
+++ b/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 閽堝琛ㄣ�恮arehouse_goods_shelves(浠撳簱璐ф灦琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @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);
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesRowcolMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesRowcolMapper.java
new file mode 100644
index 0000000..69da1ee
--- /dev/null
+++ b/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 閽堝琛ㄣ�恮arehouse_goods_shelves_rowcol(浠撳簱璐ф灦灞傦紝鍒楄〃)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @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);
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/WarehouseMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/WarehouseMapper.java
new file mode 100644
index 0000000..392f8ca
--- /dev/null
+++ b/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 閽堝琛ㄣ�恮arehouse(浠撳簱琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @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);
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/DocumentClassification.java b/src/main/java/com/ruoyi/warehouse/pojo/DocumentClassification.java
new file mode 100644
index 0000000..98855ce
--- /dev/null
+++ b/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;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/Documentation.java b/src/main/java/com/ruoyi/warehouse/pojo/Documentation.java
new file mode 100644
index 0000000..0c1a612
--- /dev/null
+++ b/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;
+
+ /**
+ * 璐d换浜�
+ */
+ @Excel(name = "璐d换浜�")
+ @ApiModelProperty(value = "璐d换浜�")
+ 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;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/DocumentationBorrowManagement.java b/src/main/java/com/ruoyi/warehouse/pojo/DocumentationBorrowManagement.java
new file mode 100644
index 0000000..a6c560f
--- /dev/null
+++ b/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;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java b/src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java
new file mode 100644
index 0000000..c24805c
--- /dev/null
+++ b/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;
+
+
+}
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/DocumentationReturnManagement.java b/src/main/java/com/ruoyi/warehouse/pojo/DocumentationReturnManagement.java
new file mode 100644
index 0000000..5573923
--- /dev/null
+++ b/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;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/Warehouse.java b/src/main/java/com/ruoyi/warehouse/pojo/Warehouse.java
new file mode 100644
index 0000000..a8ae602
--- /dev/null
+++ b/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;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelves.java b/src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelves.java
new file mode 100644
index 0000000..d267986
--- /dev/null
+++ b/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;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelvesRowcol.java b/src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelvesRowcol.java
new file mode 100644
index 0000000..4372314
--- /dev/null
+++ b/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;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/service/DocumentClassificationService.java b/src/main/java/com/ruoyi/warehouse/service/DocumentClassificationService.java
new file mode 100644
index 0000000..0fbe456
--- /dev/null
+++ b/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 閽堝琛ㄣ�恉ocument_classification(鏂囨。鍒嗙被琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-08-15 10:44:23
+*/
+public interface DocumentClassificationService extends IService<DocumentClassification> {
+
+ boolean deleteByIds(List<Long> ids);
+
+ List<DocumentClassificationTreeDto> selectDocumentClassificationList();
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java b/src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java
new file mode 100644
index 0000000..2a162d2
--- /dev/null
+++ b/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 閽堝琛ㄣ�恉ocumentation_borrow_management(鏂囨。鍊熼槄-褰掕繕琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @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();
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/DocumentationFileService.java b/src/main/java/com/ruoyi/warehouse/service/DocumentationFileService.java
new file mode 100644
index 0000000..575ecd4
--- /dev/null
+++ b/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);
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/DocumentationService.java b/src/main/java/com/ruoyi/warehouse/service/DocumentationService.java
new file mode 100644
index 0000000..32910ce
--- /dev/null
+++ b/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 閽堝琛ㄣ�恉ocumentation(鏂囨。淇℃伅琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @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();
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesRowcolService.java b/src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesRowcolService.java
new file mode 100644
index 0000000..ed3bccc
--- /dev/null
+++ b/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 閽堝琛ㄣ�恮arehouse_goods_shelves_rowcol(浠撳簱璐ф灦灞傦紝鍒楄〃)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-08-13 11:49:02
+*/
+public interface WarehouseGoodsShelvesRowcolService extends IService<WarehouseGoodsShelvesRowcol> {
+
+ boolean deleteByIds(List<Long> ids);
+
+
+ List<WarehouseGoodsShelvesRowcolDto> getList(WarehouseGoodsShelvesRowcol warehouseGoodsShelvesRowcol);
+
+
+
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesService.java b/src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesService.java
new file mode 100644
index 0000000..622d8e1
--- /dev/null
+++ b/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 閽堝琛ㄣ�恮arehouse_goods_shelves(浠撳簱璐ф灦琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @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);
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/WarehouseService.java b/src/main/java/com/ruoyi/warehouse/service/WarehouseService.java
new file mode 100644
index 0000000..0b68de8
--- /dev/null
+++ b/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 閽堝琛ㄣ�恮arehouse(浠撳簱琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @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();
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/DocumentClassificationServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentClassificationServiceImpl.java
new file mode 100644
index 0000000..54c642e
--- /dev/null
+++ b/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 閽堝琛ㄣ�恉ocument_classification(鏂囨。鍒嗙被琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @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涓虹┖锛岃鏄庢槸鏍硅妭鐐癸紝闇�瑕佸垹闄ゆ枃妗d俊鎭〃涓殑鏁版嵁
+ 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;
+ }
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java
new file mode 100644
index 0000000..38b8d5a
--- /dev/null
+++ b/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 閽堝琛ㄣ�恉ocumentation_borrow_management(鏂囨。鍊熼槄-褰掕繕琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @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);
+ // 鏇存柊鏂囨。鐘舵�佷负姝e父
+ Documentation documentation = documentationService.getById(documentationBorrowManagement1.getDocumentationId());
+ documentation.setDocStatus("姝e父");
+ 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("鍒犻櫎褰掕繕璁板綍鍜屾枃妗g姸鎬佹椂鍑洪敊", 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("姝e父");
+ boolean b = documentationService.updateById(documentation);
+ if (!b){
+ throw new RuntimeException("鏇存柊鏂囨。鐘舵�佸け璐�");
+ }
+ }
+ documentationBorrowManagementMapper.deleteBatchIds(ids);
+ return true;
+ }
+
+
+
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationFileServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationFileServiceImpl.java
new file mode 100644
index 0000000..61dafcd
--- /dev/null
+++ b/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);
+ }
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java
new file mode 100644
index 0000000..5a7cf30
--- /dev/null
+++ b/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 閽堝琛ㄣ�恉ocumentation(鏂囨。淇℃伅琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @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 -> "姝e父".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();
+ }
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesRowcolServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesRowcolServiceImpl.java
new file mode 100644
index 0000000..7715520
--- /dev/null
+++ b/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 閽堝琛ㄣ�恮arehouse_goods_shelves_rowcol(浠撳簱璐ф灦灞傦紝鍒楄〃)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @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) {
+ //鑾峰彇灞俰ds
+ 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;
+ }
+
+
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java
new file mode 100644
index 0000000..3d33d5c
--- /dev/null
+++ b/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 閽堝琛ㄣ�恮arehouse_goods_shelves(浠撳簱璐ф灦琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @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);
+ }
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseServiceImpl.java
new file mode 100644
index 0000000..74276a7
--- /dev/null
+++ b/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 閽堝琛ㄣ�恮arehouse(浠撳簱琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @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;
+ }
+
+}
+
+
+
+
diff --git a/src/main/resources/mapper/warehouse/DocumentClassificationMapper.xml b/src/main/resources/mapper/warehouse/DocumentClassificationMapper.xml
new file mode 100644
index 0000000..e758e4f
--- /dev/null
+++ b/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>
diff --git a/src/main/resources/mapper/warehouse/DocumentationBorrowManagementMapper.xml b/src/main/resources/mapper/warehouse/DocumentationBorrowManagementMapper.xml
new file mode 100644
index 0000000..18b2082
--- /dev/null
+++ b/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 <= 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 <= 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>
diff --git a/src/main/resources/mapper/warehouse/DocumentationFileMapper.xml b/src/main/resources/mapper/warehouse/DocumentationFileMapper.xml
new file mode 100644
index 0000000..a8b74f9
--- /dev/null
+++ b/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>
diff --git a/src/main/resources/mapper/warehouse/DocumentationMapper.xml b/src/main/resources/mapper/warehouse/DocumentationMapper.xml
new file mode 100644
index 0000000..91f17a9
--- /dev/null
+++ b/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>
diff --git a/src/main/resources/mapper/warehouse/DocumentationReturnManagementMapper.xml b/src/main/resources/mapper/warehouse/DocumentationReturnManagementMapper.xml
new file mode 100644
index 0000000..dabc4f0
--- /dev/null
+++ b/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 <= 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 <= DATE_FORMAT(#{documentationReturnManagement.entryDateEnd},'%Y-%m-%d')
+ </if>
+ </select>
+</mapper>
diff --git a/src/main/resources/mapper/warehouse/WarehouseGoodsShelvesMapper.xml b/src/main/resources/mapper/warehouse/WarehouseGoodsShelvesMapper.xml
new file mode 100644
index 0000000..8493e2d
--- /dev/null
+++ b/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>
diff --git a/src/main/resources/mapper/warehouse/WarehouseGoodsShelvesRowcolMapper.xml b/src/main/resources/mapper/warehouse/WarehouseGoodsShelvesRowcolMapper.xml
new file mode 100644
index 0000000..87dfa32
--- /dev/null
+++ b/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>
diff --git a/src/main/resources/mapper/warehouse/WarehouseMapper.xml b/src/main/resources/mapper/warehouse/WarehouseMapper.xml
new file mode 100644
index 0000000..dd45695
--- /dev/null
+++ b/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>
diff --git a/src/main/resources/mybatis/mybatis-config.xml b/src/main/resources/mybatis/mybatis-config.xml
index 4b8c496..ee4d2a1 100644
--- a/src/main/resources/mybatis/mybatis-config.xml
+++ b/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>
--
Gitblit v1.9.3