From a47e9ad0f8563116afc07817eecbf488545af6b2 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 17 Feb 2024 21:47:22 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=202.0.1=20=E7=89=88=E6=9C=AC=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/enums/BpmnModelConstants.java | 22 -- .../api/listener/BpmResultListenerApi.java | 27 -- .../dto/BpmResultListenerRespDTO.java | 32 -- .../BpmProcessInstanceCopyController.java | 77 ----- .../BpmProcessInstanceCopyCreateReqVO.java | 20 -- .../listener/BpmServiceResultListener.java | 36 -- .../core/handler/MultiInstanceHandler.java | 76 ----- .../cc/BpmProcessInstanceCopyService.java | 40 --- .../cc/BpmProcessInstanceCopyServiceImpl.java | 139 -------- .../admin/bi/CrmBiRankController.http | 9 - .../admin/bi/CrmBiRankController.java | 87 ----- .../admin/bi/vo/CrmBiRanKRespVO.java | 29 -- .../admin/bi/vo/CrmBiRankReqVO.java | 35 -- .../customer/vo/CrmCustomerImportExcelVO.java | 71 ---- .../customer/vo/CrmCustomerImportReqVO.java | 25 -- .../customer/vo/CrmCustomerImportRespVO.java | 24 -- .../operatelog/CrmOperateLogController.java | 64 ---- .../operatelog/vo/CrmOperateLogPageReqVO.java | 27 -- .../operatelog/vo/CrmOperateLogV2RespVO.java | 44 --- .../contract/CrmContractProductDO.java | 65 ---- .../crm/dal/mysql/bi/CrmBiRankingMapper.java | 81 ----- .../contract/CrmContractProductMapper.java | 32 -- .../customer/CrmCustomerAutoPutPoolJob.java | 27 -- .../yudao/module/crm/job/package-info.java | 4 - .../crm/service/bi/CrmBiRankingService.java | 80 ----- .../service/bi/CrmBiRankingServiceImpl.java | 134 -------- .../bo/CrmBusinessUpdateProductReqBO.java | 49 --- .../listener/CrmContractResultListener.java | 32 -- .../customer/bo/CrmCustomerCreateReqBO.java | 125 ------- .../followup/bo/CrmFollowUpCreateReqBO.java | 78 ----- .../mapper/bi/CrmBiRankingMapper.xml | 126 ------- yudao-module-erp/pom.xml | 24 -- yudao-module-erp/yudao-module-erp-api/pom.xml | 33 -- .../yudao/module/erp/api/package-info.java | 4 - .../module/erp/enums/DictTypeConstants.java | 13 - .../module/erp/enums/ErpAuditStatus.java | 39 --- .../module/erp/enums/ErrorCodeConstants.java | 168 ---------- .../module/erp/enums/LogRecordConstants.java | 12 - .../erp/enums/common/ErpBizTypeEnum.java | 43 --- .../stock/ErpStockRecordBizTypeEnum.java | 63 ---- yudao-module-erp/yudao-module-erp-biz/pom.xml | 77 ----- .../admin/finance/ErpAccountController.java | 116 ------- .../finance/ErpFinancePaymentController.java | 153 --------- .../finance/ErpFinanceReceiptController.java | 153 --------- .../vo/account/ErpAccountPageReqVO.java | 24 -- .../finance/vo/account/ErpAccountRespVO.java | 50 --- .../vo/account/ErpAccountSaveReqVO.java | 36 -- .../payment/ErpFinancePaymentPageReqVO.java | 48 --- .../vo/payment/ErpFinancePaymentRespVO.java | 97 ------ .../payment/ErpFinancePaymentSaveReqVO.java | 74 ---- .../receipt/ErpFinanceReceiptPageReqVO.java | 48 --- .../vo/receipt/ErpFinanceReceiptRespVO.java | 97 ------ .../receipt/ErpFinanceReceiptSaveReqVO.java | 74 ---- .../product/ErpProductCategoryController.java | 101 ------ .../admin/product/ErpProductController.java | 105 ------ .../product/ErpProductUnitController.java | 102 ------ .../category/ErpProductCategoryListReqVO.java | 16 - .../vo/category/ErpProductCategoryRespVO.java | 47 --- .../category/ErpProductCategorySaveReqVO.java | 35 -- .../vo/product/ErpProductPageReqVO.java | 27 -- .../product/vo/product/ErpProductRespVO.java | 76 ----- .../product/vo/product/ProductSaveReqVO.java | 58 ---- .../vo/unit/ErpProductUnitPageReqVO.java | 21 -- .../product/vo/unit/ErpProductUnitRespVO.java | 34 -- .../vo/unit/ErpProductUnitSaveReqVO.java | 26 -- .../purchase/ErpPurchaseInController.java | 165 --------- .../purchase/ErpPurchaseOrderController.java | 164 --------- .../purchase/ErpPurchaseReturnController.java | 165 --------- .../admin/purchase/ErpSupplierController.java | 102 ------ .../vo/in/ErpPurchaseInPageReqVO.java | 61 ---- .../purchase/vo/in/ErpPurchaseInRespVO.java | 145 -------- .../vo/in/ErpPurchaseInSaveReqVO.java | 81 ----- .../vo/order/ErpPurchaseOrderPageReqVO.java | 80 ----- .../vo/order/ErpPurchaseOrderRespVO.java | 152 --------- .../vo/order/ErpPurchaseOrderSaveReqVO.java | 73 ---- .../returns/ErpPurchaseReturnPageReqVO.java | 61 ---- .../vo/returns/ErpPurchaseReturnRespVO.java | 145 -------- .../returns/ErpPurchaseReturnSaveReqVO.java | 81 ----- .../vo/supplier/ErpSupplierPageReqVO.java | 24 -- .../vo/supplier/ErpSupplierRespVO.java | 84 ----- .../vo/supplier/ErpSupplierSaveReqVO.java | 71 ---- .../admin/sale/ErpCustomerController.java | 102 ------ .../admin/sale/ErpSaleOrderController.java | 165 --------- .../admin/sale/ErpSaleOutController.java | 165 --------- .../admin/sale/ErpSaleReturnController.java | 165 --------- .../vo/customer/ErpCustomerPageReqVO.java | 28 -- .../sale/vo/customer/ErpCustomerRespVO.java | 84 ----- .../vo/customer/ErpCustomerSaveReqVO.java | 61 ---- .../sale/vo/order/ErpSaleOrderPageReqVO.java | 80 ----- .../sale/vo/order/ErpSaleOrderRespVO.java | 155 --------- .../sale/vo/order/ErpSaleOrderSaveReqVO.java | 76 ----- .../sale/vo/out/ErpSaleOutPageReqVO.java | 61 ---- .../admin/sale/vo/out/ErpSaleOutRespVO.java | 148 -------- .../sale/vo/out/ErpSaleOutSaveReqVO.java | 84 ----- .../vo/returns/ErpSaleReturnPageReqVO.java | 61 ---- .../sale/vo/returns/ErpSaleReturnRespVO.java | 148 -------- .../vo/returns/ErpSaleReturnSaveReqVO.java | 84 ----- .../admin/stock/ErpStockCheckController.java | 149 --------- .../admin/stock/ErpStockController.java | 112 ------- .../admin/stock/ErpStockInController.java | 165 --------- .../admin/stock/ErpStockMoveController.java | 160 --------- .../admin/stock/ErpStockOutController.java | 165 --------- .../admin/stock/ErpStockRecordController.java | 105 ------ .../admin/stock/ErpWarehouseController.java | 116 ------- .../vo/check/ErpStockCheckPageReqVO.java | 45 --- .../stock/vo/check/ErpStockCheckRespVO.java | 111 ------ .../vo/check/ErpStockCheckSaveReqVO.java | 69 ---- .../stock/vo/in/ErpStockInPageReqVO.java | 48 --- .../admin/stock/vo/in/ErpStockInRespVO.java | 110 ------ .../stock/vo/in/ErpStockInSaveReqVO.java | 64 ---- .../stock/vo/move/ErpStockMovePageReqVO.java | 45 --- .../stock/vo/move/ErpStockMoveRespVO.java | 107 ------ .../stock/vo/move/ErpStockMoveSaveReqVO.java | 77 ----- .../stock/vo/out/ErpStockOutPageReqVO.java | 48 --- .../admin/stock/vo/out/ErpStockOutRespVO.java | 110 ------ .../stock/vo/out/ErpStockOutSaveReqVO.java | 64 ---- .../vo/record/ErpStockRecordPageReqVO.java | 36 -- .../stock/vo/record/ErpStockRecordRespVO.java | 87 ----- .../stock/vo/stock/ErpStockPageReqVO.java | 21 -- .../admin/stock/vo/stock/ErpStockRespVO.java | 49 --- .../vo/warehouse/ErpWarehousePageReqVO.java | 24 -- .../vo/warehouse/ErpWarehouseRespVO.java | 64 ---- .../vo/warehouse/ErpWarehouseSaveReqVO.java | 47 --- .../module/erp/controller/package-info.java | 6 - .../dal/dataobject/finance/ErpAccountDO.java | 56 ---- .../finance/ErpFinancePaymentDO.java | 86 ----- .../finance/ErpFinancePaymentItemDO.java | 75 ----- .../finance/ErpFinanceReceiptDO.java | 86 ----- .../finance/ErpFinanceReceiptItemDO.java | 75 ----- .../product/ErpProductCategoryDO.java | 54 --- .../dal/dataobject/product/ErpProductDO.java | 86 ----- .../dataobject/product/ErpProductUnitDO.java | 39 --- .../dataobject/purchase/ErpPurchaseInDO.java | 122 ------- .../purchase/ErpPurchaseInItemDO.java | 95 ------ .../purchase/ErpPurchaseOrderDO.java | 115 ------- .../purchase/ErpPurchaseOrderItemDO.java | 93 ------ .../purchase/ErpPurchaseReturnDO.java | 122 ------- .../purchase/ErpPurchaseReturnItemDO.java | 95 ------ .../dataobject/purchase/ErpSupplierDO.java | 90 ----- .../dal/dataobject/sale/ErpCustomerDO.java | 90 ----- .../dal/dataobject/sale/ErpSaleOrderDO.java | 121 ------- .../dataobject/sale/ErpSaleOrderItemDO.java | 93 ------ .../erp/dal/dataobject/sale/ErpSaleOutDO.java | 128 ------- .../dal/dataobject/sale/ErpSaleOutItemDO.java | 96 ------ .../dal/dataobject/sale/ErpSaleReturnDO.java | 128 ------- .../dataobject/sale/ErpSaleReturnItemDO.java | 95 ------ .../dal/dataobject/stock/ErpStockCheckDO.java | 63 ---- .../dataobject/stock/ErpStockCheckItemDO.java | 83 ----- .../erp/dal/dataobject/stock/ErpStockDO.java | 49 --- .../dal/dataobject/stock/ErpStockInDO.java | 70 ---- .../dataobject/stock/ErpStockInItemDO.java | 73 ---- .../dal/dataobject/stock/ErpStockMoveDO.java | 63 ---- .../dataobject/stock/ErpStockMoveItemDO.java | 79 ----- .../dal/dataobject/stock/ErpStockOutDO.java | 69 ---- .../dataobject/stock/ErpStockOutItemDO.java | 73 ---- .../dataobject/stock/ErpStockRecordDO.java | 82 ----- .../dal/dataobject/stock/ErpWarehouseDO.java | 70 ---- .../dal/mysql/finance/ErpAccountMapper.java | 36 -- .../finance/ErpFinancePaymentItemMapper.java | 44 --- .../finance/ErpFinancePaymentMapper.java | 48 --- .../finance/ErpFinanceReceiptItemMapper.java | 44 --- .../finance/ErpFinanceReceiptMapper.java | 48 --- .../product/ErpProductCategoryMapper.java | 34 -- .../dal/mysql/product/ErpProductMapper.java | 40 --- .../mysql/product/ErpProductUnitMapper.java | 35 -- .../purchase/ErpPurchaseInItemMapper.java | 56 ---- .../mysql/purchase/ErpPurchaseInMapper.java | 70 ---- .../purchase/ErpPurchaseOrderItemMapper.java | 30 -- .../purchase/ErpPurchaseOrderMapper.java | 75 ----- .../purchase/ErpPurchaseReturnItemMapper.java | 56 ---- .../purchase/ErpPurchaseReturnMapper.java | 70 ---- .../dal/mysql/purchase/ErpSupplierMapper.java | 32 -- .../erp/dal/mysql/sale/ErpCustomerMapper.java | 32 -- .../mysql/sale/ErpSaleOrderItemMapper.java | 30 -- .../dal/mysql/sale/ErpSaleOrderMapper.java | 76 ----- .../dal/mysql/sale/ErpSaleOutItemMapper.java | 56 ---- .../erp/dal/mysql/sale/ErpSaleOutMapper.java | 70 ---- .../mysql/sale/ErpSaleReturnItemMapper.java | 56 ---- .../dal/mysql/sale/ErpSaleReturnMapper.java | 71 ---- .../mysql/stock/ErpStockCheckItemMapper.java | 30 -- .../dal/mysql/stock/ErpStockCheckMapper.java | 46 --- .../dal/mysql/stock/ErpStockInItemMapper.java | 30 -- .../erp/dal/mysql/stock/ErpStockInMapper.java | 47 --- .../erp/dal/mysql/stock/ErpStockMapper.java | 64 ---- .../mysql/stock/ErpStockMoveItemMapper.java | 30 -- .../dal/mysql/stock/ErpStockMoveMapper.java | 46 --- .../mysql/stock/ErpStockOutItemMapper.java | 30 -- .../dal/mysql/stock/ErpStockOutMapper.java | 47 --- .../dal/mysql/stock/ErpStockRecordMapper.java | 28 -- .../dal/mysql/stock/ErpWarehouseMapper.java | 35 -- .../erp/dal/redis/RedisKeyConstants.java | 18 - .../erp/dal/redis/no/ErpNoRedisDAO.java | 96 ------ .../module/erp/framework/package-info.java | 6 - .../web/config/ErpWebConfiguration.java | 24 -- .../erp/framework/web/package-info.java | 4 - .../yudao/module/erp/package-info.java | 10 - .../service/finance/ErpAccountService.java | 102 ------ .../finance/ErpAccountServiceImpl.java | 112 ------- .../finance/ErpFinancePaymentService.java | 84 ----- .../finance/ErpFinancePaymentServiceImpl.java | 273 --------------- .../finance/ErpFinanceReceiptService.java | 84 ----- .../finance/ErpFinanceReceiptServiceImpl.java | 273 --------------- .../product/ErpProductCategoryService.java | 77 ----- .../ErpProductCategoryServiceImpl.java | 149 --------- .../service/product/ErpProductService.java | 111 ------ .../product/ErpProductServiceImpl.java | 147 -------- .../product/ErpProductUnitService.java | 86 ----- .../product/ErpProductUnitServiceImpl.java | 111 ------ .../purchase/ErpPurchaseInService.java | 101 ------ .../purchase/ErpPurchaseInServiceImpl.java | 308 ----------------- .../purchase/ErpPurchaseOrderService.java | 110 ------ .../purchase/ErpPurchaseOrderServiceImpl.java | 295 ---------------- .../purchase/ErpPurchaseReturnService.java | 101 ------ .../ErpPurchaseReturnServiceImpl.java | 304 ----------------- .../service/purchase/ErpSupplierService.java | 94 ------ .../purchase/ErpSupplierServiceImpl.java | 94 ------ .../erp/service/sale/ErpCustomerService.java | 94 ------ .../service/sale/ErpCustomerServiceImpl.java | 97 ------ .../erp/service/sale/ErpSaleOrderService.java | 110 ------ .../service/sale/ErpSaleOrderServiceImpl.java | 307 ----------------- .../erp/service/sale/ErpSaleOutService.java | 102 ------ .../service/sale/ErpSaleOutServiceImpl.java | 316 ------------------ .../service/sale/ErpSaleReturnService.java | 101 ------ .../sale/ErpSaleReturnServiceImpl.java | 316 ------------------ .../service/stock/ErpStockCheckService.java | 84 ----- .../stock/ErpStockCheckServiceImpl.java | 232 ------------- .../erp/service/stock/ErpStockInService.java | 84 ----- .../service/stock/ErpStockInServiceImpl.java | 228 ------------- .../service/stock/ErpStockMoveService.java | 84 ----- .../stock/ErpStockMoveServiceImpl.java | 229 ------------- .../erp/service/stock/ErpStockOutService.java | 84 ----- .../service/stock/ErpStockOutServiceImpl.java | 228 ------------- .../service/stock/ErpStockRecordService.java | 39 --- .../stock/ErpStockRecordServiceImpl.java | 53 --- .../erp/service/stock/ErpStockService.java | 61 ---- .../service/stock/ErpStockServiceImpl.java | 89 ----- .../service/stock/ErpWarehouseService.java | 102 ------ .../stock/ErpWarehouseServiceImpl.java | 126 ------- .../stock/bo/ErpStockRecordCreateReqBO.java | 59 ---- .../mapper/finance/ErpAccountMapper.xml | 12 - .../mapper/product/ErpProductUnitMapper.xml | 12 - .../mapper/sale/ErpCustomerMapper.xml | 12 - .../mapper/stock/ErpWarehouseMapper.xml | 12 - .../mapper/supplier/ErpSupplierMapper.xml | 12 - 244 files changed, 20151 deletions(-) delete mode 100644 yudao-framework/yudao-spring-boot-starter-flowable/src/main/java/cn/iocoder/yudao/framework/flowable/core/enums/BpmnModelConstants.java delete mode 100644 yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/listener/BpmResultListenerApi.java delete mode 100644 yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/listener/dto/BpmResultListenerRespDTO.java delete mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceCopyController.java delete mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCopyCreateReqVO.java delete mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/bpm/listener/BpmServiceResultListener.java delete mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/handler/MultiInstanceHandler.java delete mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/cc/BpmProcessInstanceCopyService.java delete mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/cc/BpmProcessInstanceCopyServiceImpl.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/CrmBiRankController.http delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/CrmBiRankController.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/vo/CrmBiRanKRespVO.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/vo/CrmBiRankReqVO.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerImportExcelVO.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerImportReqVO.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerImportRespVO.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/operatelog/CrmOperateLogController.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/operatelog/vo/CrmOperateLogPageReqVO.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/operatelog/vo/CrmOperateLogV2RespVO.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/contract/CrmContractProductDO.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/bi/CrmBiRankingMapper.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contract/CrmContractProductMapper.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/job/customer/CrmCustomerAutoPutPoolJob.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/job/package-info.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/bi/CrmBiRankingService.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/bi/CrmBiRankingServiceImpl.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/bo/CrmBusinessUpdateProductReqBO.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/listener/CrmContractResultListener.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/bo/CrmCustomerCreateReqBO.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/followup/bo/CrmFollowUpCreateReqBO.java delete mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/bi/CrmBiRankingMapper.xml delete mode 100644 yudao-module-erp/pom.xml delete mode 100644 yudao-module-erp/yudao-module-erp-api/pom.xml delete mode 100644 yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/package-info.java delete mode 100644 yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/DictTypeConstants.java delete mode 100644 yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpAuditStatus.java delete mode 100644 yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java delete mode 100644 yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/LogRecordConstants.java delete mode 100644 yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/common/ErpBizTypeEnum.java delete mode 100644 yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/stock/ErpStockRecordBizTypeEnum.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/pom.xml delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpAccountController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpFinancePaymentController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpFinanceReceiptController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/account/ErpAccountPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/account/ErpAccountRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/account/ErpAccountSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/receipt/ErpFinanceReceiptPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/receipt/ErpFinanceReceiptRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/receipt/ErpFinanceReceiptSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductCategoryController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductUnitController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategoryListReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategoryRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategorySaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ProductSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseInController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseOrderController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseReturnController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpSupplierController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpCustomerController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOrderController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOutController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleReturnController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/customer/ErpCustomerPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/customer/ErpCustomerRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/customer/ErpCustomerSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockCheckController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockMoveController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockRecordController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpWarehouseController.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMovePageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMoveRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMoveSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockPageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehousePageReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehouseRespVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehouseSaveReqVO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/package-info.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpAccountDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentItemDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptItemDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductCategoryDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductUnitDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInItemDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderItemDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnItemDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpSupplierDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpCustomerDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderItemDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutItemDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnItemDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckItemDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInItemDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveItemDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutItemDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockRecordDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpWarehouseDO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpAccountMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinancePaymentItemMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinancePaymentMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinanceReceiptItemMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinanceReceiptMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductCategoryMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductUnitMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInItemMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderItemMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseReturnItemMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseReturnMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpSupplierMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpCustomerMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderItemMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOutItemMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOutMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleReturnItemMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleReturnMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckItemMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInItemMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveItemMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockRecordMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpWarehouseMapper.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/RedisKeyConstants.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/no/ErpNoRedisDAO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/package-info.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/web/config/ErpWebConfiguration.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/web/package-info.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/package-info.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpAccountService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpAccountServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseReturnService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseReturnServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpSupplierService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpSupplierServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpCustomerService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpCustomerServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOutService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOutServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleReturnService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleReturnServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockCheckService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockCheckServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseService.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseServiceImpl.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/bo/ErpStockRecordCreateReqBO.java delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/finance/ErpAccountMapper.xml delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/product/ErpProductUnitMapper.xml delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/sale/ErpCustomerMapper.xml delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/stock/ErpWarehouseMapper.xml delete mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/supplier/ErpSupplierMapper.xml diff --git a/yudao-framework/yudao-spring-boot-starter-flowable/src/main/java/cn/iocoder/yudao/framework/flowable/core/enums/BpmnModelConstants.java b/yudao-framework/yudao-spring-boot-starter-flowable/src/main/java/cn/iocoder/yudao/framework/flowable/core/enums/BpmnModelConstants.java deleted file mode 100644 index c3cce4272c..0000000000 --- a/yudao-framework/yudao-spring-boot-starter-flowable/src/main/java/cn/iocoder/yudao/framework/flowable/core/enums/BpmnModelConstants.java +++ /dev/null @@ -1,22 +0,0 @@ -package cn.iocoder.yudao.framework.flowable.core.enums; - -/** - * 流程常量信息 - */ -public interface BpmnModelConstants { - - String BPMN_FILE_SUFFIX = ".bpmn"; - - /** - * BPMN 中的命名空间 - * - * 这个东西有可能导致无法切换工作流程的实现 - */ - String NAMESPACE = "http://flowable.org/bpmn"; - - /** - * 自定义属性 dataType - */ - String PROCESS_CUSTOM_DATA_TYPE = "dataType"; - -} diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/listener/BpmResultListenerApi.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/listener/BpmResultListenerApi.java deleted file mode 100644 index d519ed9edf..0000000000 --- a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/listener/BpmResultListenerApi.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.iocoder.yudao.module.bpm.api.listener; - -import cn.iocoder.yudao.module.bpm.api.listener.dto.BpmResultListenerRespDTO; - -// TODO @芋艿:后续改成支持 RPC -/** - * 业务流程实例的结果发生变化的监听器 Api - * - * @author HUIHUI - */ -public interface BpmResultListenerApi { - - /** - * 监听的流程定义 Key - * - * @return 返回监听的流程定义 Key - */ - String getProcessDefinitionKey(); - - /** - * 处理事件 - * - * @param event 事件 - */ - void onEvent(BpmResultListenerRespDTO event); - -} diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/listener/dto/BpmResultListenerRespDTO.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/listener/dto/BpmResultListenerRespDTO.java deleted file mode 100644 index 30721785d4..0000000000 --- a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/listener/dto/BpmResultListenerRespDTO.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.iocoder.yudao.module.bpm.api.listener.dto; - -import lombok.Data; - -// TODO @芋艿:后续改成支持 RPC -/** - * 业务流程实例的结果 Response DTO - * - * @author HUIHUI - */ -@Data -public class BpmResultListenerRespDTO { - - /** - * 流程实例的编号 - */ - private String id; - /** - * 流程实例的 key - */ - private String processDefinitionKey; - /** - * 流程实例的结果 - */ - private Integer result; - /** - * 流程实例对应的业务标识 - * 例如说,请假 - */ - private String businessKey; - -} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceCopyController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceCopyController.java deleted file mode 100644 index e1ad107ab0..0000000000 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceCopyController.java +++ /dev/null @@ -1,77 +0,0 @@ -package cn.iocoder.yudao.module.bpm.controller.admin.task; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyCreateReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyMyPageReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyPageItemRespVO; -import cn.iocoder.yudao.module.bpm.convert.cc.BpmProcessInstanceCopyConvert; -import cn.iocoder.yudao.module.bpm.dal.dataobject.cc.BpmProcessInstanceCopyDO; -import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; -import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService; -import cn.iocoder.yudao.module.bpm.service.task.cc.BpmProcessInstanceCopyService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; -import java.util.stream.Stream; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertListByFlatMap; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; - -@Tag(name = "管理后台 - 流程实例抄送") -@RestController -@RequestMapping("/bpm/process-instance/cc") -@Validated -public class BpmProcessInstanceCopyController { - - @Resource - private BpmProcessInstanceCopyService processInstanceCopyService; - @Resource - private BpmProcessInstanceService bpmProcessInstanceService; - - @Resource - private AdminUserApi adminUserApi; - - @Resource - private BpmTaskService bpmTaskService; - - @PostMapping("/create") - @Operation(summary = "抄送流程") - @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:create')") - public CommonResult createProcessInstanceCopy(@Valid @RequestBody BpmProcessInstanceCopyCreateReqVO createReqVO) { - processInstanceCopyService.createProcessInstanceCopy(getLoginUserId(), createReqVO); - return success(true); - } - - @GetMapping("/my-page") - @Operation(summary = "获得抄送流程分页列表") - @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:query')") - public CommonResult> getProcessInstanceCopyPage( - @Valid BpmProcessInstanceCopyMyPageReqVO pageReqVO) { - PageResult pageResult = processInstanceCopyService.getMyProcessInstanceCopyPage(getLoginUserId(), pageReqVO); - if (CollUtil.isEmpty(pageResult.getList())) { - return success(new PageResult<>(pageResult.getTotal())); - } - - // 拼接返回 - Map taskNameMap = bpmTaskService.getTaskNameByTaskIds( - convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getTaskId)); - Map processNameMap = bpmProcessInstanceService.getProcessInstanceNameMap( - convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getProcessInstanceId)); - Map userMap = adminUserApi.getUserMap(convertListByFlatMap(pageResult.getList(), - copy -> Stream.of(copy.getStartUserId(), Long.parseLong(copy.getCreator())))); - return success(BpmProcessInstanceCopyConvert.INSTANCE.convertPage(pageResult, taskNameMap, processNameMap, userMap)); - } - -} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCopyCreateReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCopyCreateReqVO.java deleted file mode 100644 index 3a1b1d45c2..0000000000 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCopyCreateReqVO.java +++ /dev/null @@ -1,20 +0,0 @@ -package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotEmpty; -import lombok.Data; - -@Schema(description = "管理后台 - 流程实例抄送的创建 Request VO") -@Data -public class BpmProcessInstanceCopyCreateReqVO { - - @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @NotEmpty(message = "任务编号不能为空") - private String taskId; - - @Schema(description = "抄送原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "请帮忙审查下!") - @NotBlank(message = "抄送原因不能为空") - private String reason; - -} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/bpm/listener/BpmServiceResultListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/bpm/listener/BpmServiceResultListener.java deleted file mode 100644 index 34a045a232..0000000000 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/bpm/listener/BpmServiceResultListener.java +++ /dev/null @@ -1,36 +0,0 @@ -package cn.iocoder.yudao.module.bpm.framework.bpm.listener; - -import cn.hutool.core.util.StrUtil; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.bpm.api.listener.BpmResultListenerApi; -import cn.iocoder.yudao.module.bpm.api.listener.dto.BpmResultListenerRespDTO; -import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEvent; -import jakarta.annotation.Resource; -import org.springframework.context.ApplicationListener; -import org.springframework.stereotype.Component; - -import java.util.List; - -// TODO @芋艿:后续改成支持 RPC -/** - * 业务流程结果监听器实现类 - * - * @author HUIHUI - */ -@Component -public class BpmServiceResultListener implements ApplicationListener { - - @Resource - private List bpmResultListenerApis; - - @Override - public final void onApplicationEvent(BpmProcessInstanceResultEvent event) { - bpmResultListenerApis.forEach(bpmResultListenerApi -> { - if (!StrUtil.equals(event.getProcessDefinitionKey(), bpmResultListenerApi.getProcessDefinitionKey())) { - return; - } - bpmResultListenerApi.onEvent(BeanUtils.toBean(event, BpmResultListenerRespDTO.class)); - }); - } - -} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/handler/MultiInstanceHandler.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/handler/MultiInstanceHandler.java deleted file mode 100644 index ee81a9cf46..0000000000 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/handler/MultiInstanceHandler.java +++ /dev/null @@ -1,76 +0,0 @@ -package cn.iocoder.yudao.module.bpm.framework.flowable.core.handler; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.iocoder.yudao.framework.flowable.core.enums.BpmnModelConstants; -import cn.iocoder.yudao.module.system.api.permission.PermissionApi; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import jakarta.annotation.Resource; -import lombok.AllArgsConstructor; -import org.flowable.bpmn.model.FlowElement; -import org.flowable.bpmn.model.UserTask; -import org.flowable.engine.delegate.DelegateExecution; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; - -// TODO @芋艿:bpmn 分配人融合时,需要搞下这块; -/** - * 多实例处理类 - */ -@AllArgsConstructor -@Component("multiInstanceHandler") -public class MultiInstanceHandler { - - @Resource - private AdminUserApi userApi; - - @Resource - private PermissionApi permissionApi; - - /** - * 流程发起人那种情况不需要处理, - * 由 flowable 完成 - * - * @param execution flowable的执行对象 - * @return 用户ID - */ - public Set getUserIds(DelegateExecution execution) { - Set candidateUserIds = new LinkedHashSet<>(); - FlowElement flowElement = execution.getCurrentFlowElement(); - if (ObjectUtil.isNotEmpty(flowElement) && flowElement instanceof UserTask userTask) { - String dataType = userTask.getAttributeValue(BpmnModelConstants.NAMESPACE, BpmnModelConstants.PROCESS_CUSTOM_DATA_TYPE); - if ("USERS".equals(dataType) && CollUtil.isNotEmpty(userTask.getCandidateUsers())) { - // 添加候选用户id - candidateUserIds.addAll(userTask.getCandidateUsers()); - } else if (CollUtil.isNotEmpty(userTask.getCandidateGroups())) { - // 获取组的ID,角色ID集合或部门ID集合 - List groups = userTask.getCandidateGroups().stream() - // 例如部门DEPT100,100才是部门id - .map(item -> Long.parseLong(item.substring(4))) - .collect(Collectors.toList()); - List userIds = new ArrayList<>(); - if ("ROLES".equals(dataType)) { - // 通过角色id,获取所有用户id集合 - Set userRoleIdListByRoleIds = permissionApi.getUserRoleIdListByRoleIds(groups); - userIds = new ArrayList<>(userRoleIdListByRoleIds); - } else if ("DEPTS".equals(dataType)) { - // 通过部门id,获取所有用户id集合 - List userListByDeptIds = userApi.getUserListByDeptIds(groups); - userIds = convertList(userListByDeptIds, AdminUserRespDTO::getId); - } - // 添加候选用户id - userIds.forEach(id -> candidateUserIds.add(String.valueOf(id))); - } - } - return candidateUserIds; - } - -} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/cc/BpmProcessInstanceCopyService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/cc/BpmProcessInstanceCopyService.java deleted file mode 100644 index 208749a576..0000000000 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/cc/BpmProcessInstanceCopyService.java +++ /dev/null @@ -1,40 +0,0 @@ -package cn.iocoder.yudao.module.bpm.service.task.cc; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyCreateReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyMyPageReqVO; -import cn.iocoder.yudao.module.bpm.dal.dataobject.cc.BpmProcessInstanceCopyDO; -import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfo; - -/** - * 流程抄送 Service 接口 - * - * 现在是在审批的时候进行流程抄送 - */ -public interface BpmProcessInstanceCopyService { - - // TODO 芋艿:这块要 review 下;思考下~~ - /** - * 抄送 - * @param sourceInfo 抄送源信息,方便抄送处理 - * @return - */ - boolean makeCopy(BpmCandidateSourceInfo sourceInfo); - - /** - * 流程实例的抄送 - * - * @param userId 当前登录用户 - * @param createReqVO 创建的抄送请求 - */ - void createProcessInstanceCopy(Long userId, BpmProcessInstanceCopyCreateReqVO createReqVO); - - /** - * 抄送的流程的分页 - * @param userId 当前登录用户 - * @param pageReqVO 分页请求 - * @return 抄送的分页结果 - */ - PageResult getMyProcessInstanceCopyPage(Long userId, - BpmProcessInstanceCopyMyPageReqVO pageReqVO); -} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/cc/BpmProcessInstanceCopyServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/cc/BpmProcessInstanceCopyServiceImpl.java deleted file mode 100644 index 50d042cdc8..0000000000 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/cc/BpmProcessInstanceCopyServiceImpl.java +++ /dev/null @@ -1,139 +0,0 @@ -package cn.iocoder.yudao.module.bpm.service.task.cc; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyCreateReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyMyPageReqVO; -import cn.iocoder.yudao.module.bpm.dal.dataobject.cc.BpmProcessInstanceCopyDO; -import cn.iocoder.yudao.module.bpm.dal.mysql.cc.BpmProcessInstanceCopyMapper; -import cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants; -import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfo; -import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfoProcessorChain; -import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; -import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService; -import cn.iocoder.yudao.module.bpm.service.task.cc.dto.BpmDelegateExecutionDTO; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.flowable.engine.RuntimeService; -import org.flowable.engine.delegate.DelegateExecution; -import org.flowable.engine.runtime.ProcessInstance; -import org.flowable.task.api.Task; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; - -/** - * 流程抄送 Service 实现类 - * - * @author kyle - */ -@Service -@Validated -@Slf4j -public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopyService { - - @Resource - private BpmProcessInstanceCopyMapper processInstanceCopyMapper; - - @Resource - private RuntimeService runtimeService; - - @Resource - private BpmCandidateSourceInfoProcessorChain processorChain; - - @Resource - @Lazy - private BpmTaskService bpmTaskService; - @Resource - @Lazy - private BpmProcessInstanceService bpmProcessInstanceService; - - @Override - public boolean makeCopy(BpmCandidateSourceInfo sourceInfo) { - if (null == sourceInfo) { - return false; - } - - Task task = bpmTaskService.getTask(sourceInfo.getTaskId()); - if (ObjectUtil.isNull(task)) { - return false; - } - String processInstanceId = task.getProcessInstanceId(); - if (StrUtil.isBlank(processInstanceId)) { - return false; - } - DelegateExecution executionEntity = new BpmDelegateExecutionDTO(processInstanceId); - Set ccCandidates = processorChain.calculateTaskCandidateUsers(executionEntity, sourceInfo); - if (CollUtil.isEmpty(ccCandidates)) { - log.warn("相关抄送人不存在 {}", sourceInfo.getTaskId()); - return false; - } else { - BpmProcessInstanceCopyDO copyDO = new BpmProcessInstanceCopyDO(); - // 调用 - // 设置任务id - copyDO.setTaskId(sourceInfo.getTaskId()); - copyDO.setTaskName(task.getName()); - copyDO.setProcessInstanceId(processInstanceId); - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() - .processInstanceId(processInstanceId) - .singleResult(); - if (null == processInstance) { - log.warn("相关流程实例不存在 {}", sourceInfo.getTaskId()); - return false; - } - copyDO.setStartUserId(Long.parseLong(processInstance.getStartUserId())); - copyDO.setProcessInstanceName(processInstance.getName()); - copyDO.setCategory(processInstance.getProcessDefinitionCategory()); - copyDO.setReason(sourceInfo.getReason()); - copyDO.setCreator(sourceInfo.getCreator()); - copyDO.setCreateTime(LocalDateTime.now()); - List copyList = new ArrayList<>(ccCandidates.size()); - for (Long userId : ccCandidates) { - BpmProcessInstanceCopyDO copy = BeanUtil.copyProperties(copyDO, BpmProcessInstanceCopyDO.class); - copy.setUserId(userId); - copyList.add(copy); - } - return processInstanceCopyMapper.insertBatch(copyList); - } - } - - @Override - public void createProcessInstanceCopy(Long userId, BpmProcessInstanceCopyCreateReqVO reqVO) { - // 1.1 校验任务存在 - Task task = bpmTaskService.getTask(reqVO.getTaskId()); - if (ObjectUtil.isNull(task)) { - throw exception(ErrorCodeConstants.TASK_NOT_EXISTS); - } - // 1.2 校验流程存在 - String processInstanceId = task.getProcessInstanceId(); - ProcessInstance processInstance = bpmProcessInstanceService.getProcessInstance(processInstanceId); - if (processInstance == null) { - log.warn("[createProcessInstanceCopy][任务({}) 对应的流程不存在]", reqVO.getTaskId()); - throw exception(ErrorCodeConstants.PROCESS_INSTANCE_NOT_EXISTS); - } - - // 2. 创建抄送流程 - BpmProcessInstanceCopyDO copy = new BpmProcessInstanceCopyDO() - .setTaskId(reqVO.getTaskId()).setTaskName(task.getName()) - .setProcessInstanceId(processInstanceId).setStartUserId(Long.valueOf(processInstance.getStartUserId())) - .setProcessInstanceName(processInstance.getName()).setCategory(processInstance.getProcessDefinitionCategory()) - .setReason(reqVO.getReason()); - processInstanceCopyMapper.insert(copy); - } - - @Override - public PageResult getMyProcessInstanceCopyPage(Long userId, BpmProcessInstanceCopyMyPageReqVO pageReqVO) { - return processInstanceCopyMapper.selectPage(userId, pageReqVO); - } - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/CrmBiRankController.http b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/CrmBiRankController.http deleted file mode 100644 index b9e9a4edf8..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/CrmBiRankController.http +++ /dev/null @@ -1,9 +0,0 @@ -### 合同金额排行榜 -GET {{baseUrl}}/crm/bi-rank/get-contract-price-rank?deptId=100×[0]=2022-12-12 00:00:00×[1]=2024-12-12 23:59:59 -Authorization: Bearer {{token}} -tenant-id: {{adminTenentId}} - -### 回款金额排行榜 -GET {{baseUrl}}/crm/bi-rank/get-receivable-price-rank?deptId=100×[0]=2022-12-12 00:00:00×[1]=2024-12-12 23:59:59 -Authorization: Bearer {{token}} -tenant-id: {{adminTenentId}} \ No newline at end of file diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/CrmBiRankController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/CrmBiRankController.java deleted file mode 100644 index 21463aed09..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/CrmBiRankController.java +++ /dev/null @@ -1,87 +0,0 @@ -package cn.iocoder.yudao.module.crm.controller.admin.bi; - -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.module.crm.controller.admin.bi.vo.CrmBiRanKRespVO; -import cn.iocoder.yudao.module.crm.controller.admin.bi.vo.CrmBiRankReqVO; -import cn.iocoder.yudao.module.crm.service.bi.CrmBiRankingService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; - - -@Tag(name = "管理后台 - CRM BI 排行榜") -@RestController -@RequestMapping("/crm/bi-rank") -@Validated -public class CrmBiRankController { - - @Resource - private CrmBiRankingService rankingService; - - @GetMapping("/get-contract-price-rank") - @Operation(summary = "获得合同金额排行榜") - @PreAuthorize("@ss.hasPermission('crm:bi-rank:query')") - public CommonResult> getContractPriceRank(@Valid CrmBiRankReqVO rankingReqVO) { - return success(rankingService.getContractPriceRank(rankingReqVO)); - } - - @GetMapping("/get-receivable-price-rank") - @Operation(summary = "获得回款金额排行榜") - @PreAuthorize("@ss.hasPermission('crm:bi-rank:query')") - public CommonResult> getReceivablePriceRank(@Valid CrmBiRankReqVO rankingReqVO) { - return success(rankingService.getReceivablePriceRank(rankingReqVO)); - } - - @GetMapping("/get-contract-count-rank") - @Operation(summary = "获得签约合同数量排行榜") - @PreAuthorize("@ss.hasPermission('crm:bi-rank:query')") - public CommonResult> getContractCountRank(@Valid CrmBiRankReqVO rankingReqVO) { - return success(rankingService.getContractCountRank(rankingReqVO)); - } - - @GetMapping("/get-product-sales-rank") - @Operation(summary = "获得产品销量排行榜") - @PreAuthorize("@ss.hasPermission('crm:bi-rank:query')") - public CommonResult> getProductSalesRank(@Valid CrmBiRankReqVO rankingReqVO) { - return success(rankingService.getProductSalesRank(rankingReqVO)); - } - - @GetMapping("/get-customer-count-rank") - @Operation(summary = "获得新增客户数排行榜") - @PreAuthorize("@ss.hasPermission('crm:bi-rank:query')") - public CommonResult> getCustomerCountRank(@Valid CrmBiRankReqVO rankingReqVO) { - return success(rankingService.getCustomerCountRank(rankingReqVO)); - } - - @GetMapping("/get-contacts-count-rank") - @Operation(summary = "获得新增联系人数排行榜") - @PreAuthorize("@ss.hasPermission('crm:bi-rank:query')") - public CommonResult> getContactsCountRank(@Valid CrmBiRankReqVO rankingReqVO) { - return success(rankingService.getContactsCountRank(rankingReqVO)); - } - - @GetMapping("/get-follow-count-rank") - @Operation(summary = "获得跟进次数排行榜") - @PreAuthorize("@ss.hasPermission('crm:bi-rank:query')") - public CommonResult> getFollowCountRank(@Valid CrmBiRankReqVO rankingReqVO) { - return success(rankingService.getFollowCountRank(rankingReqVO)); - } - - @GetMapping("/get-follow-customer-count-rank") - @Operation(summary = "获得跟进客户数排行榜") - @PreAuthorize("@ss.hasPermission('crm:bi-rank:query')") - public CommonResult> getFollowCustomerCountRank(@Valid CrmBiRankReqVO rankingReqVO) { - return success(rankingService.getFollowCustomerCountRank(rankingReqVO)); - } - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/vo/CrmBiRanKRespVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/vo/CrmBiRanKRespVO.java deleted file mode 100644 index 404ee33520..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/vo/CrmBiRanKRespVO.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.iocoder.yudao.module.crm.controller.admin.bi.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - - -@Schema(description = "管理后台 - CRM BI 排行榜 Response VO") -@Data -public class CrmBiRanKRespVO { - - @Schema(description = "负责人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Long ownerUserId; - - @Schema(description = "姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private String nickname; - - @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private String deptName; - - /** - * 数量是个特别“抽象”的概念,在不同排行下,代表不同含义 - * - * 1. 金额:合同金额排行、回款金额排行 - * 2. 个数:签约合同排行、产品销量排行、产品销量排行、新增客户数排行、新增联系人排行、跟进次数排行、跟进客户数排行 - */ - @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Integer count; - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/vo/CrmBiRankReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/vo/CrmBiRankReqVO.java deleted file mode 100644 index 6d36f6d6f7..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/bi/vo/CrmBiRankReqVO.java +++ /dev/null @@ -1,35 +0,0 @@ -package cn.iocoder.yudao.module.crm.controller.admin.bi.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - CRM BI 排行榜 Request VO") -@Data -public class CrmBiRankReqVO { - - @Schema(description = "部门 id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "部门 id 不能为空") - private Long deptId; - - /** - * userIds 目前不用前端传递,目前是方便后端通过 deptId 读取编号后,设置回来 - * - * 后续,可能会支持选择部分用户进行查询 - */ - @Schema(description = "负责人用户 id 集合", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "2") - private List userIds; - - @Schema(description = "时间范围", requiredMode = Schema.RequiredMode.REQUIRED) - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @NotEmpty(message = "时间范围不能为空") - private LocalDateTime[] times; - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerImportExcelVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerImportExcelVO.java deleted file mode 100644 index 4f57564dd2..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerImportExcelVO.java +++ /dev/null @@ -1,71 +0,0 @@ -package cn.iocoder.yudao.module.crm.controller.admin.customer.vo; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; - -import static cn.iocoder.yudao.module.crm.enums.DictTypeConstants.*; - -/** - * 客户 Excel 导入 VO - */ -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 -public class CrmCustomerImportExcelVO { - - @ExcelProperty("客户名称") - private String name; - - // TODO @puhui999:industryId、level、source 字段,可以研究下怎么搞下拉框 - @ExcelProperty(value = "所属行业", converter = DictConvert.class) - @DictFormat(CRM_CUSTOMER_INDUSTRY) - private Integer industryId; - - @ExcelProperty(value = "客户等级", converter = DictConvert.class) - @DictFormat(CRM_CUSTOMER_LEVEL) - private Integer level; - - @ExcelProperty(value = "客户来源", converter = DictConvert.class) - @DictFormat(CRM_CUSTOMER_SOURCE) - private Integer source; - - @ExcelProperty("手机") - private String mobile; - - @ExcelProperty("电话") - private String telephone; - - @ExcelProperty("网址") - private String website; - - @ExcelProperty("QQ") - private String qq; - - @ExcelProperty("微信") - private String wechat; - - @ExcelProperty("邮箱") - private String email; - - @ExcelProperty("客户描述") - private String description; - - @ExcelProperty("备注") - private String remark; - - // TODO @puhui999:需要选择省市区,需要研究下,怎么搞合理点; - @ExcelProperty("地区编号") - private Integer areaId; - - @ExcelProperty("详细地址") - private String detailAddress; - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerImportReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerImportReqVO.java deleted file mode 100644 index a396dc50b0..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerImportReqVO.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.iocoder.yudao.module.crm.controller.admin.customer.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Builder; -import lombok.Data; -import org.springframework.web.multipart.MultipartFile; - -@Schema(description = "管理后台 - 客户导入 Request VO") -@Data -@Builder -public class CrmCustomerImportReqVO { - - @Schema(description = "Excel 文件", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "Excel 文件不能为空") - private MultipartFile file; - - @Schema(description = "是否支持更新", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @NotNull(message = "是否支持更新不能为空") - private Boolean updateSupport; - - @Schema(description = "负责人", example = "1") - private Long ownerUserId; // 为 null 则客户进入公海 - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerImportRespVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerImportRespVO.java deleted file mode 100644 index de35b7b928..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerImportRespVO.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.yudao.module.crm.controller.admin.customer.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; -import lombok.Data; - -import java.util.List; -import java.util.Map; - -@Schema(description = "管理后台 - 客户导入 Response VO") -@Data -@Builder -public class CrmCustomerImportRespVO { - - @Schema(description = "创建成功的客户名数组", requiredMode = Schema.RequiredMode.REQUIRED) - private List createCustomerNames; - - @Schema(description = "更新成功的客户名数组", requiredMode = Schema.RequiredMode.REQUIRED) - private List updateCustomerNames; - - @Schema(description = "导入失败的客户集合,key 为客户名,value 为失败原因", requiredMode = Schema.RequiredMode.REQUIRED) - private Map failureCustomerNames; - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/operatelog/CrmOperateLogController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/operatelog/CrmOperateLogController.java deleted file mode 100644 index 982ad3c0b1..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/operatelog/CrmOperateLogController.java +++ /dev/null @@ -1,64 +0,0 @@ -package cn.iocoder.yudao.module.crm.controller.admin.operatelog; - -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.crm.controller.admin.operatelog.vo.CrmOperateLogPageReqVO; -import cn.iocoder.yudao.module.crm.controller.admin.operatelog.vo.CrmOperateLogV2RespVO; -import cn.iocoder.yudao.module.crm.enums.LogRecordConstants; -import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; -import cn.iocoder.yudao.module.system.api.logger.OperateLogApi; -import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2PageReqDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.HashMap; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.pojo.PageParam.PAGE_SIZE_NONE; -import static cn.iocoder.yudao.module.crm.enums.LogRecordConstants.*; - -@Tag(name = "管理后台 - CRM 操作日志") -@RestController -@RequestMapping("/crm/operate-log") -@Validated -public class CrmOperateLogController { - - @Resource - private OperateLogApi operateLogApi; - - /** - * {@link CrmBizTypeEnum} 与 {@link LogRecordConstants} 的映射关系 - */ - private static final Map BIZ_TYPE_MAP = new HashMap<>(); - - static { - BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_LEADS.getType(), CRM_LEADS_TYPE); - BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_CUSTOMER.getType(), CRM_CUSTOMER_TYPE); - BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_CONTACT.getType(), CRM_CONTACT_TYPE); - BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_BUSINESS.getType(), CRM_BUSINESS_TYPE); - BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_CONTRACT.getType(), CRM_CONTRACT_TYPE); - BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_PRODUCT.getType(), CRM_PRODUCT_TYPE); - BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_RECEIVABLE.getType(), CRM_RECEIVABLE_TYPE); - BIZ_TYPE_MAP.put(CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), CRM_RECEIVABLE_PLAN_TYPE); - } - - @GetMapping("/page") - @Operation(summary = "获得操作日志") - @PreAuthorize("@ss.hasPermission('crm:operate-log:query')") - public CommonResult> getCustomerOperateLog(@Valid CrmOperateLogPageReqVO pageReqVO) { - OperateLogV2PageReqDTO reqDTO = new OperateLogV2PageReqDTO(); - reqDTO.setPageSize(PAGE_SIZE_NONE); // 默认不分页,需要分页需注释 - reqDTO.setBizType(BIZ_TYPE_MAP.get(pageReqVO.getBizType())).setBizId(pageReqVO.getBizId()); - return success(BeanUtils.toBean(operateLogApi.getOperateLogPage(reqDTO), CrmOperateLogV2RespVO.class)); - } - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/operatelog/vo/CrmOperateLogPageReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/operatelog/vo/CrmOperateLogPageReqVO.java deleted file mode 100644 index f49ccb38b2..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/operatelog/vo/CrmOperateLogPageReqVO.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.iocoder.yudao.module.crm.controller.admin.operatelog.vo; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.validation.InEnum; -import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Schema(description = "管理后台 - CRM 操作日志 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class CrmOperateLogPageReqVO extends PageParam { - - @Schema(description = "数据类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @InEnum(CrmBizTypeEnum.class) - @NotNull(message = "数据类型不能为空") - private Integer bizType; - - @Schema(description = "数据编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @NotNull(message = "数据编号不能为空") - private Long bizId; - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/operatelog/vo/CrmOperateLogV2RespVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/operatelog/vo/CrmOperateLogV2RespVO.java deleted file mode 100644 index b3405428fb..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/operatelog/vo/CrmOperateLogV2RespVO.java +++ /dev/null @@ -1,44 +0,0 @@ -package cn.iocoder.yudao.module.crm.controller.admin.operatelog.vo; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - CRM 跟进 Response VO") -@Data -@ExcelIgnoreUnannotated -public class CrmOperateLogV2RespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13563") - private Long id; - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long userId; - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") - private String userName; - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Integer userType; - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13563") - private String type; - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "修改客户") - private String subType; - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13563") - private Long bizId; - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "将什么从什么改为了什么") - private String action; - - @Schema(description = "编号", example = "{orderId: 1}") - private String extra; - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2024-01-01") - private LocalDateTime createTime; - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/contract/CrmContractProductDO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/contract/CrmContractProductDO.java deleted file mode 100644 index bc977c78f3..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/contract/CrmContractProductDO.java +++ /dev/null @@ -1,65 +0,0 @@ -package cn.iocoder.yudao.module.crm.dal.dataobject.contract; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** - * 合同产品关联表 DO - * - * @author HUIHUI - */ -@TableName("crm_contract_product") -@KeySequence("crm_contract_product_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class CrmContractProductDO extends BaseDO { - - /** - * 主键 - */ - @TableId - private Long id; - /** - * 产品编号 - * - * 关联 {@link CrmProductDO#getId()} - */ - private Long productId; - /** - * 合同编号 - * - * 关联 {@link CrmContractDO#getId()} - */ - private Long contractId; - /** - * 产品单价 - */ - private Integer price; - /** - * 销售价格, 单位:分 - */ - private Integer salesPrice; - /** - * 数量 - */ - private Integer count; - /** - * 折扣 - */ - private Integer discountPercent; - /** - * 总计价格(折扣后价格) - * - * TODO @puhui999:可以写下计算公式哈; - */ - private Integer totalPrice; - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/bi/CrmBiRankingMapper.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/bi/CrmBiRankingMapper.java deleted file mode 100644 index 9b71df7b69..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/bi/CrmBiRankingMapper.java +++ /dev/null @@ -1,81 +0,0 @@ -package cn.iocoder.yudao.module.crm.dal.mysql.bi; - -import cn.iocoder.yudao.module.crm.controller.admin.bi.vo.CrmBiRanKRespVO; -import cn.iocoder.yudao.module.crm.controller.admin.bi.vo.CrmBiRankReqVO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * CRM BI 排行榜 Mapper - * - * @author anhaohao - */ -@Mapper -public interface CrmBiRankingMapper { - - /** - * 查询合同金额排行榜 - * - * @param rankReqVO 参数 - * @return 合同金额排行榜 - */ - List selectContractPriceRank(CrmBiRankReqVO rankReqVO); - - /** - * 查询回款金额排行榜 - * - * @param rankReqVO 参数 - * @return 回款金额排行榜 - */ - List selectReceivablePriceRank(CrmBiRankReqVO rankReqVO); - - /** - * 查询签约合同数量排行榜 - * - * @param rankReqVO 参数 - * @return 签约合同数量排行榜 - */ - List selectContractCountRank(CrmBiRankReqVO rankReqVO); - - /** - * 查询产品销量排行榜 - * - * @param rankReqVO 参数 - * @return 产品销量排行榜 - */ - List selectProductSalesRank(CrmBiRankReqVO rankReqVO); - - /** - * 查询新增客户数排行榜 - * - * @param rankReqVO 参数 - * @return 新增客户数排行榜 - */ - List selectCustomerCountRank(CrmBiRankReqVO rankReqVO); - - /** - * 查询联系人数量排行榜 - * - * @param rankReqVO 参数 - * @return 联系人数量排行榜 - */ - List selectContactsCountRank(CrmBiRankReqVO rankReqVO); - - /** - * 查询跟进次数排行榜 - * - * @param rankReqVO 参数 - * @return 跟进次数排行榜 - */ - List selectFollowCountRank(CrmBiRankReqVO rankReqVO); - - /** - * 查询跟进客户数排行榜 - * - * @param rankReqVO 参数 - * @return 跟进客户数排行榜 - */ - List selectFollowCustomerCountRank(CrmBiRankReqVO rankReqVO); - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contract/CrmContractProductMapper.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contract/CrmContractProductMapper.java deleted file mode 100644 index 814024125b..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contract/CrmContractProductMapper.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.iocoder.yudao.module.crm.dal.mysql.contract; - - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractProductDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * 合同产品 Mapper - * - * @author HUIHUI - */ -@Mapper -public interface CrmContractProductMapper extends BaseMapperX { - - // TODO @puhui999:用不到的方法,看看是不是删除哈 - default void deleteByContractId(Long contractId) { // TODO @lzxhqs:第一个方法,和类之间最好空一行; - delete(CrmContractProductDO::getContractId, contractId); - } - - default CrmContractProductDO selectByContractId(Long contractId) { - return selectOne(CrmContractProductDO::getContractId, contractId); - } - - default List selectListByContractId(Long contractId) { - return selectList(new LambdaQueryWrapperX().eq(CrmContractProductDO::getContractId, contractId)); - } - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/job/customer/CrmCustomerAutoPutPoolJob.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/job/customer/CrmCustomerAutoPutPoolJob.java deleted file mode 100644 index 6f5817015c..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/job/customer/CrmCustomerAutoPutPoolJob.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.iocoder.yudao.module.crm.job.customer; - -import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; -import cn.iocoder.yudao.framework.tenant.core.job.TenantJob; -import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Component; - -/** - * 客户自动掉入公海 Job - * - * @author 芋道源码 - */ -@Component -public class CrmCustomerAutoPutPoolJob implements JobHandler { - - @Resource - private CrmCustomerService customerService; - - @Override - @TenantJob - public String execute(String param) { - int count = customerService.autoPutCustomerPool(); - return String.format("掉入公海客户 %s 个", count); - } - -} \ No newline at end of file diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/job/package-info.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/job/package-info.java deleted file mode 100644 index 144f64d02b..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/job/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * TODO 芋艿:临时占位,后续可删除 - */ -package cn.iocoder.yudao.module.crm.job; \ No newline at end of file diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/bi/CrmBiRankingService.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/bi/CrmBiRankingService.java deleted file mode 100644 index 2ff28d3857..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/bi/CrmBiRankingService.java +++ /dev/null @@ -1,80 +0,0 @@ -package cn.iocoder.yudao.module.crm.service.bi; - - -import cn.iocoder.yudao.module.crm.controller.admin.bi.vo.CrmBiRanKRespVO; -import cn.iocoder.yudao.module.crm.controller.admin.bi.vo.CrmBiRankReqVO; - -import java.util.List; - -/** - * CRM BI 排行榜 Service 接口 - * - * @author anhaohao - */ -public interface CrmBiRankingService { - - /** - * 获得合同金额排行榜 - * - * @param rankReqVO 排行参数 - * @return 合同金额排行榜 - */ - List getContractPriceRank(CrmBiRankReqVO rankReqVO); - - /** - * 获得回款金额排行榜 - * - * @param rankReqVO 排行参数 - * @return 回款金额排行榜 - */ - List getReceivablePriceRank(CrmBiRankReqVO rankReqVO); - - /** - * 获得签约合同数量排行榜 - * - * @param rankReqVO 排行参数 - * @return 签约合同数量排行榜 - */ - List getContractCountRank(CrmBiRankReqVO rankReqVO); - - /** - * 获得产品销量排行榜 - * - * @param rankReqVO 排行参数 - * @return 产品销量排行榜 - */ - List getProductSalesRank(CrmBiRankReqVO rankReqVO); - - /** - * 获得新增客户数排行榜 - * - * @param rankReqVO 排行参数 - * @return 新增客户数排行榜 - */ - List getCustomerCountRank(CrmBiRankReqVO rankReqVO); - - /** - * 获得联系人数量排行榜 - * - * @param rankReqVO 排行参数 - * @return 联系人数量排行榜 - */ - List getContactsCountRank(CrmBiRankReqVO rankReqVO); - - /** - * 获得跟进次数排行榜 - * - * @param rankReqVO 排行参数 - * @return 跟进次数排行榜 - */ - List getFollowCountRank(CrmBiRankReqVO rankReqVO); - - /** - * 获得跟进客户数排行榜 - * - * @param rankReqVO 排行参数 - * @return 跟进客户数排行榜 - */ - List getFollowCustomerCountRank(CrmBiRankReqVO rankReqVO); - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/bi/CrmBiRankingServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/bi/CrmBiRankingServiceImpl.java deleted file mode 100644 index 60e1b4ecb2..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/bi/CrmBiRankingServiceImpl.java +++ /dev/null @@ -1,134 +0,0 @@ -package cn.iocoder.yudao.module.crm.service.bi; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.module.crm.controller.admin.bi.vo.CrmBiRanKRespVO; -import cn.iocoder.yudao.module.crm.controller.admin.bi.vo.CrmBiRankReqVO; -import cn.iocoder.yudao.module.crm.dal.mysql.bi.CrmBiRankingMapper; -import cn.iocoder.yudao.module.system.api.dept.DeptApi; -import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.function.Function; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; - -/** - * CRM BI 排行榜 Service 实现类 - * - * @author anhaohao - */ -@Service -@Validated -public class CrmBiRankingServiceImpl implements CrmBiRankingService { - - @Resource - private CrmBiRankingMapper biRankingMapper; - - @Resource - private AdminUserApi adminUserApi; - @Resource - private DeptApi deptApi; - - @Override - public List getContractPriceRank(CrmBiRankReqVO rankReqVO) { - return getRank(rankReqVO, biRankingMapper::selectContractPriceRank); - } - - @Override - public List getReceivablePriceRank(CrmBiRankReqVO rankReqVO) { - return getRank(rankReqVO, biRankingMapper::selectReceivablePriceRank); - } - - @Override - public List getContractCountRank(CrmBiRankReqVO rankReqVO) { - return getRank(rankReqVO, biRankingMapper::selectContractCountRank); - } - - @Override - public List getProductSalesRank(CrmBiRankReqVO rankReqVO) { - return getRank(rankReqVO, biRankingMapper::selectProductSalesRank); - } - - @Override - public List getCustomerCountRank(CrmBiRankReqVO rankReqVO) { - return getRank(rankReqVO, biRankingMapper::selectCustomerCountRank); - } - - @Override - public List getContactsCountRank(CrmBiRankReqVO rankReqVO) { - return getRank(rankReqVO, biRankingMapper::selectContactsCountRank); - } - - @Override - public List getFollowCountRank(CrmBiRankReqVO rankReqVO) { - return getRank(rankReqVO, biRankingMapper::selectFollowCountRank); - } - - @Override - public List getFollowCustomerCountRank(CrmBiRankReqVO rankReqVO) { - return getRank(rankReqVO, biRankingMapper::selectFollowCustomerCountRank); - } - - /** - * 获得排行版数据 - * - * @param rankReqVO 参数 - * @param rankFunction 排行榜方法 - * @return 排行版数据 - */ - private List getRank(CrmBiRankReqVO rankReqVO, Function> rankFunction) { - // 1. 获得用户编号数组 - rankReqVO.setUserIds(getUserIds(rankReqVO.getDeptId())); - if (CollUtil.isEmpty(rankReqVO.getUserIds())) { - return Collections.emptyList(); - } - // 2. 获得排行数据 - List ranks = rankFunction.apply(rankReqVO); - if (CollUtil.isEmpty(ranks)) { - return Collections.emptyList(); - } - ranks.sort(Comparator.comparing(CrmBiRanKRespVO::getCount).reversed()); - // 3. 拼接用户信息 - appendUserInfo(ranks); - return ranks; - } - - /** - * 拼接用户信息(昵称、部门) - * - * @param ranks 排行榜数据 - */ - private void appendUserInfo(List ranks) { - Map userMap = adminUserApi.getUserMap(convertSet(ranks, CrmBiRanKRespVO::getOwnerUserId)); - Map deptMap = deptApi.getDeptMap(convertSet(userMap.values(), AdminUserRespDTO::getDeptId)); - ranks.forEach(rank -> MapUtils.findAndThen(userMap, rank.getOwnerUserId(), user -> { - rank.setNickname(user.getNickname()); - MapUtils.findAndThen(deptMap, user.getDeptId(), dept -> rank.setDeptName(dept.getName())); - })); - } - - /** - * 获得部门下的用户编号数组,包括子部门的 - * - * @param deptId 部门编号 - * @return 用户编号数组 - */ - public List getUserIds(Long deptId) { - // 1. 获得部门列表 - List deptIds = convertList(deptApi.getChildDeptList(deptId), DeptRespDTO::getId); - deptIds.add(deptId); - // 2. 获得用户编号 - return convertList(adminUserApi.getUserListByDeptIds(deptIds), AdminUserRespDTO::getId); - } - -} \ No newline at end of file diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/bo/CrmBusinessUpdateProductReqBO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/bo/CrmBusinessUpdateProductReqBO.java deleted file mode 100644 index 34b2fa3810..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/bo/CrmBusinessUpdateProductReqBO.java +++ /dev/null @@ -1,49 +0,0 @@ -package cn.iocoder.yudao.module.crm.service.business.bo; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * 更新商机商品 Update Req BO - * - * @author HUIHUI - */ -@Data -public class CrmBusinessUpdateProductReqBO { - - /** - * 商机编号 - */ - @NotNull(message = "商机编号不能为空") - private Long id; - - // TODO @芋艿:再想想 - @NotEmpty(message = "产品列表不能为空") - private List productItems; - - @Schema(description = "产品列表") - @Data - @NoArgsConstructor - @AllArgsConstructor - public static class CrmBusinessProductItem { - - @Schema(description = "产品编号", example = "20529") - @NotNull(message = "产品编号不能为空") - private Long id; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "8911") - @NotNull(message = "产品数量不能为空") - private Integer count; - - @Schema(description = "产品折扣") - private Integer discountPercent; - - } - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/listener/CrmContractResultListener.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/listener/CrmContractResultListener.java deleted file mode 100644 index c5ee407bdc..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/listener/CrmContractResultListener.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.iocoder.yudao.module.crm.service.contract.listener; - -import cn.iocoder.yudao.module.bpm.api.listener.BpmResultListenerApi; -import cn.iocoder.yudao.module.bpm.api.listener.dto.BpmResultListenerRespDTO; -import cn.iocoder.yudao.module.crm.service.contract.CrmContractService; -import cn.iocoder.yudao.module.crm.service.contract.CrmContractServiceImpl; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Component; - -// TODO @芋艿:后续改成支持 RPC -/** - * 合同审批的结果的监听器实现类 - * - * @author HUIHUI - */ -@Component -public class CrmContractResultListener implements BpmResultListenerApi { - - @Resource - private CrmContractService contractService; - - @Override - public String getProcessDefinitionKey() { - return CrmContractServiceImpl.CONTRACT_APPROVE; - } - - @Override - public void onEvent(BpmResultListenerRespDTO event) { - contractService.updateContractAuditStatus(event); - } - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/bo/CrmCustomerCreateReqBO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/bo/CrmCustomerCreateReqBO.java deleted file mode 100644 index 6d80b0e4c4..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/bo/CrmCustomerCreateReqBO.java +++ /dev/null @@ -1,125 +0,0 @@ -package cn.iocoder.yudao.module.crm.service.customer.bo; - -import cn.iocoder.yudao.framework.common.validation.Mobile; -import cn.iocoder.yudao.framework.common.validation.Telephone; -import cn.iocoder.yudao.module.crm.enums.DictTypeConstants; -import jakarta.validation.constraints.Email; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * 客户创建 Create Req BO - * - * @author HUIHUI - */ -@Data -public class CrmCustomerCreateReqBO { - - /** - * 客户名称 - */ - @NotEmpty(message = "客户名称不能为空") - private String name; - /** - * 跟进状态 - */ - private Boolean followUpStatus; - /** - * 锁定状态 - */ - private Boolean lockStatus; - /** - * 成交状态 - */ - private Boolean dealStatus; - /** - * 所属行业 - * - * 对应字典 {@link DictTypeConstants#CRM_CUSTOMER_INDUSTRY} - */ - private Integer industryId; - /** - * 客户等级 - * - * 对应字典 {@link DictTypeConstants#CRM_CUSTOMER_LEVEL} - */ - private Integer level; - /** - * 客户来源 - * - * 对应字典 {@link DictTypeConstants#CRM_CUSTOMER_SOURCE} - */ - private Integer source; - - /** - * 手机 - */ - @Mobile - private String mobile; - /** - * 电话 - */ - @Telephone - private String telephone; - /** - * 网址 - */ - private String website; - /** - * QQ - */ - private String qq; - /** - * wechat - */ - private String wechat; - - /** - * 邮箱 - */ - @Email(message = "邮箱格式不正确") - private String email; - - /** - * 客户描述 - */ - @Size(max = 4096, message = "客户描述长度不能超过 4096 个字符") - private String description; - /** - * 备注 - */ - private String remark; - /** - * 负责人的用户编号 - * - * 关联 AdminUserDO 的 id 字段 - */ - private Long ownerUserId; - /** - * 所在地 - * - * 关联 {@link cn.iocoder.yudao.framework.ip.core.Area#getId()} 字段 - */ - private Integer areaId; - /** - * 详细地址 - */ - private String detailAddress; - - /** - * 最后跟进时间 - */ - private LocalDateTime contactLastTime; - /** - * 最后跟进内容 - */ - private String contactLastContent; - /** - * 下次联系时间 - */ - private LocalDateTime contactNextTime; - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/followup/bo/CrmFollowUpCreateReqBO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/followup/bo/CrmFollowUpCreateReqBO.java deleted file mode 100644 index dec219e294..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/followup/bo/CrmFollowUpCreateReqBO.java +++ /dev/null @@ -1,78 +0,0 @@ -package cn.iocoder.yudao.module.crm.service.followup.bo; - -import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessDO; -import cn.iocoder.yudao.module.crm.dal.dataobject.contact.CrmContactDO; -import cn.iocoder.yudao.module.crm.enums.DictTypeConstants; -import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.time.LocalDateTime; -import java.util.List; - -/** - * 跟进信息 Create Req BO - * - * @author HUIHUI - */ -@Data -public class CrmFollowUpCreateReqBO { - - /** - * 数据类型 - * - * 枚举 {@link CrmBizTypeEnum} - */ - @NotNull(message = "数据类型不能为空") - private Integer bizType; - /** - * 数据编号 - * - * 关联 {@link CrmBizTypeEnum} 对应模块 DO 的 id 字段 - */ - @NotNull(message = "数据编号不能为空") - private Long bizId; - - /** - * 跟进类型 - * - * 关联 {@link DictTypeConstants#CRM_FOLLOW_UP_TYPE} 字典 - */ - @NotNull(message = "跟进类型不能为空") - private Integer type; - /** - * 跟进内容 - */ - @NotEmpty(message = "跟进内容不能为空") - private String content; - /** - * 下次联系时间 - */ - @NotNull(message = "下次联系时间不能为空") - private LocalDateTime nextTime; - - /** - * 图片 - */ - private List picUrls; - /** - * 附件 - */ - private List fileUrls; - - /** - * 关联的商机编号数组 - * - * 关联 {@link CrmBusinessDO#getId()} - */ - private List businessIds; - - /** - * 关联的联系人编号数组 - * - * 关联 {@link CrmContactDO#getId()} - */ - private List contactIds; - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/bi/CrmBiRankingMapper.xml b/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/bi/CrmBiRankingMapper.xml deleted file mode 100644 index 10030e0a74..0000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/bi/CrmBiRankingMapper.xml +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/yudao-module-erp/pom.xml b/yudao-module-erp/pom.xml deleted file mode 100644 index 22fe0eea4d..0000000000 --- a/yudao-module-erp/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - cn.iocoder.boot - yudao - ${revision} - - - yudao-module-erp-api - yudao-module-erp-biz - - 4.0.0 - yudao-module-erp - pom - - ${project.artifactId} - - erp 包下,企业资源管理(Enterprise Resource Planning)。 - 例如说:采购、销售、库存、财务、产品等等 - - - \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-api/pom.xml b/yudao-module-erp/yudao-module-erp-api/pom.xml deleted file mode 100644 index 961845ce3c..0000000000 --- a/yudao-module-erp/yudao-module-erp-api/pom.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - cn.iocoder.boot - yudao-module-erp - ${revision} - - 4.0.0 - yudao-module-erp-api - jar - - ${project.artifactId} - - erp 模块 API,暴露给其它模块调用 - - - - - cn.iocoder.boot - yudao-common - - - - - org.springframework.boot - spring-boot-starter-validation - true - - - - \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/package-info.java b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/package-info.java deleted file mode 100644 index 540f18f0e0..0000000000 --- a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * erp API 包,定义暴露给其它模块的 API - */ -package cn.iocoder.yudao.module.erp.api; diff --git a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/DictTypeConstants.java b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/DictTypeConstants.java deleted file mode 100644 index 36d4df852e..0000000000 --- a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/DictTypeConstants.java +++ /dev/null @@ -1,13 +0,0 @@ -package cn.iocoder.yudao.module.erp.enums; - -/** - * ERP 字典类型的枚举类 - * - * @author 芋道源码 - */ -public interface DictTypeConstants { - - String AUDIT_STATUS = "erp_audit_status"; // 审核状态 - String STOCK_RECORD_BIZ_TYPE = "erp_stock_record_biz_type"; // 库存明细的业务类型 - -} diff --git a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpAuditStatus.java b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpAuditStatus.java deleted file mode 100644 index a10147a704..0000000000 --- a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpAuditStatus.java +++ /dev/null @@ -1,39 +0,0 @@ -package cn.iocoder.yudao.module.erp.enums; - -import cn.iocoder.yudao.framework.common.core.IntArrayValuable; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -import java.util.Arrays; - -/** - * ERP 审核状态枚举 - * - * TODO 芋艿:目前只有待审批、已审批两个状态,未来接入工作流后,会丰富下:待提交(草稿)=》已提交(待审核)=》审核通过、审核不通过;另外,工作流需要支持“反审核”,把工作流退回到原点; - * - * @author 芋道源码 - */ -@RequiredArgsConstructor -@Getter -public enum ErpAuditStatus implements IntArrayValuable { - - PROCESS(10, "未审核"), // 审核中 - APPROVE(20, "已审核"); // 审核通过 - - public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(ErpAuditStatus::getStatus).toArray(); - - /** - * 状态 - */ - private final Integer status; - /** - * 状态名 - */ - private final String name; - - @Override - public int[] array() { - return ARRAYS; - } - -} diff --git a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java deleted file mode 100644 index 65f64c2f56..0000000000 --- a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java +++ /dev/null @@ -1,168 +0,0 @@ -package cn.iocoder.yudao.module.erp.enums; - -import cn.iocoder.yudao.framework.common.exception.ErrorCode; - -/** - * ERP 错误码枚举类 - *

- * erp 系统,使用 1-030-000-000 段 - */ -public interface ErrorCodeConstants { - - // ========== ERP 供应商(1-030-100-000) ========== - ErrorCode SUPPLIER_NOT_EXISTS = new ErrorCode(1_030_100_000, "供应商不存在"); - ErrorCode SUPPLIER_NOT_ENABLE = new ErrorCode(1_030_100_000, "供应商({})未启用"); - - // ========== ERP 采购订单(1-030-101-000) ========== - ErrorCode PURCHASE_ORDER_NOT_EXISTS = new ErrorCode(1_030_101_000, "采购订单不存在"); - ErrorCode PURCHASE_ORDER_DELETE_FAIL_APPROVE = new ErrorCode(1_030_101_001, "采购订单({})已审核,无法删除"); - ErrorCode PURCHASE_ORDER_PROCESS_FAIL = new ErrorCode(1_030_101_002, "反审核失败,只有已审核的采购订单才能反审核"); - ErrorCode PURCHASE_ORDER_APPROVE_FAIL = new ErrorCode(1_030_101_003, "审核失败,只有未审核的采购订单才能审核"); - ErrorCode PURCHASE_ORDER_NO_EXISTS = new ErrorCode(1_030_101_004, "生成采购单号失败,请重新提交"); - ErrorCode PURCHASE_ORDER_UPDATE_FAIL_APPROVE = new ErrorCode(1_030_101_005, "采购订单({})已审核,无法修改"); - ErrorCode PURCHASE_ORDER_NOT_APPROVE = new ErrorCode(1_030_101_006, "采购订单未审核,无法操作"); - ErrorCode PURCHASE_ORDER_ITEM_IN_FAIL_PRODUCT_EXCEED = new ErrorCode(1_030_101_007, "采购订单项({})超过最大允许入库数量({})"); - ErrorCode PURCHASE_ORDER_PROCESS_FAIL_EXISTS_IN = new ErrorCode(1_030_101_008, "反审核失败,已存在对应的采购入库单"); -ErrorCode PURCHASE_ORDER_ITEM_RETURN_FAIL_IN_EXCEED = new ErrorCode(1_030_101_009, "采购订单项({})超过最大允许退货数量({})"); - ErrorCode PURCHASE_ORDER_PROCESS_FAIL_EXISTS_RETURN = new ErrorCode(1_030_101_010, "反审核失败,已存在对应的采购退货单"); - - // ========== ERP 采购入库(1-030-102-000) ========== - ErrorCode PURCHASE_IN_NOT_EXISTS = new ErrorCode(1_030_102_000, "采购入库单不存在"); - ErrorCode PURCHASE_IN_DELETE_FAIL_APPROVE = new ErrorCode(1_030_102_001, "采购入库单({})已审核,无法删除"); - ErrorCode PURCHASE_IN_PROCESS_FAIL = new ErrorCode(1_030_102_002, "反审核失败,只有已审核的入库单才能反审核"); - ErrorCode PURCHASE_IN_APPROVE_FAIL = new ErrorCode(1_030_102_003, "审核失败,只有未审核的入库单才能审核"); - ErrorCode PURCHASE_IN_NO_EXISTS = new ErrorCode(1_030_102_004, "生成入库单失败,请重新提交"); - ErrorCode PURCHASE_IN_UPDATE_FAIL_APPROVE = new ErrorCode(1_030_102_005, "采购入库单({})已审核,无法修改"); - ErrorCode PURCHASE_IN_NOT_APPROVE = new ErrorCode(1_030_102_006, "采购入库单未审核,无法操作"); - ErrorCode PURCHASE_IN_FAIL_PAYMENT_PRICE_EXCEED = new ErrorCode(1_030_102_007, "付款金额({})超过采购入库单总金额({})"); - ErrorCode PURCHASE_IN_PROCESS_FAIL_EXISTS_PAYMENT = new ErrorCode(1_030_102_008, "反审核失败,已存在对应的付款单"); - - // ========== ERP 采购退货(1-030-103-000) ========== - ErrorCode PURCHASE_RETURN_NOT_EXISTS = new ErrorCode(1_030_103_000, "采购退货单不存在"); - ErrorCode PURCHASE_RETURN_DELETE_FAIL_APPROVE = new ErrorCode(1_030_103_001, "采购退货单({})已审核,无法删除"); - ErrorCode PURCHASE_RETURN_PROCESS_FAIL = new ErrorCode(1_030_103_002, "反审核失败,只有已审核的退货单才能反审核"); - ErrorCode PURCHASE_RETURN_APPROVE_FAIL = new ErrorCode(1_030_103_003, "审核失败,只有未审核的退货单才能审核"); - ErrorCode PURCHASE_RETURN_NO_EXISTS = new ErrorCode(1_030_103_004, "生成退货单失败,请重新提交"); - ErrorCode PURCHASE_RETURN_UPDATE_FAIL_APPROVE = new ErrorCode(1_030_103_005, "采购退货单({})已审核,无法修改"); - ErrorCode PURCHASE_RETURN_NOT_APPROVE = new ErrorCode(1_030_103_006, "采购退货单未审核,无法操作"); - ErrorCode PURCHASE_RETURN_FAIL_REFUND_PRICE_EXCEED = new ErrorCode(1_030_103_007, "退款金额({})超过采购退货单总金额({})"); - ErrorCode PURCHASE_RETURN_PROCESS_FAIL_EXISTS_REFUND = new ErrorCode(1_030_103_008, "反审核失败,已存在对应的退款单"); - - // ========== ERP 客户(1-030-200-000)========== - ErrorCode CUSTOMER_NOT_EXISTS = new ErrorCode(1_020_200_000, "客户不存在"); - ErrorCode CUSTOMER_NOT_ENABLE = new ErrorCode(1_020_200_001, "客户({})未启用"); - - // ========== ERP 销售订单(1-030-201-000) ========== - ErrorCode SALE_ORDER_NOT_EXISTS = new ErrorCode(1_020_201_000, "销售订单不存在"); - ErrorCode SALE_ORDER_DELETE_FAIL_APPROVE = new ErrorCode(1_020_201_001, "销售订单({})已审核,无法删除"); - ErrorCode SALE_ORDER_PROCESS_FAIL = new ErrorCode(1_020_201_002, "反审核失败,只有已审核的销售订单才能反审核"); - ErrorCode SALE_ORDER_APPROVE_FAIL = new ErrorCode(1_020_201_003, "审核失败,只有未审核的销售订单才能审核"); - ErrorCode SALE_ORDER_NO_EXISTS = new ErrorCode(1_020_201_004, "生成销售单号失败,请重新提交"); - ErrorCode SALE_ORDER_UPDATE_FAIL_APPROVE = new ErrorCode(1_020_201_005, "销售订单({})已审核,无法修改"); - ErrorCode SALE_ORDER_NOT_APPROVE = new ErrorCode(1_020_201_006, "销售订单未审核,无法操作"); - ErrorCode SALE_ORDER_ITEM_OUT_FAIL_PRODUCT_EXCEED = new ErrorCode(1_020_201_007, "销售订单项({})超过最大允许出库数量({})"); - ErrorCode SALE_ORDER_PROCESS_FAIL_EXISTS_OUT = new ErrorCode(1_020_201_008, "反审核失败,已存在对应的销售出库单"); - ErrorCode SALE_ORDER_ITEM_RETURN_FAIL_OUT_EXCEED = new ErrorCode(1_020_201_009, "销售订单项({})超过最大允许退货数量({})"); - ErrorCode SALE_ORDER_PROCESS_FAIL_EXISTS_RETURN = new ErrorCode(1_020_201_010, "反审核失败,已存在对应的销售退货单"); - - // ========== ERP 销售出库(1-030-202-000) ========== - ErrorCode SALE_OUT_NOT_EXISTS = new ErrorCode(1_020_202_000, "销售出库单不存在"); - ErrorCode SALE_OUT_DELETE_FAIL_APPROVE = new ErrorCode(1_020_202_001, "销售出库单({})已审核,无法删除"); - ErrorCode SALE_OUT_PROCESS_FAIL = new ErrorCode(1_020_202_002, "反审核失败,只有已审核的出库单才能反审核"); - ErrorCode SALE_OUT_APPROVE_FAIL = new ErrorCode(1_020_202_003, "审核失败,只有未审核的出库单才能审核"); - ErrorCode SALE_OUT_NO_EXISTS = new ErrorCode(1_020_202_004, "生成出库单失败,请重新提交"); - ErrorCode SALE_OUT_UPDATE_FAIL_APPROVE = new ErrorCode(1_020_202_005, "销售出库单({})已审核,无法修改"); - ErrorCode SALE_OUT_NOT_APPROVE = new ErrorCode(1_020_202_006, "销售出库单未审核,无法操作"); - ErrorCode SALE_OUT_FAIL_RECEIPT_PRICE_EXCEED = new ErrorCode(1_020_202_007, "收款金额({})超过销售出库单总金额({})"); - ErrorCode SALE_OUT_PROCESS_FAIL_EXISTS_RECEIPT = new ErrorCode(1_020_202_008, "反审核失败,已存在对应的收款单"); - - // ========== ERP 销售退货(1-030-203-000) ========== - ErrorCode SALE_RETURN_NOT_EXISTS = new ErrorCode(1_020_203_000, "销售退货单不存在"); - ErrorCode SALE_RETURN_DELETE_FAIL_APPROVE = new ErrorCode(1_020_203_001, "销售退货单({})已审核,无法删除"); - ErrorCode SALE_RETURN_PROCESS_FAIL = new ErrorCode(1_020_203_002, "反审核失败,只有已审核的退货单才能反审核"); - ErrorCode SALE_RETURN_APPROVE_FAIL = new ErrorCode(1_020_203_003, "审核失败,只有未审核的退货单才能审核"); - ErrorCode SALE_RETURN_NO_EXISTS = new ErrorCode(1_020_203_004, "生成退货单失败,请重新提交"); - ErrorCode SALE_RETURN_UPDATE_FAIL_APPROVE = new ErrorCode(1_020_203_005, "销售退货单({})已审核,无法修改"); - ErrorCode SALE_RETURN_NOT_APPROVE = new ErrorCode(1_020_203_006, "销售退货单未审核,无法操作"); - ErrorCode SALE_RETURN_FAIL_REFUND_PRICE_EXCEED = new ErrorCode(1_020_203_007, "退款金额({})超过销售退货单总金额({})"); - ErrorCode SALE_RETURN_PROCESS_FAIL_EXISTS_REFUND = new ErrorCode(1_020_203_008, "反审核失败,已存在对应的退款单"); - - // ========== ERP 仓库 1-030-400-000 ========== - ErrorCode WAREHOUSE_NOT_EXISTS = new ErrorCode(1_030_400_000, "仓库不存在"); - ErrorCode WAREHOUSE_NOT_ENABLE = new ErrorCode(1_030_400_001, "仓库({})未启用"); - - // ========== ERP 其它入库单 1-030-401-000 ========== - ErrorCode STOCK_IN_NOT_EXISTS = new ErrorCode(1_030_401_000, "其它入库单不存在"); - ErrorCode STOCK_IN_DELETE_FAIL_APPROVE = new ErrorCode(1_030_401_001, "其它入库单({})已审核,无法删除"); - ErrorCode STOCK_IN_PROCESS_FAIL = new ErrorCode(1_030_401_002, "反审核失败,只有已审核的入库单才能反审核"); - ErrorCode STOCK_IN_APPROVE_FAIL = new ErrorCode(1_030_401_003, "审核失败,只有未审核的入库单才能审核"); - ErrorCode STOCK_IN_NO_EXISTS = new ErrorCode(1_030_401_004, "生成入库单失败,请重新提交"); - ErrorCode STOCK_IN_UPDATE_FAIL_APPROVE = new ErrorCode(1_030_401_005, "其它入库单({})已审核,无法修改"); - - // ========== ERP 其它出库单 1-030-402-000 ========== - ErrorCode STOCK_OUT_NOT_EXISTS = new ErrorCode(1_030_402_000, "其它出库单不存在"); - ErrorCode STOCK_OUT_DELETE_FAIL_APPROVE = new ErrorCode(1_030_402_001, "其它出库单({})已审核,无法删除"); - ErrorCode STOCK_OUT_PROCESS_FAIL = new ErrorCode(1_030_402_002, "反审核失败,只有已审核的出库单才能反审核"); - ErrorCode STOCK_OUT_APPROVE_FAIL = new ErrorCode(1_030_402_003, "审核失败,只有未审核的出库单才能审核"); - ErrorCode STOCK_OUT_NO_EXISTS = new ErrorCode(1_030_402_004, "生成出库单失败,请重新提交"); - ErrorCode STOCK_OUT_UPDATE_FAIL_APPROVE = new ErrorCode(1_030_402_005, "其它出库单({})已审核,无法修改"); - - // ========== ERP 库存调拨单 1-030-403-000 ========== - ErrorCode STOCK_MOVE_NOT_EXISTS = new ErrorCode(1_030_402_000, "库存调拨单不存在"); - ErrorCode STOCK_MOVE_DELETE_FAIL_APPROVE = new ErrorCode(1_030_402_001, "库存调拨单({})已审核,无法删除"); - ErrorCode STOCK_MOVE_PROCESS_FAIL = new ErrorCode(1_030_402_002, "反审核失败,只有已审核的调拨单才能反审核"); - ErrorCode STOCK_MOVE_APPROVE_FAIL = new ErrorCode(1_030_402_003, "审核失败,只有未审核的调拨单才能审核"); - ErrorCode STOCK_MOVE_NO_EXISTS = new ErrorCode(1_030_402_004, "生成调拨号失败,请重新提交"); - ErrorCode STOCK_MOVE_UPDATE_FAIL_APPROVE = new ErrorCode(1_030_402_005, "库存调拨单({})已审核,无法修改"); - - // ========== ERP 库存盘点单 1-030-403-000 ========== - ErrorCode STOCK_CHECK_NOT_EXISTS = new ErrorCode(1_030_403_000, "库存盘点单不存在"); - ErrorCode STOCK_CHECK_DELETE_FAIL_APPROVE = new ErrorCode(1_030_403_001, "库存盘点单({})已审核,无法删除"); - ErrorCode STOCK_CHECK_PROCESS_FAIL = new ErrorCode(1_030_403_002, "反审核失败,只有已审核的盘点单才能反审核"); - ErrorCode STOCK_CHECK_APPROVE_FAIL = new ErrorCode(1_030_403_003, "审核失败,只有未审核的盘点单才能审核"); - ErrorCode STOCK_CHECK_NO_EXISTS = new ErrorCode(1_030_403_004, "生成盘点号失败,请重新提交"); - ErrorCode STOCK_CHECK_UPDATE_FAIL_APPROVE = new ErrorCode(1_030_403_005, "库存盘点单({})已审核,无法修改"); - - // ========== ERP 产品库存 1-030-404-000 ========== - ErrorCode STOCK_COUNT_NEGATIVE = new ErrorCode(1_030_404_000, "操作失败,产品({})所在仓库({})的库存:{},小于变更数量:{}"); - ErrorCode STOCK_COUNT_NEGATIVE2 = new ErrorCode(1_030_404_001, "操作失败,产品({})所在仓库({})的库存不足"); - - // ========== ERP 产品 1-030-500-000 ========== - ErrorCode PRODUCT_NOT_EXISTS = new ErrorCode(1_030_500_000, "产品不存在"); - ErrorCode PRODUCT_NOT_ENABLE = new ErrorCode(1_030_500_001, "产品({})未启用"); - - // ========== ERP 产品分类 1-030-501-000 ========== - ErrorCode PRODUCT_CATEGORY_NOT_EXISTS = new ErrorCode(1_030_501_000, "产品分类不存在"); - ErrorCode PRODUCT_CATEGORY_EXITS_CHILDREN = new ErrorCode(1_030_501_001, "存在存在子产品分类,无法删除"); - ErrorCode PRODUCT_CATEGORY_PARENT_NOT_EXITS = new ErrorCode(1_030_501_002,"父级产品分类不存在"); - ErrorCode PRODUCT_CATEGORY_PARENT_ERROR = new ErrorCode(1_030_501_003, "不能设置自己为父产品分类"); - ErrorCode PRODUCT_CATEGORY_NAME_DUPLICATE = new ErrorCode(1_030_501_004, "已经存在该分类名称的产品分类"); - ErrorCode PRODUCT_CATEGORY_PARENT_IS_CHILD = new ErrorCode(1_030_501_005, "不能设置自己的子分类为父分类"); - ErrorCode PRODUCT_CATEGORY_EXITS_PRODUCT = new ErrorCode(1_030_502_002, "存在产品使用该分类,无法删除"); - - // ========== ERP 产品单位 1-030-502-000 ========== - ErrorCode PRODUCT_UNIT_NOT_EXISTS = new ErrorCode(1_030_502_000, "产品单位不存在"); - ErrorCode PRODUCT_UNIT_NAME_DUPLICATE = new ErrorCode(1_030_502_001, "已存在该名字的产品单位"); - ErrorCode PRODUCT_UNIT_EXITS_PRODUCT = new ErrorCode(1_030_502_002, "存在产品使用该单位,无法删除"); - - // ========== ERP 结算账户 1-030-600-000 ========== - ErrorCode ACCOUNT_NOT_EXISTS = new ErrorCode(1_030_600_000, "结算账户不存在"); - ErrorCode ACCOUNT_NOT_ENABLE = new ErrorCode(1_030_600_001, "结算账户({})未启用"); - - // ========== ERP 付款单 1-030-601-000 ========== - ErrorCode FINANCE_PAYMENT_NOT_EXISTS = new ErrorCode(1_030_601_000, "付款单不存在"); - ErrorCode FINANCE_PAYMENT_DELETE_FAIL_APPROVE = new ErrorCode(1_030_601_001, "付款单({})已审核,无法删除"); - ErrorCode FINANCE_PAYMENT_PROCESS_FAIL = new ErrorCode(1_030_601_002, "反审核失败,只有已审核的付款单才能反审核"); - ErrorCode FINANCE_PAYMENT_APPROVE_FAIL = new ErrorCode(1_030_601_003, "审核失败,只有未审核的付款单才能审核"); - ErrorCode FINANCE_PAYMENT_NO_EXISTS = new ErrorCode(1_030_601_004, "生成付款单号失败,请重新提交"); - ErrorCode FINANCE_PAYMENT_UPDATE_FAIL_APPROVE = new ErrorCode(1_030_601_005, "付款单({})已审核,无法修改"); - - // ========== ERP 收款单 1-030-602-000 ========== - ErrorCode FINANCE_RECEIPT_NOT_EXISTS = new ErrorCode(1_030_602_000, "收款单不存在"); - ErrorCode FINANCE_RECEIPT_DELETE_FAIL_APPROVE = new ErrorCode(1_030_602_001, "收款单({})已审核,无法删除"); - ErrorCode FINANCE_RECEIPT_PROCESS_FAIL = new ErrorCode(1_030_602_002, "反审核失败,只有已审核的收款单才能反审核"); - ErrorCode FINANCE_RECEIPT_APPROVE_FAIL = new ErrorCode(1_030_602_003, "审核失败,只有未审核的收款单才能审核"); - ErrorCode FINANCE_RECEIPT_NO_EXISTS = new ErrorCode(1_030_602_004, "生成收款单号失败,请重新提交"); - ErrorCode FINANCE_RECEIPT_UPDATE_FAIL_APPROVE = new ErrorCode(1_030_602_005, "收款单({})已审核,无法修改"); - -} diff --git a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/LogRecordConstants.java b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/LogRecordConstants.java deleted file mode 100644 index 73b72c0a92..0000000000 --- a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/LogRecordConstants.java +++ /dev/null @@ -1,12 +0,0 @@ -package cn.iocoder.yudao.module.erp.enums; - -/** - * ERP 操作日志枚举 - * 目的:统一管理,也减少 Service 里各种“复杂”字符串 - * - * @author 芋道源码 - */ -public interface LogRecordConstants { - - -} diff --git a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/common/ErpBizTypeEnum.java b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/common/ErpBizTypeEnum.java deleted file mode 100644 index bba2b309b3..0000000000 --- a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/common/ErpBizTypeEnum.java +++ /dev/null @@ -1,43 +0,0 @@ -package cn.iocoder.yudao.module.erp.enums.common; - -import cn.iocoder.yudao.framework.common.core.IntArrayValuable; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -import java.util.Arrays; - -/** - * ERP 业务类型枚举 - * - * @author HUIHUI - */ -@RequiredArgsConstructor -@Getter -public enum ErpBizTypeEnum implements IntArrayValuable { - - PURCHASE_ORDER(10, "采购订单"), - PURCHASE_IN(11, "采购入库"), - PURCHASE_RETURN(12, "采购退货"), - - SALE_ORDER(20, "销售订单"), - SALE_OUT(21, "销售订单"), - SALE_RETURN(22, "销售退货"), - ; - - public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(ErpBizTypeEnum::getType).toArray(); - - /** - * 类型 - */ - private final Integer type; - /** - * 名称 - */ - private final String name; - - @Override - public int[] array() { - return ARRAYS; - } - -} diff --git a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/stock/ErpStockRecordBizTypeEnum.java b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/stock/ErpStockRecordBizTypeEnum.java deleted file mode 100644 index 559bf4ccf7..0000000000 --- a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/stock/ErpStockRecordBizTypeEnum.java +++ /dev/null @@ -1,63 +0,0 @@ -package cn.iocoder.yudao.module.erp.enums.stock; - -import cn.iocoder.yudao.framework.common.core.IntArrayValuable; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -import java.util.Arrays; - -/** - * ERP 库存明细 - 业务类型枚举 - * - * @author 芋道源码 - */ -@RequiredArgsConstructor -@Getter -public enum ErpStockRecordBizTypeEnum implements IntArrayValuable { - - OTHER_IN(10, "其它入库"), - OTHER_IN_CANCEL(11, "其它入库(作废)"), - - OTHER_OUT(20, "其它出库"), - OTHER_OUT_CANCEL(21, "其它出库(作废)"), - - MOVE_IN(30, "调拨入库"), - MOVE_IN_CANCEL(31, "调拨入库(作废)"), - MOVE_OUT(32, "调拨出库"), - MOVE_OUT_CANCEL(33, "调拨出库(作废)"), - - CHECK_MORE_IN(40, "盘盈入库"), - CHECK_MORE_IN_CANCEL(41, "盘盈入库(作废)"), - CHECK_LESS_OUT(42, "盘亏出库"), - CHECK_LESS_OUT_CANCEL(43, "盘亏出库(作废)"), - - SALE_OUT(50, "销售出库"), - SALE_OUT_CANCEL(51, "销售出库(作废)"), - - SALE_RETURN(60, "销售退货入库"), - SALE_RETURN_CANCEL(61, "销售退货入库(作废)"), - - PURCHASE_IN(70, "采购入库"), - PURCHASE_IN_CANCEL(71, "采购入库(作废)"), - - PURCHASE_RETURN(80, "采购退货出库"), - PURCHASE_RETURN_CANCEL(81, "采购退货出库(作废)"), - ; - - public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(ErpStockRecordBizTypeEnum::getType).toArray(); - - /** - * 类型 - */ - private final Integer type; - /** - * 名字 - */ - private final String name; - - @Override - public int[] array() { - return ARRAYS; - } - -} diff --git a/yudao-module-erp/yudao-module-erp-biz/pom.xml b/yudao-module-erp/yudao-module-erp-biz/pom.xml deleted file mode 100644 index 1d0b441624..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/pom.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - cn.iocoder.boot - yudao-module-erp - ${revision} - - 4.0.0 - yudao-module-erp-biz - - ${project.artifactId} - - erp 包下,企业资源管理(Enterprise Resource Planning)。 - 例如说:采购、销售、库存、财务、产品等等 - - - - - cn.iocoder.boot - yudao-module-system-api - ${revision} - - - cn.iocoder.boot - yudao-module-erp-api - ${revision} - - - - - cn.iocoder.boot - yudao-spring-boot-starter-biz-operatelog - - - - - cn.iocoder.boot - yudao-spring-boot-starter-web - - - - cn.iocoder.boot - yudao-spring-boot-starter-security - - - - - cn.iocoder.boot - yudao-spring-boot-starter-mybatis - - - - cn.iocoder.boot - yudao-spring-boot-starter-redis - - - - - cn.iocoder.boot - yudao-spring-boot-starter-excel - - - cn.iocoder.boot - yudao-spring-boot-starter-biz-dict - - - - - cn.iocoder.boot - yudao-spring-boot-starter-test - - - - - \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpAccountController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpAccountController.java deleted file mode 100644 index 4c8c980584..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpAccountController.java +++ /dev/null @@ -1,116 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.finance; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.account.ErpAccountPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.account.ErpAccountRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.account.ErpAccountSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO; -import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Parameters; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 结算账户") -@RestController -@RequestMapping("/erp/account") -@Validated -public class ErpAccountController { - - @Resource - private ErpAccountService accountService; - - @PostMapping("/create") - @Operation(summary = "创建结算账户") - @PreAuthorize("@ss.hasPermission('erp:account:create')") - public CommonResult createAccount(@Valid @RequestBody ErpAccountSaveReqVO createReqVO) { - return success(accountService.createAccount(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新结算账户") - @PreAuthorize("@ss.hasPermission('erp:account:update')") - public CommonResult updateAccount(@Valid @RequestBody ErpAccountSaveReqVO updateReqVO) { - accountService.updateAccount(updateReqVO); - return success(true); - } - - @PutMapping("/update-default-status") - @Operation(summary = "更新结算账户默认状态") - @Parameters({ - @Parameter(name = "id", description = "编号", required = true), - @Parameter(name = "status", description = "状态", required = true) - }) - public CommonResult updateAccountDefaultStatus(@RequestParam("id") Long id, - @RequestParam("defaultStatus") Boolean defaultStatus) { - accountService.updateAccountDefaultStatus(id, defaultStatus); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除结算账户") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('erp:account:delete')") - public CommonResult deleteAccount(@RequestParam("id") Long id) { - accountService.deleteAccount(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得结算账户") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:account:query')") - public CommonResult getAccount(@RequestParam("id") Long id) { - ErpAccountDO account = accountService.getAccount(id); - return success(BeanUtils.toBean(account, ErpAccountRespVO.class)); - } - - @GetMapping("/simple-list") - @Operation(summary = "获得结算账户精简列表", description = "只包含被开启的结算账户,主要用于前端的下拉选项") - public CommonResult> getWarehouseSimpleList() { - List list = accountService.getAccountListByStatus(CommonStatusEnum.ENABLE.getStatus()); - return success(convertList(list, account -> new ErpAccountRespVO().setId(account.getId()) - .setName(account.getName()).setDefaultStatus(account.getDefaultStatus()))); - } - - @GetMapping("/page") - @Operation(summary = "获得结算账户分页") - @PreAuthorize("@ss.hasPermission('erp:account:query')") - public CommonResult> getAccountPage(@Valid ErpAccountPageReqVO pageReqVO) { - PageResult pageResult = accountService.getAccountPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, ErpAccountRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出结算账户 Excel") - @PreAuthorize("@ss.hasPermission('erp:account:export')") - @OperateLog(type = EXPORT) - public void exportAccountExcel(@Valid ErpAccountPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = accountService.getAccountPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "结算账户.xls", "数据", ErpAccountRespVO.class, - BeanUtils.toBean(list, ErpAccountRespVO.class)); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpFinancePaymentController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpFinancePaymentController.java deleted file mode 100644 index b1f028a282..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpFinancePaymentController.java +++ /dev/null @@ -1,153 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.finance; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.number.NumberUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment.ErpFinancePaymentPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment.ErpFinancePaymentRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment.ErpFinancePaymentSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentItemDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO; -import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService; -import cn.iocoder.yudao.module.erp.service.finance.ErpFinancePaymentService; -import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.util.List; -import java.util.Map; -import java.util.stream.Stream; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 付款单") -@RestController -@RequestMapping("/erp/finance-payment") -@Validated -public class ErpFinancePaymentController { - - @Resource - private ErpFinancePaymentService financePaymentService; - @Resource - private ErpSupplierService supplierService; - @Resource - private ErpAccountService accountService; - - @Resource - private AdminUserApi adminUserApi; - - @PostMapping("/create") - @Operation(summary = "创建付款单") - @PreAuthorize("@ss.hasPermission('erp:finance-payment:create')") - public CommonResult createFinancePayment(@Valid @RequestBody ErpFinancePaymentSaveReqVO createReqVO) { - return success(financePaymentService.createFinancePayment(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新付款单") - @PreAuthorize("@ss.hasPermission('erp:finance-payment:update')") - public CommonResult updateFinancePayment(@Valid @RequestBody ErpFinancePaymentSaveReqVO updateReqVO) { - financePaymentService.updateFinancePayment(updateReqVO); - return success(true); - } - - @PutMapping("/update-status") - @Operation(summary = "更新付款单的状态") - @PreAuthorize("@ss.hasPermission('erp:finance-payment:update-status')") - public CommonResult updateFinancePaymentStatus(@RequestParam("id") Long id, - @RequestParam("status") Integer status) { - financePaymentService.updateFinancePaymentStatus(id, status); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除付款单") - @Parameter(name = "ids", description = "编号数组", required = true) - @PreAuthorize("@ss.hasPermission('erp:finance-payment:delete')") - public CommonResult deleteFinancePayment(@RequestParam("ids") List ids) { - financePaymentService.deleteFinancePayment(ids); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得付款单") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:finance-payment:query')") - public CommonResult getFinancePayment(@RequestParam("id") Long id) { - ErpFinancePaymentDO payment = financePaymentService.getFinancePayment(id); - if (payment == null) { - return success(null); - } - List paymentItemList = financePaymentService.getFinancePaymentItemListByPaymentId(id); - return success(BeanUtils.toBean(payment, ErpFinancePaymentRespVO.class, financePaymentVO -> - financePaymentVO.setItems(BeanUtils.toBean(paymentItemList, ErpFinancePaymentRespVO.Item.class)))); - } - - @GetMapping("/page") - @Operation(summary = "获得付款单分页") - @PreAuthorize("@ss.hasPermission('erp:finance-payment:query')") - public CommonResult> getFinancePaymentPage(@Valid ErpFinancePaymentPageReqVO pageReqVO) { - PageResult pageResult = financePaymentService.getFinancePaymentPage(pageReqVO); - return success(buildFinancePaymentVOPageResult(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出付款单 Excel") - @PreAuthorize("@ss.hasPermission('erp:finance-payment:export')") - @OperateLog(type = EXPORT) - public void exportFinancePaymentExcel(@Valid ErpFinancePaymentPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = buildFinancePaymentVOPageResult(financePaymentService.getFinancePaymentPage(pageReqVO)).getList(); - // 导出 Excel - ExcelUtils.write(response, "付款单.xls", "数据", ErpFinancePaymentRespVO.class, list); - } - - private PageResult buildFinancePaymentVOPageResult(PageResult pageResult) { - if (CollUtil.isEmpty(pageResult.getList())) { - return PageResult.empty(pageResult.getTotal()); - } - // 1.1 付款项 - List paymentItemList = financePaymentService.getFinancePaymentItemListByPaymentIds( - convertSet(pageResult.getList(), ErpFinancePaymentDO::getId)); - Map> financePaymentItemMap = convertMultiMap(paymentItemList, ErpFinancePaymentItemDO::getPaymentId); - // 1.2 供应商信息 - Map supplierMap = supplierService.getSupplierMap( - convertSet(pageResult.getList(), ErpFinancePaymentDO::getSupplierId)); - // 1.3 结算账户信息 - Map accountMap = accountService.getAccountMap( - convertSet(pageResult.getList(), ErpFinancePaymentDO::getAccountId)); - // 1.4 管理员信息 - Map userMap = adminUserApi.getUserMap(convertListByFlatMap(pageResult.getList(), - contact -> Stream.of(NumberUtils.parseLong(contact.getCreator()), contact.getFinanceUserId()))); - // 2. 开始拼接 - return BeanUtils.toBean(pageResult, ErpFinancePaymentRespVO.class, payment -> { - payment.setItems(BeanUtils.toBean(financePaymentItemMap.get(payment.getId()), ErpFinancePaymentRespVO.Item.class)); - MapUtils.findAndThen(supplierMap, payment.getSupplierId(), supplier -> payment.setSupplierName(supplier.getName())); - MapUtils.findAndThen(accountMap, payment.getAccountId(), account -> payment.setAccountName(account.getName())); - MapUtils.findAndThen(userMap, Long.parseLong(payment.getCreator()), user -> payment.setCreatorName(user.getNickname())); - MapUtils.findAndThen(userMap, payment.getFinanceUserId(), user -> payment.setFinanceUserName(user.getNickname())); - }); - } - -} diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpFinanceReceiptController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpFinanceReceiptController.java deleted file mode 100644 index d36ab39900..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpFinanceReceiptController.java +++ /dev/null @@ -1,153 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.finance; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.number.NumberUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.receipt.ErpFinanceReceiptPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.receipt.ErpFinanceReceiptRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.receipt.ErpFinanceReceiptSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptItemDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; -import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService; -import cn.iocoder.yudao.module.erp.service.finance.ErpFinanceReceiptService; -import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.util.List; -import java.util.Map; -import java.util.stream.Stream; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 收款单") -@RestController -@RequestMapping("/erp/finance-receipt") -@Validated -public class ErpFinanceReceiptController { - - @Resource - private ErpFinanceReceiptService financeReceiptService; - @Resource - private ErpCustomerService customerService; - @Resource - private ErpAccountService accountService; - - @Resource - private AdminUserApi adminUserApi; - - @PostMapping("/create") - @Operation(summary = "创建收款单") - @PreAuthorize("@ss.hasPermission('erp:finance-receipt:create')") - public CommonResult createFinanceReceipt(@Valid @RequestBody ErpFinanceReceiptSaveReqVO createReqVO) { - return success(financeReceiptService.createFinanceReceipt(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新收款单") - @PreAuthorize("@ss.hasPermission('erp:finance-receipt:update')") - public CommonResult updateFinanceReceipt(@Valid @RequestBody ErpFinanceReceiptSaveReqVO updateReqVO) { - financeReceiptService.updateFinanceReceipt(updateReqVO); - return success(true); - } - - @PutMapping("/update-status") - @Operation(summary = "更新收款单的状态") - @PreAuthorize("@ss.hasPermission('erp:finance-receipt:update-status')") - public CommonResult updateFinanceReceiptStatus(@RequestParam("id") Long id, - @RequestParam("status") Integer status) { - financeReceiptService.updateFinanceReceiptStatus(id, status); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除收款单") - @Parameter(name = "ids", description = "编号数组", required = true) - @PreAuthorize("@ss.hasPermission('erp:finance-receipt:delete')") - public CommonResult deleteFinanceReceipt(@RequestParam("ids") List ids) { - financeReceiptService.deleteFinanceReceipt(ids); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得收款单") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:finance-receipt:query')") - public CommonResult getFinanceReceipt(@RequestParam("id") Long id) { - ErpFinanceReceiptDO receipt = financeReceiptService.getFinanceReceipt(id); - if (receipt == null) { - return success(null); - } - List receiptItemList = financeReceiptService.getFinanceReceiptItemListByReceiptId(id); - return success(BeanUtils.toBean(receipt, ErpFinanceReceiptRespVO.class, financeReceiptVO -> - financeReceiptVO.setItems(BeanUtils.toBean(receiptItemList, ErpFinanceReceiptRespVO.Item.class)))); - } - - @GetMapping("/page") - @Operation(summary = "获得收款单分页") - @PreAuthorize("@ss.hasPermission('erp:finance-receipt:query')") - public CommonResult> getFinanceReceiptPage(@Valid ErpFinanceReceiptPageReqVO pageReqVO) { - PageResult pageResult = financeReceiptService.getFinanceReceiptPage(pageReqVO); - return success(buildFinanceReceiptVOPageResult(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出收款单 Excel") - @PreAuthorize("@ss.hasPermission('erp:finance-receipt:export')") - @OperateLog(type = EXPORT) - public void exportFinanceReceiptExcel(@Valid ErpFinanceReceiptPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = buildFinanceReceiptVOPageResult(financeReceiptService.getFinanceReceiptPage(pageReqVO)).getList(); - // 导出 Excel - ExcelUtils.write(response, "收款单.xls", "数据", ErpFinanceReceiptRespVO.class, list); - } - - private PageResult buildFinanceReceiptVOPageResult(PageResult pageResult) { - if (CollUtil.isEmpty(pageResult.getList())) { - return PageResult.empty(pageResult.getTotal()); - } - // 1.1 收款项 - List receiptItemList = financeReceiptService.getFinanceReceiptItemListByReceiptIds( - convertSet(pageResult.getList(), ErpFinanceReceiptDO::getId)); - Map> financeReceiptItemMap = convertMultiMap(receiptItemList, ErpFinanceReceiptItemDO::getReceiptId); - // 1.2 客户信息 - Map customerMap = customerService.getCustomerMap( - convertSet(pageResult.getList(), ErpFinanceReceiptDO::getCustomerId)); - // 1.3 结算账户信息 - Map accountMap = accountService.getAccountMap( - convertSet(pageResult.getList(), ErpFinanceReceiptDO::getAccountId)); - // 1.4 管理员信息 - Map userMap = adminUserApi.getUserMap(convertListByFlatMap(pageResult.getList(), - contact -> Stream.of(NumberUtils.parseLong(contact.getCreator()), contact.getFinanceUserId()))); - // 2. 开始拼接 - return BeanUtils.toBean(pageResult, ErpFinanceReceiptRespVO.class, receipt -> { - receipt.setItems(BeanUtils.toBean(financeReceiptItemMap.get(receipt.getId()), ErpFinanceReceiptRespVO.Item.class)); - MapUtils.findAndThen(customerMap, receipt.getCustomerId(), customer -> receipt.setCustomerName(customer.getName())); - MapUtils.findAndThen(accountMap, receipt.getAccountId(), account -> receipt.setAccountName(account.getName())); - MapUtils.findAndThen(userMap, Long.parseLong(receipt.getCreator()), user -> receipt.setCreatorName(user.getNickname())); - MapUtils.findAndThen(userMap, receipt.getFinanceUserId(), user -> receipt.setFinanceUserName(user.getNickname())); - }); - } - -} diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/account/ErpAccountPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/account/ErpAccountPageReqVO.java deleted file mode 100644 index 3e1fa72f4b..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/account/ErpAccountPageReqVO.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.finance.vo.account; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Schema(description = "管理后台 - ERP 结算账户分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpAccountPageReqVO extends PageParam { - - @Schema(description = "账户编码", example = "A88") - private String no; - - @Schema(description = "账户名称", example = "张三") - private String name; - - @Schema(description = "备注", example = "随便") - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/account/ErpAccountRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/account/ErpAccountRespVO.java deleted file mode 100644 index a1c2e954db..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/account/ErpAccountRespVO.java +++ /dev/null @@ -1,50 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.finance.vo.account; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.module.system.enums.DictTypeConstants; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - ERP 结算账户 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpAccountRespVO { - - @Schema(description = "结算账户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "28684") - @ExcelProperty("结算账户编号") - private Long id; - - @Schema(description = "账户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") - @ExcelProperty("账户名称") - private String name; - - @Schema(description = "账户编码", example = "A88") - @ExcelProperty("账户编码") - private String no; - - @Schema(description = "备注", example = "随便") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "开启状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty("开启状态") - @DictFormat(DictTypeConstants.COMMON_STATUS) - private Integer status; - - @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty("排序") - private Integer sort; - - @Schema(description = "是否默认", example = "1") - @ExcelProperty("是否默认") - private Boolean defaultStatus; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/account/ErpAccountSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/account/ErpAccountSaveReqVO.java deleted file mode 100644 index 6f35565309..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/account/ErpAccountSaveReqVO.java +++ /dev/null @@ -1,36 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.finance.vo.account; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.validation.InEnum; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Schema(description = "管理后台 - ERP 结算账户新增/修改 Request VO") -@Data -public class ErpAccountSaveReqVO { - - @Schema(description = "结算账户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "28684") - private Long id; - - @Schema(description = "账户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") - @NotEmpty(message = "账户名称不能为空") - private String name; - - @Schema(description = "账户编码", example = "A88") - private String no; - - @Schema(description = "备注", example = "随便") - private String remark; - - @Schema(description = "开启状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "开启状态不能为空") - @InEnum(value = CommonStatusEnum.class) - private Integer status; - - @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "排序不能为空") - private Integer sort; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentPageReqVO.java deleted file mode 100644 index b5618cadc9..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentPageReqVO.java +++ /dev/null @@ -1,48 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 付款单分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpFinancePaymentPageReqVO extends PageParam { - - @Schema(description = "付款单编号", example = "XS001") - private String no; - - @Schema(description = "付款时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] paymentTime; - - @Schema(description = "供应商编号", example = "1724") - private Long supplierId; - - @Schema(description = "创建者", example = "666") - private String creator; - - @Schema(description = "财务人员编号", example = "888") - private String financeUserId; - - @Schema(description = "结算账户编号", example = "31189") - private Long accountId; - - @Schema(description = "付款状态", example = "2") - private Integer status; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "业务编号", example = "123") - private String bizNo; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentRespVO.java deleted file mode 100644 index 43820a7d27..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentRespVO.java +++ /dev/null @@ -1,97 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment; - -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 付款单 Response VO") -@Data -public class ErpFinancePaymentRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23752") - private Long id; - - @Schema(description = "付款单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "FKD888") - private String no; - - @Schema(description = "付款状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Integer status; - - @Schema(description = "付款时间", requiredMode = Schema.RequiredMode.REQUIRED) - private LocalDateTime paymentTime; - - @Schema(description = "财务人员编号", example = "19690") - private Long financeUserId; - @Schema(description = "财务人员名称", example = "张三") - private String financeUserName; - - @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29399") - private Long supplierId; - @Schema(description = "供应商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小番茄公司") - private String supplierName; - - @Schema(description = "付款账户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "28989") - private Long accountId; - @Schema(description = "付款账户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") - private String accountName; - - @Schema(description = "合计价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "13832") - private BigDecimal totalPrice; - - @Schema(description = "优惠金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "11600") - private BigDecimal discountPrice; - - @Schema(description = "实际价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000") - private BigDecimal paymentPrice; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "创建人", example = "芋道") - private String creator; - @Schema(description = "创建人名称", example = "芋道") - private String creatorName; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "付款项列表", requiredMode = Schema.RequiredMode.REQUIRED) - private List items; - - @Data - public static class Item { - - @Schema(description = "付款项编号", example = "11756") - private Long id; - - @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Integer bizType; - - @Schema(description = "业务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - private Long bizId; - - @Schema(description = "业务单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - private String bizNo; - - @Schema(description = "应付金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000") - private BigDecimal totalPrice; - - @Schema(description = "已付金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000") - private BigDecimal paidPrice; - - @Schema(description = "本次付款,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000") - @NotNull(message = "本次付款不能为空") - private BigDecimal paymentPrice; - - @Schema(description = "备注", example = "随便") - private String remark; - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentSaveReqVO.java deleted file mode 100644 index e50577b258..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentSaveReqVO.java +++ /dev/null @@ -1,74 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 付款单新增/修改 Request VO") -@Data -public class ErpFinancePaymentSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23752") - private Long id; - - @Schema(description = "付款时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "付款时间不能为空") - private LocalDateTime paymentTime; - - @Schema(description = "财务人员编号", example = "19690") - private Long financeUserId; - - @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29399") - @NotNull(message = "供应商编号不能为空") - private Long supplierId; - - @Schema(description = "付款账户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "28989") - @NotNull(message = "付款账户编号不能为空") - private Long accountId; - - @Schema(description = "优惠金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "11600") - @NotNull(message = "优惠金额不能为空") - private BigDecimal discountPrice; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "付款项列表", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "付款项列表不能为空") - @Valid - private List items; - - @Data - public static class Item { - - @Schema(description = "付款项编号", example = "11756") - private Long id; - - @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "业务类型不能为空") - private Integer bizType; - - @Schema(description = "业务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - @NotNull(message = "业务编号不能为空") - private Long bizId; - - @Schema(description = "已付金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000") - @NotNull(message = "已付金额不能为空") - private BigDecimal paidPrice; - - @Schema(description = "本次付款,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000") - @NotNull(message = "本次付款不能为空") - private BigDecimal paymentPrice; - - @Schema(description = "备注", example = "随便") - private String remark; - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/receipt/ErpFinanceReceiptPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/receipt/ErpFinanceReceiptPageReqVO.java deleted file mode 100644 index d3e938c66d..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/receipt/ErpFinanceReceiptPageReqVO.java +++ /dev/null @@ -1,48 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.finance.vo.receipt; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 收款单分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpFinanceReceiptPageReqVO extends PageParam { - - @Schema(description = "收款单编号", example = "XS001") - private String no; - - @Schema(description = "收款时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] receiptTime; - - @Schema(description = "客户编号", example = "1724") - private Long customerId; - - @Schema(description = "创建者", example = "666") - private String creator; - - @Schema(description = "财务人员编号", example = "888") - private String financeUserId; - - @Schema(description = "收款账户编号", example = "31189") - private Long accountId; - - @Schema(description = "收款状态", example = "2") - private Integer status; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "业务编号", example = "123") - private String bizNo; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/receipt/ErpFinanceReceiptRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/receipt/ErpFinanceReceiptRespVO.java deleted file mode 100644 index 5c7133fe68..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/receipt/ErpFinanceReceiptRespVO.java +++ /dev/null @@ -1,97 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.finance.vo.receipt; - -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 收款单 Response VO") -@Data -public class ErpFinanceReceiptRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23752") - private Long id; - - @Schema(description = "收款单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "FKD888") - private String no; - - @Schema(description = "收款状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Integer status; - - @Schema(description = "收款时间", requiredMode = Schema.RequiredMode.REQUIRED) - private LocalDateTime receiptTime; - - @Schema(description = "财务人员编号", example = "19690") - private Long financeUserId; - @Schema(description = "财务人员名称", example = "张三") - private String financeUserName; - - @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29399") - private Long customerId; - @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小番茄公司") - private String customerName; - - @Schema(description = "收款账户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "28989") - private Long accountId; - @Schema(description = "收款账户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") - private String accountName; - - @Schema(description = "合计价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "13832") - private BigDecimal totalPrice; - - @Schema(description = "优惠金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "11600") - private BigDecimal discountPrice; - - @Schema(description = "实际价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000") - private BigDecimal receiptPrice; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "创建人", example = "芋道") - private String creator; - @Schema(description = "创建人名称", example = "芋道") - private String creatorName; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "收款项列表", requiredMode = Schema.RequiredMode.REQUIRED) - private List items; - - @Data - public static class Item { - - @Schema(description = "收款项编号", example = "11756") - private Long id; - - @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Integer bizType; - - @Schema(description = "业务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - private Long bizId; - - @Schema(description = "业务单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - private String bizNo; - - @Schema(description = "应收金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000") - private BigDecimal totalPrice; - - @Schema(description = "已收金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000") - private BigDecimal receiptedPrice; - - @Schema(description = "本次收款,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000") - @NotNull(message = "本次收款不能为空") - private BigDecimal receiptPrice; - - @Schema(description = "备注", example = "随便") - private String remark; - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/receipt/ErpFinanceReceiptSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/receipt/ErpFinanceReceiptSaveReqVO.java deleted file mode 100644 index 126edf805d..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/receipt/ErpFinanceReceiptSaveReqVO.java +++ /dev/null @@ -1,74 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.finance.vo.receipt; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 收款单新增/修改 Request VO") -@Data -public class ErpFinanceReceiptSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23752") - private Long id; - - @Schema(description = "收款时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "收款时间不能为空") - private LocalDateTime receiptTime; - - @Schema(description = "财务人员编号", example = "19690") - private Long financeUserId; - - @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29399") - @NotNull(message = "客户编号不能为空") - private Long customerId; - - @Schema(description = "收款账户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "28989") - @NotNull(message = "收款账户编号不能为空") - private Long accountId; - - @Schema(description = "优惠金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "11600") - @NotNull(message = "优惠金额不能为空") - private BigDecimal discountPrice; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "收款项列表", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "收款项列表不能为空") - @Valid - private List items; - - @Data - public static class Item { - - @Schema(description = "收款项编号", example = "11756") - private Long id; - - @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "业务类型不能为空") - private Integer bizType; - - @Schema(description = "业务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - @NotNull(message = "业务编号不能为空") - private Long bizId; - - @Schema(description = "已收金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000") - @NotNull(message = "已收金额不能为空") - private BigDecimal receiptedPrice; - - @Schema(description = "本次收款,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000") - @NotNull(message = "本次收款不能为空") - private BigDecimal receiptPrice; - - @Schema(description = "备注", example = "随便") - private String remark; - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductCategoryController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductCategoryController.java deleted file mode 100644 index 85f51c1c60..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductCategoryController.java +++ /dev/null @@ -1,101 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.product; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategoryListReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategoryRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategorySaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductCategoryService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 产品分类") -@RestController -@RequestMapping("/erp/product-category") -@Validated -public class ErpProductCategoryController { - - @Resource - private ErpProductCategoryService productCategoryService; - - @PostMapping("/create") - @Operation(summary = "创建产品分类") - @PreAuthorize("@ss.hasPermission('erp:product-category:create')") - public CommonResult createProductCategory(@Valid @RequestBody ErpProductCategorySaveReqVO createReqVO) { - return success(productCategoryService.createProductCategory(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新产品分类") - @PreAuthorize("@ss.hasPermission('erp:product-category:update')") - public CommonResult updateProductCategory(@Valid @RequestBody ErpProductCategorySaveReqVO updateReqVO) { - productCategoryService.updateProductCategory(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除产品分类") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('erp:product-category:delete')") - public CommonResult deleteProductCategory(@RequestParam("id") Long id) { - productCategoryService.deleteProductCategory(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得产品分类") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:product-category:query')") - public CommonResult getProductCategory(@RequestParam("id") Long id) { - ErpProductCategoryDO category = productCategoryService.getProductCategory(id); - return success(BeanUtils.toBean(category, ErpProductCategoryRespVO.class)); - } - - @GetMapping("/list") - @Operation(summary = "获得产品分类列表") - @PreAuthorize("@ss.hasPermission('erp:product-category:query')") - public CommonResult> getProductCategoryList(@Valid ErpProductCategoryListReqVO listReqVO) { - List list = productCategoryService.getProductCategoryList(listReqVO); - return success(BeanUtils.toBean(list, ErpProductCategoryRespVO.class)); - } - - @GetMapping("/simple-list") - @Operation(summary = "获得产品分类精简列表", description = "只包含被开启的分类,主要用于前端的下拉选项") - public CommonResult> getProductCategorySimpleList() { - List list = productCategoryService.getProductCategoryList( - new ErpProductCategoryListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus())); - return success(convertList(list, category -> new ErpProductCategoryRespVO() - .setId(category.getId()).setName(category.getName()).setParentId(category.getParentId()))); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出产品分类 Excel") - @PreAuthorize("@ss.hasPermission('erp:product-category:export')") - @OperateLog(type = EXPORT) - public void exportProductCategoryExcel(@Valid ErpProductCategoryListReqVO listReqVO, - HttpServletResponse response) throws IOException { - List list = productCategoryService.getProductCategoryList(listReqVO); - // 导出 Excel - ExcelUtils.write(response, "产品分类.xls", "数据", ErpProductCategoryRespVO.class, - BeanUtils.toBean(list, ErpProductCategoryRespVO.class)); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java deleted file mode 100644 index cde7bd704f..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java +++ /dev/null @@ -1,105 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.product; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ProductSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 产品") -@RestController -@RequestMapping("/erp/product") -@Validated -public class ErpProductController { - - @Resource - private ErpProductService productService; - - @PostMapping("/create") - @Operation(summary = "创建产品") - @PreAuthorize("@ss.hasPermission('erp:product:create')") - public CommonResult createProduct(@Valid @RequestBody ProductSaveReqVO createReqVO) { - return success(productService.createProduct(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新产品") - @PreAuthorize("@ss.hasPermission('erp:product:update')") - public CommonResult updateProduct(@Valid @RequestBody ProductSaveReqVO updateReqVO) { - productService.updateProduct(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除产品") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('erp:product:delete')") - public CommonResult deleteProduct(@RequestParam("id") Long id) { - productService.deleteProduct(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得产品") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:product:query')") - public CommonResult getProduct(@RequestParam("id") Long id) { - ErpProductDO product = productService.getProduct(id); - return success(BeanUtils.toBean(product, ErpProductRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得产品分页") - @PreAuthorize("@ss.hasPermission('erp:product:query')") - public CommonResult> getProductPage(@Valid ErpProductPageReqVO pageReqVO) { - return success(productService.getProductVOPage(pageReqVO)); - } - - @GetMapping("/simple-list") - @Operation(summary = "获得产品精简列表", description = "只包含被开启的产品,主要用于前端的下拉选项") - public CommonResult> getProductSimpleList() { - List list = productService.getProductVOListByStatus(CommonStatusEnum.ENABLE.getStatus()); - return success(convertList(list, product -> new ErpProductRespVO().setId(product.getId()) - .setName(product.getName()).setBarCode(product.getBarCode()) - .setCategoryId(product.getCategoryId()).setCategoryName(product.getCategoryName()) - .setUnitId(product.getUnitId()).setUnitName(product.getUnitName()) - .setPurchasePrice(product.getPurchasePrice()).setSalePrice(product.getSalePrice()).setMinPrice(product.getMinPrice()))); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出产品 Excel") - @PreAuthorize("@ss.hasPermission('erp:product:export')") - @OperateLog(type = EXPORT) - public void exportProductExcel(@Valid ErpProductPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - PageResult pageResult = productService.getProductVOPage(pageReqVO); - // 导出 Excel - ExcelUtils.write(response, "产品.xls", "数据", ErpProductRespVO.class, - pageResult.getList()); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductUnitController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductUnitController.java deleted file mode 100644 index 0be3db01c8..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductUnitController.java +++ /dev/null @@ -1,102 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.product; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 产品单位") -@RestController -@RequestMapping("/erp/product-unit") -@Validated -public class ErpProductUnitController { - - @Resource - private ErpProductUnitService productUnitService; - - @PostMapping("/create") - @Operation(summary = "创建产品单位") - @PreAuthorize("@ss.hasPermission('erp:product-unit:create')") - public CommonResult createProductUnit(@Valid @RequestBody ErpProductUnitSaveReqVO createReqVO) { - return success(productUnitService.createProductUnit(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新产品单位") - @PreAuthorize("@ss.hasPermission('erp:product-unit:update')") - public CommonResult updateProductUnit(@Valid @RequestBody ErpProductUnitSaveReqVO updateReqVO) { - productUnitService.updateProductUnit(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除产品单位") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('erp:product-unit:delete')") - public CommonResult deleteProductUnit(@RequestParam("id") Long id) { - productUnitService.deleteProductUnit(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得产品单位") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:product-unit:query')") - public CommonResult getProductUnit(@RequestParam("id") Long id) { - ErpProductUnitDO productUnit = productUnitService.getProductUnit(id); - return success(BeanUtils.toBean(productUnit, ErpProductUnitRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得产品单位分页") - @PreAuthorize("@ss.hasPermission('erp:product-unit:query')") - public CommonResult> getProductUnitPage(@Valid ErpProductUnitPageReqVO pageReqVO) { - PageResult pageResult = productUnitService.getProductUnitPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, ErpProductUnitRespVO.class)); - } - - @GetMapping("/simple-list") - @Operation(summary = "获得产品单位精简列表", description = "只包含被开启的单位,主要用于前端的下拉选项") - public CommonResult> getProductUnitSimpleList() { - List list = productUnitService.getProductUnitListByStatus(CommonStatusEnum.ENABLE.getStatus()); - return success(convertList(list, unit -> new ErpProductUnitRespVO().setId(unit.getId()).setName(unit.getName()))); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出产品单位 Excel") - @PreAuthorize("@ss.hasPermission('erp:product-unit:export')") - @OperateLog(type = EXPORT) - public void exportProductUnitExcel(@Valid ErpProductUnitPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = productUnitService.getProductUnitPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "产品单位.xls", "数据", ErpProductUnitRespVO.class, - BeanUtils.toBean(list, ErpProductUnitRespVO.class)); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategoryListReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategoryListReqVO.java deleted file mode 100644 index b9b530e7d9..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategoryListReqVO.java +++ /dev/null @@ -1,16 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.product.vo.category; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "管理后台 - ERP 产品分类列表 Request VO") -@Data -public class ErpProductCategoryListReqVO { - - @Schema(description = "分类名称", example = "芋艿") - private String name; - - @Schema(description = "开启状态", example = "1") - private Integer status; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategoryRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategoryRespVO.java deleted file mode 100644 index 23d7d9e8ff..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategoryRespVO.java +++ /dev/null @@ -1,47 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.product.vo.category; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.yudao.module.system.enums.DictTypeConstants; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - ERP 产品分类 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpProductCategoryRespVO { - - @Schema(description = "分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5860") - @ExcelProperty("分类编号") - private Long id; - - @Schema(description = "父分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21829") - @ExcelProperty("父分类编号") - private Long parentId; - - @Schema(description = "分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") - @ExcelProperty("分类名称") - private String name; - - @Schema(description = "分类编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "S110") - @ExcelProperty("分类编码") - private String code; - - @Schema(description = "分类排序", example = "10") - @ExcelProperty("分类排序") - private Integer sort; - - @Schema(description = "开启状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty(value = "开启状态", converter = DictConvert.class) - @DictFormat(DictTypeConstants.COMMON_STATUS) - private Integer status; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategorySaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategorySaveReqVO.java deleted file mode 100644 index a3c82dc937..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategorySaveReqVO.java +++ /dev/null @@ -1,35 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.product.vo.category; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Schema(description = "管理后台 - ERP 产品分类新增/修改 Request VO") -@Data -public class ErpProductCategorySaveReqVO { - - @Schema(description = "分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5860") - private Long id; - - @Schema(description = "父分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21829") - @NotNull(message = "父分类编号不能为空") - private Long parentId; - - @Schema(description = "分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") - @NotEmpty(message = "分类名称不能为空") - private String name; - - @Schema(description = "分类编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "S110") - @NotEmpty(message = "分类编码不能为空") - private String code; - - @Schema(description = "分类排序", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") - @NotNull(message = "分类排序不能为空") - private Integer sort; - - @Schema(description = "开启状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "开启状态不能为空") - private Integer status; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductPageReqVO.java deleted file mode 100644 index de4f8142a6..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductPageReqVO.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.product.vo.product; - -import lombok.*; -import io.swagger.v3.oas.annotations.media.Schema; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 产品分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpProductPageReqVO extends PageParam { - - @Schema(description = "产品名称", example = "李四") - private String name; - - @Schema(description = "产品分类编号", example = "11161") - private Long categoryId; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java deleted file mode 100644 index 9be9bc2559..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java +++ /dev/null @@ -1,76 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.product.vo.product; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - ERP 产品 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpProductRespVO { - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15672") - @ExcelProperty("产品编号") - private Long id; - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") - @ExcelProperty("产品名称") - private String name; - - @Schema(description = "产品条码", requiredMode = Schema.RequiredMode.REQUIRED, example = "X110") - @ExcelProperty("产品条码") - private String barCode; - - @Schema(description = "产品分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11161") - private Long categoryId; - @Schema(description = "产品分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "水果") - @ExcelProperty("产品分类") - private String categoryName; - - @Schema(description = "单位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "8869") - private Long unitId; - @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "个") - @ExcelProperty("单位") - private String unitName; - - @Schema(description = "产品状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @ExcelProperty("产品状态") - private Integer status; - - @Schema(description = "产品规格", example = "红色") - @ExcelProperty("产品规格") - private String standard; - - @Schema(description = "产品备注", example = "你猜") - @ExcelProperty("产品备注") - private String remark; - - @Schema(description = "保质期天数", example = "10") - @ExcelProperty("保质期天数") - private Integer expiryDay; - - @Schema(description = "基础重量(kg)", example = "1.00") - @ExcelProperty("基础重量(kg)") - private BigDecimal weight; - - @Schema(description = "采购价格,单位:元", example = "10.30") - @ExcelProperty("采购价格,单位:元") - private BigDecimal purchasePrice; - - @Schema(description = "销售价格,单位:元", example = "74.32") - @ExcelProperty("销售价格,单位:元") - private BigDecimal salePrice; - - @Schema(description = "最低价格,单位:元", example = "161.87") - @ExcelProperty("最低价格,单位:元") - private BigDecimal minPrice; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ProductSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ProductSaveReqVO.java deleted file mode 100644 index 6cf806e3e1..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ProductSaveReqVO.java +++ /dev/null @@ -1,58 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.product.vo.product; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; - -@Schema(description = "管理后台 - ERP 产品新增/修改 Request VO") -@Data -public class ProductSaveReqVO { - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15672") - private Long id; - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") - @NotEmpty(message = "产品名称不能为空") - private String name; - - @Schema(description = "产品条码", requiredMode = Schema.RequiredMode.REQUIRED, example = "X110") - @NotEmpty(message = "产品条码不能为空") - private String barCode; - - @Schema(description = "产品分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11161") - @NotNull(message = "产品分类编号不能为空") - private Long categoryId; - - @Schema(description = "单位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "8869") - @NotNull(message = "单位编号不能为空") - private Long unitId; - - @Schema(description = "产品状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @NotNull(message = "产品状态不能为空") - private Integer status; - - @Schema(description = "产品规格", example = "红色") - private String standard; - - @Schema(description = "产品备注", example = "你猜") - private String remark; - - @Schema(description = "保质期天数", example = "10") - private Integer expiryDay; - - @Schema(description = "基础重量(kg)", example = "1.00") - private BigDecimal weight; - - @Schema(description = "采购价格,单位:元", example = "10.30") - private BigDecimal purchasePrice; - - @Schema(description = "销售价格,单位:元", example = "74.32") - private BigDecimal salePrice; - - @Schema(description = "最低价格,单位:元", example = "161.87") - private BigDecimal minPrice; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitPageReqVO.java deleted file mode 100644 index 87119c1264..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitPageReqVO.java +++ /dev/null @@ -1,21 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Schema(description = "管理后台 - ERP 产品单位分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpProductUnitPageReqVO extends PageParam { - - @Schema(description = "单位名字", example = "芋艿") - private String name; - - @Schema(description = "单位状态", example = "1") - private Integer status; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitRespVO.java deleted file mode 100644 index 06f604920c..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitRespVO.java +++ /dev/null @@ -1,34 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.module.system.enums.DictTypeConstants; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - ERP 产品单位 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpProductUnitRespVO { - - @Schema(description = "单位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31254") - @ExcelProperty("单位编号") - private Long id; - - @Schema(description = "单位名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") - @ExcelProperty("单位名字") - private String name; - - @Schema(description = "单位状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty("单位状态") - @DictFormat(DictTypeConstants.COMMON_STATUS) - private Integer status; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitSaveReqVO.java deleted file mode 100644 index e413ec1bf0..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitSaveReqVO.java +++ /dev/null @@ -1,26 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.validation.InEnum; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Schema(description = "管理后台 - ERP 产品单位新增/修改 Request VO") -@Data -public class ErpProductUnitSaveReqVO { - - @Schema(description = "单位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31254") - private Long id; - - @Schema(description = "单位名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") - @NotEmpty(message = "单位名字不能为空") - private String name; - - @Schema(description = "单位状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "单位状态不能为空") - @InEnum(CommonStatusEnum.class) - private Integer status; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseInController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseInController.java deleted file mode 100644 index d33c7ae4d6..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseInController.java +++ /dev/null @@ -1,165 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInItemDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseInService; -import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 采购入库") -@RestController -@RequestMapping("/erp/purchase-in") -@Validated -public class ErpPurchaseInController { - - @Resource - private ErpPurchaseInService purchaseInService; - @Resource - private ErpStockService stockService; - @Resource - private ErpProductService productService; - @Resource - private ErpSupplierService supplierService; - - @Resource - private AdminUserApi adminUserApi; - - @PostMapping("/create") - @Operation(summary = "创建采购入库") - @PreAuthorize("@ss.hasPermission('erp:purchase-in:create')") - public CommonResult createPurchaseIn(@Valid @RequestBody ErpPurchaseInSaveReqVO createReqVO) { - return success(purchaseInService.createPurchaseIn(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新采购入库") - @PreAuthorize("@ss.hasPermission('erp:purchase-in:update')") - public CommonResult updatePurchaseIn(@Valid @RequestBody ErpPurchaseInSaveReqVO updateReqVO) { - purchaseInService.updatePurchaseIn(updateReqVO); - return success(true); - } - - @PutMapping("/update-status") - @Operation(summary = "更新采购入库的状态") - @PreAuthorize("@ss.hasPermission('erp:purchase-in:update-status')") - public CommonResult updatePurchaseInStatus(@RequestParam("id") Long id, - @RequestParam("status") Integer status) { - purchaseInService.updatePurchaseInStatus(id, status); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除采购入库") - @Parameter(name = "ids", description = "编号数组", required = true) - @PreAuthorize("@ss.hasPermission('erp:purchase-in:delete')") - public CommonResult deletePurchaseIn(@RequestParam("ids") List ids) { - purchaseInService.deletePurchaseIn(ids); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得采购入库") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:purchase-in:query')") - public CommonResult getPurchaseIn(@RequestParam("id") Long id) { - ErpPurchaseInDO purchaseIn = purchaseInService.getPurchaseIn(id); - if (purchaseIn == null) { - return success(null); - } - List purchaseInItemList = purchaseInService.getPurchaseInItemListByInId(id); - Map productMap = productService.getProductVOMap( - convertSet(purchaseInItemList, ErpPurchaseInItemDO::getProductId)); - return success(BeanUtils.toBean(purchaseIn, ErpPurchaseInRespVO.class, purchaseInVO -> - purchaseInVO.setItems(BeanUtils.toBean(purchaseInItemList, ErpPurchaseInRespVO.Item.class, item -> { - ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId()); - item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO); - MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); - })))); - } - - @GetMapping("/page") - @Operation(summary = "获得采购入库分页") - @PreAuthorize("@ss.hasPermission('erp:purchase-in:query')") - public CommonResult> getPurchaseInPage(@Valid ErpPurchaseInPageReqVO pageReqVO) { - PageResult pageResult = purchaseInService.getPurchaseInPage(pageReqVO); - return success(buildPurchaseInVOPageResult(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出采购入库 Excel") - @PreAuthorize("@ss.hasPermission('erp:purchase-in:export')") - @OperateLog(type = EXPORT) - public void exportPurchaseInExcel(@Valid ErpPurchaseInPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = buildPurchaseInVOPageResult(purchaseInService.getPurchaseInPage(pageReqVO)).getList(); - // 导出 Excel - ExcelUtils.write(response, "采购入库.xls", "数据", ErpPurchaseInRespVO.class, list); - } - - private PageResult buildPurchaseInVOPageResult(PageResult pageResult) { - if (CollUtil.isEmpty(pageResult.getList())) { - return PageResult.empty(pageResult.getTotal()); - } - // 1.1 入库项 - List purchaseInItemList = purchaseInService.getPurchaseInItemListByInIds( - convertSet(pageResult.getList(), ErpPurchaseInDO::getId)); - Map> purchaseInItemMap = convertMultiMap(purchaseInItemList, ErpPurchaseInItemDO::getInId); - // 1.2 产品信息 - Map productMap = productService.getProductVOMap( - convertSet(purchaseInItemList, ErpPurchaseInItemDO::getProductId)); - // 1.3 供应商信息 - Map supplierMap = supplierService.getSupplierMap( - convertSet(pageResult.getList(), ErpPurchaseInDO::getSupplierId)); - // 1.4 管理员信息 - Map userMap = adminUserApi.getUserMap( - convertSet(pageResult.getList(), purchaseIn -> Long.parseLong(purchaseIn.getCreator()))); - // 2. 开始拼接 - return BeanUtils.toBean(pageResult, ErpPurchaseInRespVO.class, purchaseIn -> { - purchaseIn.setItems(BeanUtils.toBean(purchaseInItemMap.get(purchaseIn.getId()), ErpPurchaseInRespVO.Item.class, - item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); - purchaseIn.setProductNames(CollUtil.join(purchaseIn.getItems(), ",", ErpPurchaseInRespVO.Item::getProductName)); - MapUtils.findAndThen(supplierMap, purchaseIn.getSupplierId(), supplier -> purchaseIn.setSupplierName(supplier.getName())); - MapUtils.findAndThen(userMap, Long.parseLong(purchaseIn.getCreator()), user -> purchaseIn.setCreatorName(user.getNickname())); - }); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseOrderController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseOrderController.java deleted file mode 100644 index 203d2fec0b..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseOrderController.java +++ /dev/null @@ -1,164 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderService; -import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 采购订单") -@RestController -@RequestMapping("/erp/purchase-order") -@Validated -public class ErpPurchaseOrderController { - - @Resource - private ErpPurchaseOrderService purchaseOrderService; - @Resource - private ErpStockService stockService; - @Resource - private ErpProductService productService; - @Resource - private ErpSupplierService supplierService; - - @Resource - private AdminUserApi adminUserApi; - - @PostMapping("/create") - @Operation(summary = "创建采购订单") - @PreAuthorize("@ss.hasPermission('erp:purchase-create:create')") - public CommonResult createPurchaseOrder(@Valid @RequestBody ErpPurchaseOrderSaveReqVO createReqVO) { - return success(purchaseOrderService.createPurchaseOrder(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新采购订单") - @PreAuthorize("@ss.hasPermission('erp:purchase-create:update')") - public CommonResult updatePurchaseOrder(@Valid @RequestBody ErpPurchaseOrderSaveReqVO updateReqVO) { - purchaseOrderService.updatePurchaseOrder(updateReqVO); - return success(true); - } - - @PutMapping("/update-status") - @Operation(summary = "更新采购订单的状态") - @PreAuthorize("@ss.hasPermission('erp:purchase-create:update-status')") - public CommonResult updatePurchaseOrderStatus(@RequestParam("id") Long id, - @RequestParam("status") Integer status) { - purchaseOrderService.updatePurchaseOrderStatus(id, status); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除采购订单") - @Parameter(name = "ids", description = "编号数组", required = true) - @PreAuthorize("@ss.hasPermission('erp:purchase-create:delete')") - public CommonResult deletePurchaseOrder(@RequestParam("ids") List ids) { - purchaseOrderService.deletePurchaseOrder(ids); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得采购订单") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:purchase-create:query')") - public CommonResult getPurchaseOrder(@RequestParam("id") Long id) { - ErpPurchaseOrderDO purchaseOrder = purchaseOrderService.getPurchaseOrder(id); - if (purchaseOrder == null) { - return success(null); - } - List purchaseOrderItemList = purchaseOrderService.getPurchaseOrderItemListByOrderId(id); - Map productMap = productService.getProductVOMap( - convertSet(purchaseOrderItemList, ErpPurchaseOrderItemDO::getProductId)); - return success(BeanUtils.toBean(purchaseOrder, ErpPurchaseOrderRespVO.class, purchaseOrderVO -> - purchaseOrderVO.setItems(BeanUtils.toBean(purchaseOrderItemList, ErpPurchaseOrderRespVO.Item.class, item -> { - BigDecimal purchaseCount = stockService.getStockCount(item.getProductId()); - item.setStockCount(purchaseCount != null ? purchaseCount : BigDecimal.ZERO); - MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); - })))); - } - - @GetMapping("/page") - @Operation(summary = "获得采购订单分页") - @PreAuthorize("@ss.hasPermission('erp:purchase-create:query')") - public CommonResult> getPurchaseOrderPage(@Valid ErpPurchaseOrderPageReqVO pageReqVO) { - PageResult pageResult = purchaseOrderService.getPurchaseOrderPage(pageReqVO); - return success(buildPurchaseOrderVOPageResult(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出采购订单 Excel") - @PreAuthorize("@ss.hasPermission('erp:purchase-create:export')") - @OperateLog(type = EXPORT) - public void exportPurchaseOrderExcel(@Valid ErpPurchaseOrderPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = buildPurchaseOrderVOPageResult(purchaseOrderService.getPurchaseOrderPage(pageReqVO)).getList(); - // 导出 Excel - ExcelUtils.write(response, "采购订单.xls", "数据", ErpPurchaseOrderRespVO.class, list); - } - - private PageResult buildPurchaseOrderVOPageResult(PageResult pageResult) { - if (CollUtil.isEmpty(pageResult.getList())) { - return PageResult.empty(pageResult.getTotal()); - } - // 1.1 订单项 - List purchaseOrderItemList = purchaseOrderService.getPurchaseOrderItemListByOrderIds( - convertSet(pageResult.getList(), ErpPurchaseOrderDO::getId)); - Map> purchaseOrderItemMap = convertMultiMap(purchaseOrderItemList, ErpPurchaseOrderItemDO::getOrderId); - // 1.2 产品信息 - Map productMap = productService.getProductVOMap( - convertSet(purchaseOrderItemList, ErpPurchaseOrderItemDO::getProductId)); - // 1.3 供应商信息 - Map supplierMap = supplierService.getSupplierMap( - convertSet(pageResult.getList(), ErpPurchaseOrderDO::getSupplierId)); - // 1.4 管理员信息 - Map userMap = adminUserApi.getUserMap( - convertSet(pageResult.getList(), purchaseOrder -> Long.parseLong(purchaseOrder.getCreator()))); - // 2. 开始拼接 - return BeanUtils.toBean(pageResult, ErpPurchaseOrderRespVO.class, purchaseOrder -> { - purchaseOrder.setItems(BeanUtils.toBean(purchaseOrderItemMap.get(purchaseOrder.getId()), ErpPurchaseOrderRespVO.Item.class, - item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); - purchaseOrder.setProductNames(CollUtil.join(purchaseOrder.getItems(), ",", ErpPurchaseOrderRespVO.Item::getProductName)); - MapUtils.findAndThen(supplierMap, purchaseOrder.getSupplierId(), supplier -> purchaseOrder.setSupplierName(supplier.getName())); - MapUtils.findAndThen(userMap, Long.parseLong(purchaseOrder.getCreator()), user -> purchaseOrder.setCreatorName(user.getNickname())); - }); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseReturnController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseReturnController.java deleted file mode 100644 index 0df31bcf19..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseReturnController.java +++ /dev/null @@ -1,165 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnItemDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseReturnService; -import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 采购退货") -@RestController -@RequestMapping("/erp/purchase-return") -@Validated -public class ErpPurchaseReturnController { - - @Resource - private ErpPurchaseReturnService purchaseReturnService; - @Resource - private ErpStockService stockService; - @Resource - private ErpProductService productService; - @Resource - private ErpSupplierService supplierService; - - @Resource - private AdminUserApi adminUserApi; - - @PostMapping("/create") - @Operation(summary = "创建采购退货") - @PreAuthorize("@ss.hasPermission('erp:purchase-return:create')") - public CommonResult createPurchaseReturn(@Valid @RequestBody ErpPurchaseReturnSaveReqVO createReqVO) { - return success(purchaseReturnService.createPurchaseReturn(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新采购退货") - @PreAuthorize("@ss.hasPermission('erp:purchase-return:update')") - public CommonResult updatePurchaseReturn(@Valid @RequestBody ErpPurchaseReturnSaveReqVO updateReqVO) { - purchaseReturnService.updatePurchaseReturn(updateReqVO); - return success(true); - } - - @PutMapping("/update-status") - @Operation(summary = "更新采购退货的状态") - @PreAuthorize("@ss.hasPermission('erp:purchase-return:update-status')") - public CommonResult updatePurchaseReturnStatus(@RequestParam("id") Long id, - @RequestParam("status") Integer status) { - purchaseReturnService.updatePurchaseReturnStatus(id, status); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除采购退货") - @Parameter(name = "ids", description = "编号数组", required = true) - @PreAuthorize("@ss.hasPermission('erp:purchase-return:delete')") - public CommonResult deletePurchaseReturn(@RequestParam("ids") List ids) { - purchaseReturnService.deletePurchaseReturn(ids); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得采购退货") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:purchase-return:query')") - public CommonResult getPurchaseReturn(@RequestParam("id") Long id) { - ErpPurchaseReturnDO purchaseReturn = purchaseReturnService.getPurchaseReturn(id); - if (purchaseReturn == null) { - return success(null); - } - List purchaseReturnItemList = purchaseReturnService.getPurchaseReturnItemListByReturnId(id); - Map productMap = productService.getProductVOMap( - convertSet(purchaseReturnItemList, ErpPurchaseReturnItemDO::getProductId)); - return success(BeanUtils.toBean(purchaseReturn, ErpPurchaseReturnRespVO.class, purchaseReturnVO -> - purchaseReturnVO.setItems(BeanUtils.toBean(purchaseReturnItemList, ErpPurchaseReturnRespVO.Item.class, item -> { - ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId()); - item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO); - MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); - })))); - } - - @GetMapping("/page") - @Operation(summary = "获得采购退货分页") - @PreAuthorize("@ss.hasPermission('erp:purchase-return:query')") - public CommonResult> getPurchaseReturnPage(@Valid ErpPurchaseReturnPageReqVO pageReqVO) { - PageResult pageResult = purchaseReturnService.getPurchaseReturnPage(pageReqVO); - return success(buildPurchaseReturnVOPageResult(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出采购退货 Excel") - @PreAuthorize("@ss.hasPermission('erp:purchase-return:export')") - @OperateLog(type = EXPORT) - public void exportPurchaseReturnExcel(@Valid ErpPurchaseReturnPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = buildPurchaseReturnVOPageResult(purchaseReturnService.getPurchaseReturnPage(pageReqVO)).getList(); - // 导出 Excel - ExcelUtils.write(response, "采购退货.xls", "数据", ErpPurchaseReturnRespVO.class, list); - } - - private PageResult buildPurchaseReturnVOPageResult(PageResult pageResult) { - if (CollUtil.isEmpty(pageResult.getList())) { - return PageResult.empty(pageResult.getTotal()); - } - // 1.1 退货项 - List purchaseReturnItemList = purchaseReturnService.getPurchaseReturnItemListByReturnIds( - convertSet(pageResult.getList(), ErpPurchaseReturnDO::getId)); - Map> purchaseReturnItemMap = convertMultiMap(purchaseReturnItemList, ErpPurchaseReturnItemDO::getReturnId); - // 1.2 产品信息 - Map productMap = productService.getProductVOMap( - convertSet(purchaseReturnItemList, ErpPurchaseReturnItemDO::getProductId)); - // 1.3 供应商信息 - Map supplierMap = supplierService.getSupplierMap( - convertSet(pageResult.getList(), ErpPurchaseReturnDO::getSupplierId)); - // 1.4 管理员信息 - Map userMap = adminUserApi.getUserMap( - convertSet(pageResult.getList(), purchaseReturn -> Long.parseLong(purchaseReturn.getCreator()))); - // 2. 开始拼接 - return BeanUtils.toBean(pageResult, ErpPurchaseReturnRespVO.class, purchaseReturn -> { - purchaseReturn.setItems(BeanUtils.toBean(purchaseReturnItemMap.get(purchaseReturn.getId()), ErpPurchaseReturnRespVO.Item.class, - item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); - purchaseReturn.setProductNames(CollUtil.join(purchaseReturn.getItems(), ",", ErpPurchaseReturnRespVO.Item::getProductName)); - MapUtils.findAndThen(supplierMap, purchaseReturn.getSupplierId(), supplier -> purchaseReturn.setSupplierName(supplier.getName())); - MapUtils.findAndThen(userMap, Long.parseLong(purchaseReturn.getCreator()), user -> purchaseReturn.setCreatorName(user.getNickname())); - }); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpSupplierController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpSupplierController.java deleted file mode 100644 index 88253286db..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpSupplierController.java +++ /dev/null @@ -1,102 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO; -import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 供应商") -@RestController -@RequestMapping("/erp/supplier") -@Validated -public class ErpSupplierController { - - @Resource - private ErpSupplierService supplierService; - - @PostMapping("/create") - @Operation(summary = "创建供应商") - @PreAuthorize("@ss.hasPermission('erp:supplier:create')") - public CommonResult createSupplier(@Valid @RequestBody ErpSupplierSaveReqVO createReqVO) { - return success(supplierService.createSupplier(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新供应商") - @PreAuthorize("@ss.hasPermission('erp:supplier:update')") - public CommonResult updateSupplier(@Valid @RequestBody ErpSupplierSaveReqVO updateReqVO) { - supplierService.updateSupplier(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除供应商") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('erp:supplier:delete')") - public CommonResult deleteSupplier(@RequestParam("id") Long id) { - supplierService.deleteSupplier(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得供应商") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:supplier:query')") - public CommonResult getSupplier(@RequestParam("id") Long id) { - ErpSupplierDO supplier = supplierService.getSupplier(id); - return success(BeanUtils.toBean(supplier, ErpSupplierRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得供应商分页") - @PreAuthorize("@ss.hasPermission('erp:supplier:query')") - public CommonResult> getSupplierPage(@Valid ErpSupplierPageReqVO pageReqVO) { - PageResult pageResult = supplierService.getSupplierPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, ErpSupplierRespVO.class)); - } - - @GetMapping("/simple-list") - @Operation(summary = "获得供应商精简列表", description = "只包含被开启的供应商,主要用于前端的下拉选项") - public CommonResult> getSupplierSimpleList() { - List list = supplierService.getSupplierListByStatus(CommonStatusEnum.ENABLE.getStatus()); - return success(convertList(list, supplier -> new ErpSupplierRespVO().setId(supplier.getId()).setName(supplier.getName()))); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出供应商 Excel") - @PreAuthorize("@ss.hasPermission('erp:supplier:export')") - @OperateLog(type = EXPORT) - public void exportSupplierExcel(@Valid ErpSupplierPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = supplierService.getSupplierPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "供应商.xls", "数据", ErpSupplierRespVO.class, - BeanUtils.toBean(list, ErpSupplierRespVO.class)); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInPageReqVO.java deleted file mode 100644 index e84607ce4e..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInPageReqVO.java +++ /dev/null @@ -1,61 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 采购入库分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpPurchaseInPageReqVO extends PageParam { - - public static final Integer PAYMENT_STATUS_NONE = 0; - public static final Integer PAYMENT_STATUS_PART = 1; - public static final Integer PAYMENT_STATUS_ALL = 2; - - @Schema(description = "采购单编号", example = "XS001") - private String no; - - @Schema(description = "供应商编号", example = "1724") - private Long supplierId; - - @Schema(description = "入库时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] inTime; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "入库状态", example = "2") - private Integer status; - - @Schema(description = "创建者") - private String creator; - - @Schema(description = "产品编号", example = "1") - private Long productId; - - @Schema(description = "仓库编号", example = "1") - private Long warehouseId; - - @Schema(description = "结算账号编号", example = "1") - private Long accountId; - - @Schema(description = "付款状态", example = "1") - private Integer paymentStatus; - - @Schema(description = "是否可付款", example = "true") - private Boolean paymentEnable; // 对应 paymentStatus = [0, 1] - - @Schema(description = "采购单号", example = "1") - private String orderNo; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInRespVO.java deleted file mode 100644 index beeeab8692..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInRespVO.java +++ /dev/null @@ -1,145 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 采购入库 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpPurchaseInRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "入库单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001") - @ExcelProperty("入库单编号") - private String no; - - @Schema(description = "入库状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @ExcelProperty("入库状态") - private Integer status; - - @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1724") - private Long supplierId; - @Schema(description = "供应商名称", example = "芋道") - @ExcelProperty("供应商名称") - private String supplierName; - - @Schema(description = "结算账户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "311.89") - @ExcelProperty("结算账户编号") - private Long accountId; - - @Schema(description = "入库时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("入库时间") - private LocalDateTime inTime; - - @Schema(description = "采购订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - private Long orderId; - @Schema(description = "采购订单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001") - private String orderNo; - - @Schema(description = "合计数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663") - @ExcelProperty("合计数量") - private BigDecimal totalCount; - @Schema(description = "最终合计价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906") - @ExcelProperty("最终合计价格") - private BigDecimal totalPrice; - @Schema(description = "已付款金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal paymentPrice; - - @Schema(description = "合计产品价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal totalProductPrice; - - @Schema(description = "合计税额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal totalTaxPrice; - - @Schema(description = "优惠率,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88") - private BigDecimal discountPercent; - - @Schema(description = "优惠金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal discountPrice; - - @Schema(description = "定金金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal otherPrice; - - @Schema(description = "附件地址", example = "https://www.iocoder.cn") - @ExcelProperty("附件地址") - private String fileUrl; - - @Schema(description = "备注", example = "你猜") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "创建人", example = "芋道") - private String creator; - @Schema(description = "创建人名称", example = "芋道") - private String creatorName; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "入库项列表", requiredMode = Schema.RequiredMode.REQUIRED) - private List items; - - @Schema(description = "产品信息", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("产品信息") - private String productNames; - - @Data - public static class Item { - - @Schema(description = "入库项编号", example = "11756") - private Long id; - - @Schema(description = "采购订单项编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - private Long orderItemId; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long warehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productId; - - @Schema(description = "产品单位单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productUnitId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "税率,百分比", example = "99.88") - private BigDecimal taxPercent; - - @Schema(description = "税额,单位:元", example = "100.00") - private BigDecimal taxPrice; - - @Schema(description = "备注", example = "随便") - private String remark; - - // ========== 关联字段 ========== - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "巧克力") - private String productName; - @Schema(description = "产品条码", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985") - private String productBarCode; - @Schema(description = "产品单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "盒") - private String productUnitName; - - @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal stockCount; // 该字段仅仅在“详情”和“编辑”时使用 - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInSaveReqVO.java deleted file mode 100644 index 80edeec6d9..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInSaveReqVO.java +++ /dev/null @@ -1,81 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 采购入库新增/修改 Request VO") -@Data -public class ErpPurchaseInSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - private Long id; - - @Schema(description = "结算账户编号", example = "31189") - private Long accountId; - - @Schema(description = "入库时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "入库时间不能为空") - private LocalDateTime inTime; - - @Schema(description = "采购订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - @NotNull(message = "采购订单编号不能为空") - private Long orderId; - - @Schema(description = "优惠率,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88") - private BigDecimal discountPercent; - - @Schema(description = "其它金额,单位:元", example = "7127") - private BigDecimal otherPrice; - - @Schema(description = "附件地址", example = "https://www.iocoder.cn") - private String fileUrl; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "入库清单列表") - private List items; - - @Data - public static class Item { - - @Schema(description = "入库项编号", example = "11756") - private Long id; - - @Schema(description = "采购订单项编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - @NotNull(message = "采购订单项编号不能为空") - private Long orderItemId; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "仓库编号不能为空") - private Long warehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品编号不能为空") - private Long productId; - - @Schema(description = "产品单位单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品单位单位不能为空") - private Long productUnitId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "税率,百分比", example = "99.88") - private BigDecimal taxPercent; - - @Schema(description = "备注", example = "随便") - private String remark; - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderPageReqVO.java deleted file mode 100644 index 8bf70d4275..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderPageReqVO.java +++ /dev/null @@ -1,80 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 采购订单分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpPurchaseOrderPageReqVO extends PageParam { - - /** - * 入库状态 - 无 - */ - public static final Integer IN_STATUS_NONE = 0; - /** - * 入库状态 - 部分 - */ - public static final Integer IN_STATUS_PART = 1; - /** - * 入库状态 - 全部 - */ - public static final Integer IN_STATUS_ALL = 2; - - /** - * 退货状态 - 无 - */ - public static final Integer RETURN_STATUS_NONE = 0; - /** - * 退货状态 - 部分 - */ - public static final Integer RETURN_STATUS_PART = 1; - /** - * 退货状态 - 全部 - */ - public static final Integer RETURN_STATUS_ALL = 2; - - @Schema(description = "采购单编号", example = "XS001") - private String no; - - @Schema(description = "供应商编号", example = "1724") - private Long supplierId; - - @Schema(description = "采购时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] orderTime; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "采购状态", example = "2") - private Integer status; - - @Schema(description = "创建者") - private String creator; - - @Schema(description = "产品编号", example = "1") - private Long productId; - - @Schema(description = "入库状态", example = "2") - private Integer inStatus; - - @Schema(description = "退货状态", example = "2") - private Integer returnStatus; - - @Schema(description = "是否可入库", example = "true") - private Boolean inEnable; - - @Schema(description = "是否可退货", example = "true") - private Boolean returnEnable; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderRespVO.java deleted file mode 100644 index bc76720eed..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderRespVO.java +++ /dev/null @@ -1,152 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 采购订单 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpPurchaseOrderRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "采购单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001") - @ExcelProperty("采购单编号") - private String no; - - @Schema(description = "采购状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @ExcelProperty("采购状态") - private Integer status; - - @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1724") - private Long supplierId; - @Schema(description = "供应商名称", example = "芋道") - @ExcelProperty("供应商名称") - private String supplierName; - - @Schema(description = "结算账户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "311.89") - @ExcelProperty("结算账户编号") - private Long accountId; - - @Schema(description = "采购时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("采购时间") - private LocalDateTime orderTime; - - @Schema(description = "合计数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663") - @ExcelProperty("合计数量") - private BigDecimal totalCount; - @Schema(description = "最终合计价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906") - @ExcelProperty("最终合计价格") - private BigDecimal totalPrice; - - @Schema(description = "合计产品价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal totalProductPrice; - - @Schema(description = "合计税额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal totalTaxPrice; - - @Schema(description = "优惠率,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88") - private BigDecimal discountPercent; - - @Schema(description = "优惠金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal discountPrice; - - @Schema(description = "定金金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal depositPrice; - - @Schema(description = "附件地址", example = "https://www.iocoder.cn") - @ExcelProperty("附件地址") - private String fileUrl; - - @Schema(description = "备注", example = "你猜") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "创建人", example = "芋道") - private String creator; - @Schema(description = "创建人名称", example = "芋道") - private String creatorName; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "订单项列表", requiredMode = Schema.RequiredMode.REQUIRED) - private List items; - - @Schema(description = "产品信息", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("产品信息") - private String productNames; - - // ========== 采购入库 ========== - - @Schema(description = "采购入库数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal inCount; - - // ========== 采购退货(出库)) ========== - - @Schema(description = "采购退货数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal returnCount; - - @Data - public static class Item { - - @Schema(description = "订单项编号", example = "11756") - private Long id; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productId; - - @Schema(description = "产品单位单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productUnitId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "税率,百分比", example = "99.88") - private BigDecimal taxPercent; - - @Schema(description = "税额,单位:元", example = "100.00") - private BigDecimal taxPrice; - - @Schema(description = "备注", example = "随便") - private String remark; - - // ========== 采购入库 ========== - - @Schema(description = "采购入库数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal inCount; - - // ========== 采购退货(入库)) ========== - - @Schema(description = "采购退货数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal returnCount; - - // ========== 关联字段 ========== - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "巧克力") - private String productName; - @Schema(description = "产品条码", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985") - private String productBarCode; - @Schema(description = "产品单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "盒") - private String productUnitName; - - @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal stockCount; // 该字段仅仅在“详情”和“编辑”时使用 - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderSaveReqVO.java deleted file mode 100644 index 061ed9dcc2..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderSaveReqVO.java +++ /dev/null @@ -1,73 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 采购订单新增/修改 Request VO") -@Data -public class ErpPurchaseOrderSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - private Long id; - - @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1724") - @NotNull(message = "供应商编号不能为空") - private Long supplierId; - - @Schema(description = "结算账户编号", example = "31189") - private Long accountId; - - @Schema(description = "采购时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "采购时间不能为空") - private LocalDateTime orderTime; - - @Schema(description = "优惠率,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88") - private BigDecimal discountPercent; - - @Schema(description = "定金金额,单位:元", example = "7127") - private BigDecimal depositPrice; - - @Schema(description = "附件地址", example = "https://www.iocoder.cn") - private String fileUrl; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "订单清单列表") - private List items; - - @Data - public static class Item { - - @Schema(description = "订单项编号", example = "11756") - private Long id; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品编号不能为空") - private Long productId; - - @Schema(description = "产品单位单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品单位单位不能为空") - private Long productUnitId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "税率,百分比", example = "99.88") - private BigDecimal taxPercent; - - @Schema(description = "备注", example = "随便") - private String remark; - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnPageReqVO.java deleted file mode 100644 index a534d2e3e1..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnPageReqVO.java +++ /dev/null @@ -1,61 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 采购退货分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpPurchaseReturnPageReqVO extends PageParam { - - public static final Integer REFUND_STATUS_NONE = 0; - public static final Integer REFUND_STATUS_PART = 1; - public static final Integer REFUND_STATUS_ALL = 2; - - @Schema(description = "采购单编号", example = "XS001") - private String no; - - @Schema(description = "供应商编号", example = "1724") - private Long supplierId; - - @Schema(description = "退货时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] returnTime; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "退货状态", example = "2") - private Integer status; - - @Schema(description = "创建者") - private String creator; - - @Schema(description = "产品编号", example = "1") - private Long productId; - - @Schema(description = "仓库编号", example = "1") - private Long warehouseId; - - @Schema(description = "结算账号编号", example = "1") - private Long accountId; - - @Schema(description = "采购单号", example = "1") - private String orderNo; - - @Schema(description = "退款状态", example = "1") - private Integer refundStatus; - - @Schema(description = "是否可退款", example = "true") - private Boolean refundEnable; // 对应 refundStatus = [0, 1] - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnRespVO.java deleted file mode 100644 index 223b9327e9..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnRespVO.java +++ /dev/null @@ -1,145 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 采购退货 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpPurchaseReturnRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "退货单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001") - @ExcelProperty("退货单编号") - private String no; - - @Schema(description = "退货状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @ExcelProperty("退货状态") - private Integer status; - - @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1724") - private Long supplierId; - @Schema(description = "供应商名称", example = "芋道") - @ExcelProperty("供应商名称") - private String supplierName; - - @Schema(description = "结算账户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "311.89") - @ExcelProperty("结算账户编号") - private Long accountId; - - @Schema(description = "退货时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("退货时间") - private LocalDateTime returnTime; - - @Schema(description = "采购订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - private Long orderId; - @Schema(description = "采购订单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001") - private String orderNo; - - @Schema(description = "合计数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663") - @ExcelProperty("合计数量") - private BigDecimal totalCount; - @Schema(description = "最终合计价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906") - @ExcelProperty("最终合计价格") - private BigDecimal totalPrice; - @Schema(description = "已退款金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal refundPrice; - - @Schema(description = "合计产品价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal totalProductPrice; - - @Schema(description = "合计税额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal totalTaxPrice; - - @Schema(description = "优惠率,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88") - private BigDecimal discountPercent; - - @Schema(description = "优惠金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal discountPrice; - - @Schema(description = "定金金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal otherPrice; - - @Schema(description = "附件地址", example = "https://www.iocoder.cn") - @ExcelProperty("附件地址") - private String fileUrl; - - @Schema(description = "备注", example = "你猜") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "创建人", example = "芋道") - private String creator; - @Schema(description = "创建人名称", example = "芋道") - private String creatorName; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "退货项列表", requiredMode = Schema.RequiredMode.REQUIRED) - private List items; - - @Schema(description = "产品信息", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("产品信息") - private String productNames; - - @Data - public static class Item { - - @Schema(description = "退货项编号", example = "11756") - private Long id; - - @Schema(description = "采购订单项编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - private Long orderItemId; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long warehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productId; - - @Schema(description = "产品单位单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productUnitId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "税率,百分比", example = "99.88") - private BigDecimal taxPercent; - - @Schema(description = "税额,单位:元", example = "100.00") - private BigDecimal taxPrice; - - @Schema(description = "备注", example = "随便") - private String remark; - - // ========== 关联字段 ========== - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "巧克力") - private String productName; - @Schema(description = "产品条码", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985") - private String productBarCode; - @Schema(description = "产品单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "盒") - private String productUnitName; - - @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal stockCount; // 该字段仅仅在“详情”和“编辑”时使用 - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnSaveReqVO.java deleted file mode 100644 index 9254bd5834..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnSaveReqVO.java +++ /dev/null @@ -1,81 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 采购退货新增/修改 Request VO") -@Data -public class ErpPurchaseReturnSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - private Long id; - - @Schema(description = "结算账户编号", example = "31189") - private Long accountId; - - @Schema(description = "退货时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "退货时间不能为空") - private LocalDateTime returnTime; - - @Schema(description = "采购订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - @NotNull(message = "采购订单编号不能为空") - private Long orderId; - - @Schema(description = "优惠率,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88") - private BigDecimal discountPercent; - - @Schema(description = "其它金额,单位:元", example = "7127") - private BigDecimal otherPrice; - - @Schema(description = "附件地址", example = "https://www.iocoder.cn") - private String fileUrl; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "退货清单列表") - private List items; - - @Data - public static class Item { - - @Schema(description = "退货项编号", example = "11756") - private Long id; - - @Schema(description = "采购订单项编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - @NotNull(message = "采购订单项编号不能为空") - private Long orderItemId; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "仓库编号不能为空") - private Long warehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品编号不能为空") - private Long productId; - - @Schema(description = "产品单位单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品单位单位不能为空") - private Long productUnitId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "税率,百分比", example = "99.88") - private BigDecimal taxPercent; - - @Schema(description = "备注", example = "随便") - private String remark; - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierPageReqVO.java deleted file mode 100644 index 229ab63d9b..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierPageReqVO.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.supplier; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Schema(description = "管理后台 - ERP 供应商分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpSupplierPageReqVO extends PageParam { - - @Schema(description = "供应商名称", example = "芋道源码") - private String name; - - @Schema(description = "手机号码", example = "15601691300") - private String mobile; - - @Schema(description = "联系电话", example = "18818288888") - private String telephone; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierRespVO.java deleted file mode 100644 index 5ba5892c1b..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierRespVO.java +++ /dev/null @@ -1,84 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.supplier; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.yudao.module.system.enums.DictTypeConstants; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - ERP 供应商 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpSupplierRespVO { - - @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17791") - @ExcelProperty("供应商编号") - private Long id; - - @Schema(description = "供应商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码") - @ExcelProperty("供应商名称") - private String name; - - @Schema(description = "联系人", example = "芋艿") - @ExcelProperty("联系人") - private String contact; - - @Schema(description = "手机号码", example = "15601691300") - @ExcelProperty("手机号码") - private String mobile; - - @Schema(description = "联系电话", example = "18818288888") - @ExcelProperty("联系电话") - private String telephone; - - @Schema(description = "电子邮箱", example = "76853@qq.com") - @ExcelProperty("电子邮箱") - private String email; - - @Schema(description = "传真", example = "20 7123 4567") - @ExcelProperty("传真") - private String fax; - - @Schema(description = "备注", example = "你猜") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "开启状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty(value = "开启状态", converter = DictConvert.class) - @DictFormat(DictTypeConstants.COMMON_STATUS) - private Integer status; - - @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") - @ExcelProperty("排序") - private Integer sort; - - @Schema(description = "纳税人识别号", example = "91130803MA098BY05W") - @ExcelProperty("纳税人识别号") - private String taxNo; - - @Schema(description = "税率", example = "10") - @ExcelProperty("税率") - private BigDecimal taxPercent; - - @Schema(description = "开户行", example = "张三") - @ExcelProperty("开户行") - private String bankName; - - @Schema(description = "开户账号", example = "622908212277228617") - @ExcelProperty("开户账号") - private String bankAccount; - - @Schema(description = "开户地址", example = "兴业银行浦东支行") - @ExcelProperty("开户地址") - private String bankAddress; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierSaveReqVO.java deleted file mode 100644 index 2291de050a..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/supplier/ErpSupplierSaveReqVO.java +++ /dev/null @@ -1,71 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.supplier; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.validation.InEnum; -import cn.iocoder.yudao.framework.common.validation.Mobile; -import cn.iocoder.yudao.framework.common.validation.Telephone; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Email; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; - -@Schema(description = "管理后台 - ERP 供应商新增/修改 Request VO") -@Data -public class ErpSupplierSaveReqVO { - - @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17791") - private Long id; - - @Schema(description = "供应商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码") - @NotEmpty(message = "供应商名称不能为空") - private String name; - - @Schema(description = "联系人", example = "芋艿") - private String contact; - - @Schema(description = "手机号码", example = "15601691300") - @Mobile - private String mobile; - - @Schema(description = "联系电话", example = "18818288888") - @Telephone - private String telephone; - - @Schema(description = "电子邮箱", example = "76853@qq.com") - @Email - private String email; - - @Schema(description = "传真", example = "20 7123 4567") - private String fax; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "开启状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "开启状态不能为空") - @InEnum(value = CommonStatusEnum.class) - private Integer status; - - @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") - @NotNull(message = "排序不能为空") - private Integer sort; - - @Schema(description = "纳税人识别号", example = "91130803MA098BY05W") - private String taxNo; - - @Schema(description = "税率", example = "10") - private BigDecimal taxPercent; - - @Schema(description = "开户行", example = "张三") - private String bankName; - - @Schema(description = "开户账号", example = "622908212277228617") - private String bankAccount; - - @Schema(description = "开户地址", example = "兴业银行浦东支行") - private String bankAddress; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpCustomerController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpCustomerController.java deleted file mode 100644 index 2c2886460f..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpCustomerController.java +++ /dev/null @@ -1,102 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.customer.ErpCustomerPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.customer.ErpCustomerRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.customer.ErpCustomerSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; -import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 客户") -@RestController -@RequestMapping("/erp/customer") -@Validated -public class ErpCustomerController { - - @Resource - private ErpCustomerService customerService; - - @PostMapping("/create") - @Operation(summary = "创建客户") - @PreAuthorize("@ss.hasPermission('erp:customer:create')") - public CommonResult createCustomer(@Valid @RequestBody ErpCustomerSaveReqVO createReqVO) { - return success(customerService.createCustomer(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新客户") - @PreAuthorize("@ss.hasPermission('erp:customer:update')") - public CommonResult updateCustomer(@Valid @RequestBody ErpCustomerSaveReqVO updateReqVO) { - customerService.updateCustomer(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除客户") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('erp:customer:delete')") - public CommonResult deleteCustomer(@RequestParam("id") Long id) { - customerService.deleteCustomer(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得客户") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:customer:query')") - public CommonResult getCustomer(@RequestParam("id") Long id) { - ErpCustomerDO customer = customerService.getCustomer(id); - return success(BeanUtils.toBean(customer, ErpCustomerRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得客户分页") - @PreAuthorize("@ss.hasPermission('erp:customer:query')") - public CommonResult> getCustomerPage(@Valid ErpCustomerPageReqVO pageReqVO) { - PageResult pageResult = customerService.getCustomerPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, ErpCustomerRespVO.class)); - } - - @GetMapping("/simple-list") - @Operation(summary = "获得客户精简列表", description = "只包含被开启的客户,主要用于前端的下拉选项") - public CommonResult> getCustomerSimpleList() { - List list = customerService.getCustomerListByStatus(CommonStatusEnum.ENABLE.getStatus()); - return success(convertList(list, customer -> new ErpCustomerRespVO().setId(customer.getId()).setName(customer.getName()))); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出客户 Excel") - @PreAuthorize("@ss.hasPermission('erp:customer:export')") - @OperateLog(type = EXPORT) - public void exportCustomerExcel(@Valid ErpCustomerPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = customerService.getCustomerPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "客户.xls", "数据", ErpCustomerRespVO.class, - BeanUtils.toBean(list, ErpCustomerRespVO.class)); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOrderController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOrderController.java deleted file mode 100644 index 0ca56a45eb..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOrderController.java +++ /dev/null @@ -1,165 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderItemDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService; -import cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - - -@Tag(name = "管理后台 - ERP 销售订单") -@RestController -@RequestMapping("/erp/sale-order") -@Validated -public class ErpSaleOrderController { - - @Resource - private ErpSaleOrderService saleOrderService; - @Resource - private ErpStockService stockService; - @Resource - private ErpProductService productService; - @Resource - private ErpCustomerService customerService; - - @Resource - private AdminUserApi adminUserApi; - - @PostMapping("/create") - @Operation(summary = "创建销售订单") - @PreAuthorize("@ss.hasPermission('erp:sale-out:create')") - public CommonResult createSaleOrder(@Valid @RequestBody ErpSaleOrderSaveReqVO createReqVO) { - return success(saleOrderService.createSaleOrder(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新销售订单") - @PreAuthorize("@ss.hasPermission('erp:sale-out:update')") - public CommonResult updateSaleOrder(@Valid @RequestBody ErpSaleOrderSaveReqVO updateReqVO) { - saleOrderService.updateSaleOrder(updateReqVO); - return success(true); - } - - @PutMapping("/update-status") - @Operation(summary = "更新销售订单的状态") - @PreAuthorize("@ss.hasPermission('erp:sale-out:update-status')") - public CommonResult updateSaleOrderStatus(@RequestParam("id") Long id, - @RequestParam("status") Integer status) { - saleOrderService.updateSaleOrderStatus(id, status); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除销售订单") - @Parameter(name = "ids", description = "编号数组", required = true) - @PreAuthorize("@ss.hasPermission('erp:sale-out:delete')") - public CommonResult deleteSaleOrder(@RequestParam("ids") List ids) { - saleOrderService.deleteSaleOrder(ids); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得销售订单") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:sale-out:query')") - public CommonResult getSaleOrder(@RequestParam("id") Long id) { - ErpSaleOrderDO saleOrder = saleOrderService.getSaleOrder(id); - if (saleOrder == null) { - return success(null); - } - List saleOrderItemList = saleOrderService.getSaleOrderItemListByOrderId(id); - Map productMap = productService.getProductVOMap( - convertSet(saleOrderItemList, ErpSaleOrderItemDO::getProductId)); - return success(BeanUtils.toBean(saleOrder, ErpSaleOrderRespVO.class, saleOrderVO -> - saleOrderVO.setItems(BeanUtils.toBean(saleOrderItemList, ErpSaleOrderRespVO.Item.class, item -> { - BigDecimal stockCount = stockService.getStockCount(item.getProductId()); - item.setStockCount(stockCount != null ? stockCount : BigDecimal.ZERO); - MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); - })))); - } - - @GetMapping("/page") - @Operation(summary = "获得销售订单分页") - @PreAuthorize("@ss.hasPermission('erp:sale-out:query')") - public CommonResult> getSaleOrderPage(@Valid ErpSaleOrderPageReqVO pageReqVO) { - PageResult pageResult = saleOrderService.getSaleOrderPage(pageReqVO); - return success(buildSaleOrderVOPageResult(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出销售订单 Excel") - @PreAuthorize("@ss.hasPermission('erp:sale-out:export')") - @OperateLog(type = EXPORT) - public void exportSaleOrderExcel(@Valid ErpSaleOrderPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = buildSaleOrderVOPageResult(saleOrderService.getSaleOrderPage(pageReqVO)).getList(); - // 导出 Excel - ExcelUtils.write(response, "销售订单.xls", "数据", ErpSaleOrderRespVO.class, list); - } - - private PageResult buildSaleOrderVOPageResult(PageResult pageResult) { - if (CollUtil.isEmpty(pageResult.getList())) { - return PageResult.empty(pageResult.getTotal()); - } - // 1.1 订单项 - List saleOrderItemList = saleOrderService.getSaleOrderItemListByOrderIds( - convertSet(pageResult.getList(), ErpSaleOrderDO::getId)); - Map> saleOrderItemMap = convertMultiMap(saleOrderItemList, ErpSaleOrderItemDO::getOrderId); - // 1.2 产品信息 - Map productMap = productService.getProductVOMap( - convertSet(saleOrderItemList, ErpSaleOrderItemDO::getProductId)); - // 1.3 客户信息 - Map customerMap = customerService.getCustomerMap( - convertSet(pageResult.getList(), ErpSaleOrderDO::getCustomerId)); - // 1.4 管理员信息 - Map userMap = adminUserApi.getUserMap( - convertSet(pageResult.getList(), saleOrder -> Long.parseLong(saleOrder.getCreator()))); - // 2. 开始拼接 - return BeanUtils.toBean(pageResult, ErpSaleOrderRespVO.class, saleOrder -> { - saleOrder.setItems(BeanUtils.toBean(saleOrderItemMap.get(saleOrder.getId()), ErpSaleOrderRespVO.Item.class, - item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); - saleOrder.setProductNames(CollUtil.join(saleOrder.getItems(), ",", ErpSaleOrderRespVO.Item::getProductName)); - MapUtils.findAndThen(customerMap, saleOrder.getCustomerId(), supplier -> saleOrder.setCustomerName(supplier.getName())); - MapUtils.findAndThen(userMap, Long.parseLong(saleOrder.getCreator()), user -> saleOrder.setCreatorName(user.getNickname())); - }); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOutController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOutController.java deleted file mode 100644 index 5875ea39f9..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOutController.java +++ /dev/null @@ -1,165 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutItemDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService; -import cn.iocoder.yudao.module.erp.service.sale.ErpSaleOutService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 销售出库") -@RestController -@RequestMapping("/erp/sale-out") -@Validated -public class ErpSaleOutController { - - @Resource - private ErpSaleOutService saleOutService; - @Resource - private ErpStockService stockService; - @Resource - private ErpProductService productService; - @Resource - private ErpCustomerService customerService; - - @Resource - private AdminUserApi adminUserApi; - - @PostMapping("/create") - @Operation(summary = "创建销售出库") - @PreAuthorize("@ss.hasPermission('erp:sale-out:create')") - public CommonResult createSaleOut(@Valid @RequestBody ErpSaleOutSaveReqVO createReqVO) { - return success(saleOutService.createSaleOut(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新销售出库") - @PreAuthorize("@ss.hasPermission('erp:sale-out:update')") - public CommonResult updateSaleOut(@Valid @RequestBody ErpSaleOutSaveReqVO updateReqVO) { - saleOutService.updateSaleOut(updateReqVO); - return success(true); - } - - @PutMapping("/update-status") - @Operation(summary = "更新销售出库的状态") - @PreAuthorize("@ss.hasPermission('erp:sale-out:update-status')") - public CommonResult updateSaleOutStatus(@RequestParam("id") Long id, - @RequestParam("status") Integer status) { - saleOutService.updateSaleOutStatus(id, status); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除销售出库") - @Parameter(name = "ids", description = "编号数组", required = true) - @PreAuthorize("@ss.hasPermission('erp:sale-out:delete')") - public CommonResult deleteSaleOut(@RequestParam("ids") List ids) { - saleOutService.deleteSaleOut(ids); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得销售出库") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:sale-out:query')") - public CommonResult getSaleOut(@RequestParam("id") Long id) { - ErpSaleOutDO saleOut = saleOutService.getSaleOut(id); - if (saleOut == null) { - return success(null); - } - List saleOutItemList = saleOutService.getSaleOutItemListByOutId(id); - Map productMap = productService.getProductVOMap( - convertSet(saleOutItemList, ErpSaleOutItemDO::getProductId)); - return success(BeanUtils.toBean(saleOut, ErpSaleOutRespVO.class, saleOutVO -> - saleOutVO.setItems(BeanUtils.toBean(saleOutItemList, ErpSaleOutRespVO.Item.class, item -> { - ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId()); - item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO); - MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); - })))); - } - - @GetMapping("/page") - @Operation(summary = "获得销售出库分页") - @PreAuthorize("@ss.hasPermission('erp:sale-out:query')") - public CommonResult> getSaleOutPage(@Valid ErpSaleOutPageReqVO pageReqVO) { - PageResult pageResult = saleOutService.getSaleOutPage(pageReqVO); - return success(buildSaleOutVOPageResult(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出销售出库 Excel") - @PreAuthorize("@ss.hasPermission('erp:sale-out:export')") - @OperateLog(type = EXPORT) - public void exportSaleOutExcel(@Valid ErpSaleOutPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = buildSaleOutVOPageResult(saleOutService.getSaleOutPage(pageReqVO)).getList(); - // 导出 Excel - ExcelUtils.write(response, "销售出库.xls", "数据", ErpSaleOutRespVO.class, list); - } - - private PageResult buildSaleOutVOPageResult(PageResult pageResult) { - if (CollUtil.isEmpty(pageResult.getList())) { - return PageResult.empty(pageResult.getTotal()); - } - // 1.1 出库项 - List saleOutItemList = saleOutService.getSaleOutItemListByOutIds( - convertSet(pageResult.getList(), ErpSaleOutDO::getId)); - Map> saleOutItemMap = convertMultiMap(saleOutItemList, ErpSaleOutItemDO::getOutId); - // 1.2 产品信息 - Map productMap = productService.getProductVOMap( - convertSet(saleOutItemList, ErpSaleOutItemDO::getProductId)); - // 1.3 客户信息 - Map customerMap = customerService.getCustomerMap( - convertSet(pageResult.getList(), ErpSaleOutDO::getCustomerId)); - // 1.4 管理员信息 - Map userMap = adminUserApi.getUserMap( - convertSet(pageResult.getList(), stockOut -> Long.parseLong(stockOut.getCreator()))); - // 2. 开始拼接 - return BeanUtils.toBean(pageResult, ErpSaleOutRespVO.class, saleOut -> { - saleOut.setItems(BeanUtils.toBean(saleOutItemMap.get(saleOut.getId()), ErpSaleOutRespVO.Item.class, - item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); - saleOut.setProductNames(CollUtil.join(saleOut.getItems(), ",", ErpSaleOutRespVO.Item::getProductName)); - MapUtils.findAndThen(customerMap, saleOut.getCustomerId(), supplier -> saleOut.setCustomerName(supplier.getName())); - MapUtils.findAndThen(userMap, Long.parseLong(saleOut.getCreator()), user -> saleOut.setCreatorName(user.getNickname())); - }); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleReturnController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleReturnController.java deleted file mode 100644 index 0dfba67e98..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleReturnController.java +++ /dev/null @@ -1,165 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnItemDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService; -import cn.iocoder.yudao.module.erp.service.sale.ErpSaleReturnService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 销售退货") -@RestController -@RequestMapping("/erp/sale-return") -@Validated -public class ErpSaleReturnController { - - @Resource - private ErpSaleReturnService saleReturnService; - @Resource - private ErpStockService stockService; - @Resource - private ErpProductService productService; - @Resource - private ErpCustomerService customerService; - - @Resource - private AdminUserApi adminUserApi; - - @PostMapping("/create") - @Operation(summary = "创建销售退货") - @PreAuthorize("@ss.hasPermission('erp:sale-return:create')") - public CommonResult createSaleReturn(@Valid @RequestBody ErpSaleReturnSaveReqVO createReqVO) { - return success(saleReturnService.createSaleReturn(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新销售退货") - @PreAuthorize("@ss.hasPermission('erp:sale-return:update')") - public CommonResult updateSaleReturn(@Valid @RequestBody ErpSaleReturnSaveReqVO updateReqVO) { - saleReturnService.updateSaleReturn(updateReqVO); - return success(true); - } - - @PutMapping("/update-status") - @Operation(summary = "更新销售退货的状态") - @PreAuthorize("@ss.hasPermission('erp:sale-return:update-status')") - public CommonResult updateSaleReturnStatus(@RequestParam("id") Long id, - @RequestParam("status") Integer status) { - saleReturnService.updateSaleReturnStatus(id, status); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除销售退货") - @Parameter(name = "ids", description = "编号数组", required = true) - @PreAuthorize("@ss.hasPermission('erp:sale-return:delete')") - public CommonResult deleteSaleReturn(@RequestParam("ids") List ids) { - saleReturnService.deleteSaleReturn(ids); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得销售退货") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:sale-return:query')") - public CommonResult getSaleReturn(@RequestParam("id") Long id) { - ErpSaleReturnDO saleReturn = saleReturnService.getSaleReturn(id); - if (saleReturn == null) { - return success(null); - } - List saleReturnItemList = saleReturnService.getSaleReturnItemListByReturnId(id); - Map productMap = productService.getProductVOMap( - convertSet(saleReturnItemList, ErpSaleReturnItemDO::getProductId)); - return success(BeanUtils.toBean(saleReturn, ErpSaleReturnRespVO.class, saleReturnVO -> - saleReturnVO.setItems(BeanUtils.toBean(saleReturnItemList, ErpSaleReturnRespVO.Item.class, item -> { - ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId()); - item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO); - MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); - })))); - } - - @GetMapping("/page") - @Operation(summary = "获得销售退货分页") - @PreAuthorize("@ss.hasPermission('erp:sale-return:query')") - public CommonResult> getSaleReturnPage(@Valid ErpSaleReturnPageReqVO pageReqVO) { - PageResult pageResult = saleReturnService.getSaleReturnPage(pageReqVO); - return success(buildSaleReturnVOPageResult(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出销售退货 Excel") - @PreAuthorize("@ss.hasPermission('erp:sale-return:export')") - @OperateLog(type = EXPORT) - public void exportSaleReturnExcel(@Valid ErpSaleReturnPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = buildSaleReturnVOPageResult(saleReturnService.getSaleReturnPage(pageReqVO)).getList(); - // 导出 Excel - ExcelUtils.write(response, "销售退货.xls", "数据", ErpSaleReturnRespVO.class, list); - } - - private PageResult buildSaleReturnVOPageResult(PageResult pageResult) { - if (CollUtil.isEmpty(pageResult.getList())) { - return PageResult.empty(pageResult.getTotal()); - } - // 1.1 退货项 - List saleReturnItemList = saleReturnService.getSaleReturnItemListByReturnIds( - convertSet(pageResult.getList(), ErpSaleReturnDO::getId)); - Map> saleReturnItemMap = convertMultiMap(saleReturnItemList, ErpSaleReturnItemDO::getReturnId); - // 1.2 产品信息 - Map productMap = productService.getProductVOMap( - convertSet(saleReturnItemList, ErpSaleReturnItemDO::getProductId)); - // 1.3 客户信息 - Map customerMap = customerService.getCustomerMap( - convertSet(pageResult.getList(), ErpSaleReturnDO::getCustomerId)); - // 1.4 管理员信息 - Map userMap = adminUserApi.getUserMap( - convertSet(pageResult.getList(), saleReturn -> Long.parseLong(saleReturn.getCreator()))); - // 2. 开始拼接 - return BeanUtils.toBean(pageResult, ErpSaleReturnRespVO.class, saleReturn -> { - saleReturn.setItems(BeanUtils.toBean(saleReturnItemMap.get(saleReturn.getId()), ErpSaleReturnRespVO.Item.class, - item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); - saleReturn.setProductNames(CollUtil.join(saleReturn.getItems(), ",", ErpSaleReturnRespVO.Item::getProductName)); - MapUtils.findAndThen(customerMap, saleReturn.getCustomerId(), supplier -> saleReturn.setCustomerName(supplier.getName())); - MapUtils.findAndThen(userMap, Long.parseLong(saleReturn.getCreator()), user -> saleReturn.setCreatorName(user.getNickname())); - }); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/customer/ErpCustomerPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/customer/ErpCustomerPageReqVO.java deleted file mode 100644 index e790cb9581..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/customer/ErpCustomerPageReqVO.java +++ /dev/null @@ -1,28 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.customer; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import java.math.BigDecimal; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 客户分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpCustomerPageReqVO extends PageParam { - - @Schema(description = "客户名称", example = "张三") - private String name; - - @Schema(description = "手机号码", example = "15601691300") - private String mobile; - - @Schema(description = "联系电话", example = "15601691300") - private String telephone; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/customer/ErpCustomerRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/customer/ErpCustomerRespVO.java deleted file mode 100644 index f1a58a03d5..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/customer/ErpCustomerRespVO.java +++ /dev/null @@ -1,84 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.customer; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; -import java.math.BigDecimal; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; - -@Schema(description = "管理后台 - ERP 客户 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpCustomerRespVO { - - @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "27520") - @ExcelProperty("客户编号") - private Long id; - - @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") - @ExcelProperty("客户名称") - private String name; - - @Schema(description = "联系人", example = "老王") - @ExcelProperty("联系人") - private String contact; - - @Schema(description = "手机号码", example = "15601691300") - @ExcelProperty("手机号码") - private String mobile; - - @Schema(description = "联系电话", example = "15601691300") - @ExcelProperty("联系电话") - private String telephone; - - @Schema(description = "电子邮箱", example = "7685323@qq.com") - @ExcelProperty("电子邮箱") - private String email; - - @Schema(description = "传真", example = "20 7123 4567") - @ExcelProperty("传真") - private String fax; - - @Schema(description = "备注", example = "你猜") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "开启状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty(value = "开启状态", converter = DictConvert.class) - @DictFormat("common_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Integer status; - - @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") - @ExcelProperty("排序") - private Integer sort; - - @Schema(description = "纳税人识别号", example = "91130803MA098BY05W") - @ExcelProperty("纳税人识别号") - private String taxNo; - - @Schema(description = "税率", example = "10") - @ExcelProperty("税率") - private BigDecimal taxPercent; - - @Schema(description = "开户行", example = "芋艿") - @ExcelProperty("开户行") - private String bankName; - - @Schema(description = "开户账号", example = "622908212277228617") - @ExcelProperty("开户账号") - private String bankAccount; - - @Schema(description = "开户地址", example = "兴业银行浦东支行") - @ExcelProperty("开户地址") - private String bankAddress; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/customer/ErpCustomerSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/customer/ErpCustomerSaveReqVO.java deleted file mode 100644 index aef0b2df1d..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/customer/ErpCustomerSaveReqVO.java +++ /dev/null @@ -1,61 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.customer; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import jakarta.validation.constraints.*; -import java.math.BigDecimal; - -@Schema(description = "管理后台 - ERP 客户新增/修改 Request VO") -@Data -public class ErpCustomerSaveReqVO { - - @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "27520") - private Long id; - - @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") - @NotEmpty(message = "客户名称不能为空") - private String name; - - @Schema(description = "联系人", example = "老王") - private String contact; - - @Schema(description = "手机号码", example = "15601691300") - private String mobile; - - @Schema(description = "联系电话", example = "15601691300") - private String telephone; - - @Schema(description = "电子邮箱", example = "7685323@qq.com") - private String email; - - @Schema(description = "传真", example = "20 7123 4567") - private String fax; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "开启状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "开启状态不能为空") - private Integer status; - - @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") - @NotNull(message = "排序不能为空") - private Integer sort; - - @Schema(description = "纳税人识别号", example = "91130803MA098BY05W") - private String taxNo; - - @Schema(description = "税率", example = "10") - private BigDecimal taxPercent; - - @Schema(description = "开户行", example = "芋艿") - private String bankName; - - @Schema(description = "开户账号", example = "622908212277228617") - private String bankAccount; - - @Schema(description = "开户地址", example = "兴业银行浦东支行") - private String bankAddress; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderPageReqVO.java deleted file mode 100644 index 84d92fb673..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderPageReqVO.java +++ /dev/null @@ -1,80 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 销售订单分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpSaleOrderPageReqVO extends PageParam { - - /** - * 出库状态 - 无 - */ - public static final Integer OUT_STATUS_NONE = 0; - /** - * 出库状态 - 部分 - */ - public static final Integer OUT_STATUS_PART = 1; - /** - * 出库状态 - 全部 - */ - public static final Integer OUT_STATUS_ALL = 2; - - /** - * 退货状态 - 无 - */ - public static final Integer RETURN_STATUS_NONE = 0; - /** - * 退货状态 - 部分 - */ - public static final Integer RETURN_STATUS_PART = 1; - /** - * 退货状态 - 全部 - */ - public static final Integer RETURN_STATUS_ALL = 2; - - @Schema(description = "销售单编号", example = "XS001") - private String no; - - @Schema(description = "客户编号", example = "1724") - private Long customerId; - - @Schema(description = "下单时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] orderTime; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "销售状态", example = "2") - private Integer status; - - @Schema(description = "创建者") - private String creator; - - @Schema(description = "产品编号", example = "1") - private Long productId; - - @Schema(description = "出库状态", example = "2") - private Integer outStatus; - - @Schema(description = "退货状态", example = "2") - private Integer returnStatus; - - @Schema(description = "是否可出库", example = "true") - private Boolean outEnable; - - @Schema(description = "是否可退货", example = "true") - private Boolean returnEnable; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderRespVO.java deleted file mode 100644 index e5958a841f..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderRespVO.java +++ /dev/null @@ -1,155 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 销售订单 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpSaleOrderRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "销售单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001") - @ExcelProperty("销售单编号") - private String no; - - @Schema(description = "销售状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @ExcelProperty("销售状态") - private Integer status; - - @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1724") - private Long customerId; - @Schema(description = "客户名称", example = "芋道") - @ExcelProperty("客户名称") - private String customerName; - - @Schema(description = "结算账户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "311.89") - @ExcelProperty("结算账户编号") - private Long accountId; - - @Schema(description = "销售员编号", example = "1888") - private Long saleUserId; - - @Schema(description = "下单时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("下单时间") - private LocalDateTime orderTime; - - @Schema(description = "合计数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663") - @ExcelProperty("合计数量") - private BigDecimal totalCount; - @Schema(description = "最终合计价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906") - @ExcelProperty("最终合计价格") - private BigDecimal totalPrice; - - @Schema(description = "合计产品价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal totalProductPrice; - - @Schema(description = "合计税额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal totalTaxPrice; - - @Schema(description = "优惠率,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88") - private BigDecimal discountPercent; - - @Schema(description = "优惠金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal discountPrice; - - @Schema(description = "定金金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal depositPrice; - - @Schema(description = "附件地址", example = "https://www.iocoder.cn") - @ExcelProperty("附件地址") - private String fileUrl; - - @Schema(description = "备注", example = "你猜") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "创建人", example = "芋道") - private String creator; - @Schema(description = "创建人名称", example = "芋道") - private String creatorName; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "订单项列表", requiredMode = Schema.RequiredMode.REQUIRED) - private List items; - - @Schema(description = "产品信息", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("产品信息") - private String productNames; - - // ========== 销售出库 ========== - - @Schema(description = "销售出库数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal outCount; - - // ========== 销售退货(出库)) ========== - - @Schema(description = "销售退货数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal returnCount; - - @Data - public static class Item { - - @Schema(description = "订单项编号", example = "11756") - private Long id; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productId; - - @Schema(description = "产品单位单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productUnitId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "税率,百分比", example = "99.88") - private BigDecimal taxPercent; - - @Schema(description = "税额,单位:元", example = "100.00") - private BigDecimal taxPrice; - - @Schema(description = "备注", example = "随便") - private String remark; - - // ========== 销售出库 ========== - - @Schema(description = "销售出库数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal outCount; - - // ========== 销售退货(入库)) ========== - - @Schema(description = "销售退货数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal returnCount; - - // ========== 关联字段 ========== - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "巧克力") - private String productName; - @Schema(description = "产品条码", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985") - private String productBarCode; - @Schema(description = "产品单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "盒") - private String productUnitName; - - @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal stockCount; // 该字段仅仅在“详情”和“编辑”时使用 - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderSaveReqVO.java deleted file mode 100644 index e23a1fab31..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderSaveReqVO.java +++ /dev/null @@ -1,76 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 销售订单新增/修改 Request VO") -@Data -public class ErpSaleOrderSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - private Long id; - - @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1724") - @NotNull(message = "客户编号不能为空") - private Long customerId; - - @Schema(description = "下单时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "下单时间不能为空") - private LocalDateTime orderTime; - - @Schema(description = "销售员编号", example = "1888") - private Long saleUserId; - - @Schema(description = "结算账户编号", example = "31189") - private Long accountId; - - @Schema(description = "优惠率,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88") - private BigDecimal discountPercent; - - @Schema(description = "定金金额,单位:元", example = "7127") - private BigDecimal depositPrice; - - @Schema(description = "附件地址", example = "https://www.iocoder.cn") - private String fileUrl; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "订单清单列表") - private List items; - - @Data - public static class Item { - - @Schema(description = "订单项编号", example = "11756") - private Long id; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品编号不能为空") - private Long productId; - - @Schema(description = "产品单位单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品单位单位不能为空") - private Long productUnitId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "税率,百分比", example = "99.88") - private BigDecimal taxPercent; - - @Schema(description = "备注", example = "随便") - private String remark; - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutPageReqVO.java deleted file mode 100644 index 5afeeea843..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutPageReqVO.java +++ /dev/null @@ -1,61 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 销售出库分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpSaleOutPageReqVO extends PageParam { - - public static final Integer RECEIPT_STATUS_NONE = 0; - public static final Integer RECEIPT_STATUS_PART = 1; - public static final Integer RECEIPT_STATUS_ALL = 2; - - @Schema(description = "销售单编号", example = "XS001") - private String no; - - @Schema(description = "客户编号", example = "1724") - private Long customerId; - - @Schema(description = "出库时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] outTime; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "出库状态", example = "2") - private Integer status; - - @Schema(description = "创建者") - private String creator; - - @Schema(description = "产品编号", example = "1") - private Long productId; - - @Schema(description = "仓库编号", example = "1") - private Long warehouseId; - - @Schema(description = "结算账号编号", example = "1") - private Long accountId; - - @Schema(description = "收款状态", example = "1") - private Integer receiptStatus; - - @Schema(description = "是否可收款", example = "true") - private Boolean receiptEnable; // 对应 receiptStatus = [0, 1] - - @Schema(description = "销售单号", example = "1") - private String orderNo; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutRespVO.java deleted file mode 100644 index bc15a13398..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutRespVO.java +++ /dev/null @@ -1,148 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 销售出库 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpSaleOutRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "出库单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001") - @ExcelProperty("出库单编号") - private String no; - - @Schema(description = "出库状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @ExcelProperty("出库状态") - private Integer status; - - @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1724") - private Long customerId; - @Schema(description = "客户名称", example = "芋道") - @ExcelProperty("客户名称") - private String customerName; - - @Schema(description = "结算账户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "311.89") - @ExcelProperty("结算账户编号") - private Long accountId; - - @Schema(description = "出库员编号", example = "1888") - private Long saleUserId; - - @Schema(description = "出库时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("出库时间") - private LocalDateTime outTime; - - @Schema(description = "销售订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - private Long orderId; - @Schema(description = "销售订单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001") - private String orderNo; - - @Schema(description = "合计数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663") - @ExcelProperty("合计数量") - private BigDecimal totalCount; - @Schema(description = "最终合计价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906") - @ExcelProperty("最终合计价格") - private BigDecimal totalPrice; - @Schema(description = "已收款金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal receiptPrice; - - @Schema(description = "合计产品价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal totalProductPrice; - - @Schema(description = "合计税额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal totalTaxPrice; - - @Schema(description = "优惠率,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88") - private BigDecimal discountPercent; - - @Schema(description = "优惠金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal discountPrice; - - @Schema(description = "其它金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal otherPrice; - - @Schema(description = "附件地址", example = "https://www.iocoder.cn") - @ExcelProperty("附件地址") - private String fileUrl; - - @Schema(description = "备注", example = "你猜") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "创建人", example = "芋道") - private String creator; - @Schema(description = "创建人名称", example = "芋道") - private String creatorName; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "出库项列表", requiredMode = Schema.RequiredMode.REQUIRED) - private List items; - - @Schema(description = "产品信息", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("产品信息") - private String productNames; - - @Data - public static class Item { - - @Schema(description = "出库项编号", example = "11756") - private Long id; - - @Schema(description = "销售订单项编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - private Long orderItemId; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long warehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productId; - - @Schema(description = "产品单位单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productUnitId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "税率,百分比", example = "99.88") - private BigDecimal taxPercent; - - @Schema(description = "税额,单位:元", example = "100.00") - private BigDecimal taxPrice; - - @Schema(description = "备注", example = "随便") - private String remark; - - // ========== 关联字段 ========== - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "巧克力") - private String productName; - @Schema(description = "产品条码", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985") - private String productBarCode; - @Schema(description = "产品单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "盒") - private String productUnitName; - - @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal stockCount; // 该字段仅仅在“详情”和“编辑”时使用 - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutSaveReqVO.java deleted file mode 100644 index 3a2216a33e..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutSaveReqVO.java +++ /dev/null @@ -1,84 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 销售出库新增/修改 Request VO") -@Data -public class ErpSaleOutSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - private Long id; - - @Schema(description = "结算账户编号", example = "31189") - private Long accountId; - - @Schema(description = "销售员编号", example = "1888") - private Long saleUserId; - - @Schema(description = "出库时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "出库时间不能为空") - private LocalDateTime outTime; - - @Schema(description = "销售订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - @NotNull(message = "销售订单编号不能为空") - private Long orderId; - - @Schema(description = "优惠率,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88") - private BigDecimal discountPercent; - - @Schema(description = "其它金额,单位:元", example = "7127") - private BigDecimal otherPrice; - - @Schema(description = "附件地址", example = "https://www.iocoder.cn") - private String fileUrl; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "出库清单列表") - private List items; - - @Data - public static class Item { - - @Schema(description = "出库项编号", example = "11756") - private Long id; - - @Schema(description = "销售订单项编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - @NotNull(message = "销售订单项编号不能为空") - private Long orderItemId; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "仓库编号不能为空") - private Long warehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品编号不能为空") - private Long productId; - - @Schema(description = "产品单位单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品单位单位不能为空") - private Long productUnitId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "税率,百分比", example = "99.88") - private BigDecimal taxPercent; - - @Schema(description = "备注", example = "随便") - private String remark; - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnPageReqVO.java deleted file mode 100644 index a9be73beb6..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnPageReqVO.java +++ /dev/null @@ -1,61 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 销售退货分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpSaleReturnPageReqVO extends PageParam { - - public static final Integer REFUND_STATUS_NONE = 0; - public static final Integer REFUND_STATUS_PART = 1; - public static final Integer REFUND_STATUS_ALL = 2; - - @Schema(description = "销售单编号", example = "XS001") - private String no; - - @Schema(description = "客户编号", example = "1724") - private Long customerId; - - @Schema(description = "退货时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] returnTime; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "退货状态", example = "2") - private Integer status; - - @Schema(description = "创建者") - private String creator; - - @Schema(description = "产品编号", example = "1") - private Long productId; - - @Schema(description = "仓库编号", example = "1") - private Long warehouseId; - - @Schema(description = "结算账号编号", example = "1") - private Long accountId; - - @Schema(description = "销售单号", example = "1") - private String orderNo; - - @Schema(description = "退款状态", example = "1") - private Integer refundStatus; - - @Schema(description = "是否可退款", example = "true") - private Boolean refundEnable; // 对应 refundStatus = [0, 1] - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnRespVO.java deleted file mode 100644 index ba52f4f80d..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnRespVO.java +++ /dev/null @@ -1,148 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 销售退货 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpSaleReturnRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "退货单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001") - @ExcelProperty("退货单编号") - private String no; - - @Schema(description = "退货状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @ExcelProperty("退货状态") - private Integer status; - - @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1724") - private Long customerId; - @Schema(description = "客户名称", example = "芋道") - @ExcelProperty("客户名称") - private String customerName; - - @Schema(description = "结算账户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "311.89") - @ExcelProperty("结算账户编号") - private Long accountId; - - @Schema(description = "退货员编号", example = "1888") - private Long saleUserId; - - @Schema(description = "退货时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("退货时间") - private LocalDateTime returnTime; - - @Schema(description = "销售订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - private Long orderId; - @Schema(description = "销售订单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001") - private String orderNo; - - @Schema(description = "合计数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663") - @ExcelProperty("合计数量") - private BigDecimal totalCount; - @Schema(description = "最终合计价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906") - @ExcelProperty("最终合计价格") - private BigDecimal totalPrice; - @Schema(description = "已退款金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal refundPrice; - - @Schema(description = "合计产品价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal totalProductPrice; - - @Schema(description = "合计税额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal totalTaxPrice; - - @Schema(description = "优惠率,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88") - private BigDecimal discountPercent; - - @Schema(description = "优惠金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal discountPrice; - - @Schema(description = "其它金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") - private BigDecimal otherPrice; - - @Schema(description = "附件地址", example = "https://www.iocoder.cn") - @ExcelProperty("附件地址") - private String fileUrl; - - @Schema(description = "备注", example = "你猜") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "创建人", example = "芋道") - private String creator; - @Schema(description = "创建人名称", example = "芋道") - private String creatorName; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "退货项列表", requiredMode = Schema.RequiredMode.REQUIRED) - private List items; - - @Schema(description = "产品信息", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("产品信息") - private String productNames; - - @Data - public static class Item { - - @Schema(description = "退货项编号", example = "11756") - private Long id; - - @Schema(description = "销售订单项编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - private Long orderItemId; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long warehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productId; - - @Schema(description = "产品单位单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productUnitId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "税率,百分比", example = "99.88") - private BigDecimal taxPercent; - - @Schema(description = "税额,单位:元", example = "100.00") - private BigDecimal taxPrice; - - @Schema(description = "备注", example = "随便") - private String remark; - - // ========== 关联字段 ========== - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "巧克力") - private String productName; - @Schema(description = "产品条码", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985") - private String productBarCode; - @Schema(description = "产品单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "盒") - private String productUnitName; - - @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal stockCount; // 该字段仅仅在“详情”和“编辑”时使用 - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnSaveReqVO.java deleted file mode 100644 index 81c046f7d8..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnSaveReqVO.java +++ /dev/null @@ -1,84 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 销售退货新增/修改 Request VO") -@Data -public class ErpSaleReturnSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - private Long id; - - @Schema(description = "结算账户编号", example = "31189") - private Long accountId; - - @Schema(description = "销售员编号", example = "1888") - private Long saleUserId; - - @Schema(description = "退货时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "退货时间不能为空") - private LocalDateTime returnTime; - - @Schema(description = "销售订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") - @NotNull(message = "销售订单编号不能为空") - private Long orderId; - - @Schema(description = "优惠率,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88") - private BigDecimal discountPercent; - - @Schema(description = "其它金额,单位:元", example = "7127") - private BigDecimal otherPrice; - - @Schema(description = "附件地址", example = "https://www.iocoder.cn") - private String fileUrl; - - @Schema(description = "备注", example = "你猜") - private String remark; - - @Schema(description = "退货清单列表") - private List items; - - @Data - public static class Item { - - @Schema(description = "退货项编号", example = "11756") - private Long id; - - @Schema(description = "销售订单项编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - @NotNull(message = "销售订单项编号不能为空") - private Long orderItemId; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "仓库编号不能为空") - private Long warehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品编号不能为空") - private Long productId; - - @Schema(description = "产品单位单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品单位单位不能为空") - private Long productUnitId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "税率,百分比", example = "99.88") - private BigDecimal taxPercent; - - @Schema(description = "备注", example = "随便") - private String remark; - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockCheckController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockCheckController.java deleted file mode 100644 index 298ed54fa7..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockCheckController.java +++ /dev/null @@ -1,149 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckItemDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockCheckService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 库存调拨单") -@RestController -@RequestMapping("/erp/stock-check") -@Validated -public class ErpStockCheckController { - - @Resource - private ErpStockCheckService stockCheckService; - @Resource - private ErpProductService productService; - - @Resource - private AdminUserApi adminUserApi; - - @PostMapping("/create") - @Operation(summary = "创建库存调拨单") - @PreAuthorize("@ss.hasPermission('erp:stock-check:create')") - public CommonResult createStockCheck(@Valid @RequestBody ErpStockCheckSaveReqVO createReqVO) { - return success(stockCheckService.createStockCheck(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新库存调拨单") - @PreAuthorize("@ss.hasPermission('erp:stock-check:update')") - public CommonResult updateStockCheck(@Valid @RequestBody ErpStockCheckSaveReqVO updateReqVO) { - stockCheckService.updateStockCheck(updateReqVO); - return success(true); - } - - @PutMapping("/update-status") - @Operation(summary = "更新库存调拨单的状态") - @PreAuthorize("@ss.hasPermission('erp:stock-check:update-status')") - public CommonResult updateStockCheckStatus(@RequestParam("id") Long id, - @RequestParam("status") Integer status) { - stockCheckService.updateStockCheckStatus(id, status); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除库存调拨单") - @Parameter(name = "ids", description = "编号数组", required = true) - @PreAuthorize("@ss.hasPermission('erp:stock-check:delete')") - public CommonResult deleteStockCheck(@RequestParam("ids") List ids) { - stockCheckService.deleteStockCheck(ids); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得库存调拨单") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:stock-check:query')") - public CommonResult getStockCheck(@RequestParam("id") Long id) { - ErpStockCheckDO stockCheck = stockCheckService.getStockCheck(id); - if (stockCheck == null) { - return success(null); - } - List stockCheckItemList = stockCheckService.getStockCheckItemListByCheckId(id); - Map productMap = productService.getProductVOMap( - convertSet(stockCheckItemList, ErpStockCheckItemDO::getProductId)); - return success(BeanUtils.toBean(stockCheck, ErpStockCheckRespVO.class, stockCheckVO -> - stockCheckVO.setItems(BeanUtils.toBean(stockCheckItemList, ErpStockCheckRespVO.Item.class, item -> - MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))))); - } - - @GetMapping("/page") - @Operation(summary = "获得库存调拨单分页") - @PreAuthorize("@ss.hasPermission('erp:stock-check:query')") - public CommonResult> getStockCheckPage(@Valid ErpStockCheckPageReqVO pageReqVO) { - PageResult pageResult = stockCheckService.getStockCheckPage(pageReqVO); - return success(buildStockCheckVOPageResult(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出库存调拨单 Excel") - @PreAuthorize("@ss.hasPermission('erp:stock-check:export')") - @OperateLog(type = EXPORT) - public void exportStockCheckExcel(@Valid ErpStockCheckPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = buildStockCheckVOPageResult(stockCheckService.getStockCheckPage(pageReqVO)).getList(); - // 导出 Excel - ExcelUtils.write(response, "库存调拨单.xls", "数据", ErpStockCheckRespVO.class, list); - } - - private PageResult buildStockCheckVOPageResult(PageResult pageResult) { - if (CollUtil.isEmpty(pageResult.getList())) { - return PageResult.empty(pageResult.getTotal()); - } - // 1.1 盘点项 - List stockCheckItemList = stockCheckService.getStockCheckItemListByCheckIds( - convertSet(pageResult.getList(), ErpStockCheckDO::getId)); - Map> stockCheckItemMap = convertMultiMap(stockCheckItemList, ErpStockCheckItemDO::getCheckId); - // 1.2 产品信息 - Map productMap = productService.getProductVOMap( - convertSet(stockCheckItemList, ErpStockCheckItemDO::getProductId)); - // 1.3 管理员信息 - Map userMap = adminUserApi.getUserMap( - convertSet(pageResult.getList(), stockCheck -> Long.parseLong(stockCheck.getCreator()))); - // 2. 开始拼接 - return BeanUtils.toBean(pageResult, ErpStockCheckRespVO.class, stockCheck -> { - stockCheck.setItems(BeanUtils.toBean(stockCheckItemMap.get(stockCheck.getId()), ErpStockCheckRespVO.Item.class, - item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); - stockCheck.setProductNames(CollUtil.join(stockCheck.getItems(), ",", ErpStockCheckRespVO.Item::getProductName)); - MapUtils.findAndThen(userMap, Long.parseLong(stockCheck.getCreator()), user -> stockCheck.setCreatorName(user.getNickname())); - }); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java deleted file mode 100644 index 912f59731a..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java +++ /dev/null @@ -1,112 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock.ErpStockPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock.ErpStockRespVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockService; -import cn.iocoder.yudao.module.erp.service.stock.ErpWarehouseService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Parameters; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.io.IOException; -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 产品库存") -@RestController -@RequestMapping("/erp/stock") -@Validated -public class ErpStockController { - - @Resource - private ErpStockService stockService; - @Resource - private ErpProductService productService; - @Resource - private ErpWarehouseService warehouseService; - - @GetMapping("/get") - @Operation(summary = "获得产品库存") - @Parameters({ - @Parameter(name = "id", description = "编号", example = "1"), // 方案一:传递 id - @Parameter(name = "productId", description = "产品编号", example = "10"), // 方案二:传递 productId + warehouseId - @Parameter(name = "warehouseId", description = "仓库编号", example = "2") - }) - @PreAuthorize("@ss.hasPermission('erp:stock:query')") - public CommonResult getStock(@RequestParam(value = "id", required = false) Long id, - @RequestParam(value = "productId", required = false) Long productId, - @RequestParam(value = "warehouseId", required = false) Long warehouseId) { - ErpStockDO stock = id != null ? stockService.getStock(id) : stockService.getStock(productId, warehouseId); - return success(BeanUtils.toBean(stock, ErpStockRespVO.class)); - } - - @GetMapping("/get-count") - @Operation(summary = "获得产品库存数量") - @Parameter(name = "productId", description = "产品编号", example = "10") - public CommonResult getStockCount(@RequestParam("productId") Long productId) { - return success(stockService.getStockCount(productId)); - } - - @GetMapping("/page") - @Operation(summary = "获得产品库存分页") - @PreAuthorize("@ss.hasPermission('erp:stock:query')") - public CommonResult> getStockPage(@Valid ErpStockPageReqVO pageReqVO) { - PageResult pageResult = stockService.getStockPage(pageReqVO); - return success(buildStockVOPageResult(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出产品库存 Excel") - @PreAuthorize("@ss.hasPermission('erp:stock:export')") - @OperateLog(type = EXPORT) - public void exportStockExcel(@Valid ErpStockPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = buildStockVOPageResult(stockService.getStockPage(pageReqVO)).getList(); - // 导出 Excel - ExcelUtils.write(response, "产品库存.xls", "数据", ErpStockRespVO.class, list); - } - - private PageResult buildStockVOPageResult(PageResult pageResult) { - if (CollUtil.isEmpty(pageResult.getList())) { - return PageResult.empty(pageResult.getTotal()); - } - Map productMap = productService.getProductVOMap( - convertSet(pageResult.getList(), ErpStockDO::getProductId)); - Map warehouseMap = warehouseService.getWarehouseMap( - convertSet(pageResult.getList(), ErpStockDO::getWarehouseId)); - return BeanUtils.toBean(pageResult, ErpStockRespVO.class, stock -> { - MapUtils.findAndThen(productMap, stock.getProductId(), product -> stock.setProductName(product.getName()) - .setCategoryName(product.getCategoryName()).setUnitName(product.getUnitName())); - MapUtils.findAndThen(warehouseMap, stock.getWarehouseId(), warehouse -> stock.setWarehouseName(warehouse.getName())); - }); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java deleted file mode 100644 index 8813da89a0..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java +++ /dev/null @@ -1,165 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockInService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 其它入库单") -@RestController -@RequestMapping("/erp/stock-in") -@Validated -public class ErpStockInController { - - @Resource - private ErpStockInService stockInService; - @Resource - private ErpStockService stockService; - @Resource - private ErpProductService productService; - @Resource - private ErpSupplierService supplierService; - - @Resource - private AdminUserApi adminUserApi; - - @PostMapping("/create") - @Operation(summary = "创建其它入库单") - @PreAuthorize("@ss.hasPermission('erp:stock-in:create')") - public CommonResult createStockIn(@Valid @RequestBody ErpStockInSaveReqVO createReqVO) { - return success(stockInService.createStockIn(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新其它入库单") - @PreAuthorize("@ss.hasPermission('erp:stock-in:update')") - public CommonResult updateStockIn(@Valid @RequestBody ErpStockInSaveReqVO updateReqVO) { - stockInService.updateStockIn(updateReqVO); - return success(true); - } - - @PutMapping("/update-status") - @Operation(summary = "更新其它入库单的状态") - @PreAuthorize("@ss.hasPermission('erp:stock-in:update-status')") - public CommonResult updateStockInStatus(@RequestParam("id") Long id, - @RequestParam("status") Integer status) { - stockInService.updateStockInStatus(id, status); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除其它入库单") - @Parameter(name = "ids", description = "编号数组", required = true) - @PreAuthorize("@ss.hasPermission('erp:stock-in:delete')") - public CommonResult deleteStockIn(@RequestParam("ids") List ids) { - stockInService.deleteStockIn(ids); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得其它入库单") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:stock-in:query')") - public CommonResult getStockIn(@RequestParam("id") Long id) { - ErpStockInDO stockIn = stockInService.getStockIn(id); - if (stockIn == null) { - return success(null); - } - List stockInItemList = stockInService.getStockInItemListByInId(id); - Map productMap = productService.getProductVOMap( - convertSet(stockInItemList, ErpStockInItemDO::getProductId)); - return success(BeanUtils.toBean(stockIn, ErpStockInRespVO.class, stockInVO -> - stockInVO.setItems(BeanUtils.toBean(stockInItemList, ErpStockInRespVO.Item.class, item -> { - ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId()); - item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO); - MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); - })))); - } - - @GetMapping("/page") - @Operation(summary = "获得其它入库单分页") - @PreAuthorize("@ss.hasPermission('erp:stock-in:query')") - public CommonResult> getStockInPage(@Valid ErpStockInPageReqVO pageReqVO) { - PageResult pageResult = stockInService.getStockInPage(pageReqVO); - return success(buildStockInVOPageResult(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出其它入库单 Excel") - @PreAuthorize("@ss.hasPermission('erp:stock-in:export')") - @OperateLog(type = EXPORT) - public void exportStockInExcel(@Valid ErpStockInPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = buildStockInVOPageResult(stockInService.getStockInPage(pageReqVO)).getList(); - // 导出 Excel - ExcelUtils.write(response, "其它入库单.xls", "数据", ErpStockInRespVO.class, list); - } - - private PageResult buildStockInVOPageResult(PageResult pageResult) { - if (CollUtil.isEmpty(pageResult.getList())) { - return PageResult.empty(pageResult.getTotal()); - } - // 1.1 入库项 - List stockInItemList = stockInService.getStockInItemListByInIds( - convertSet(pageResult.getList(), ErpStockInDO::getId)); - Map> stockInItemMap = convertMultiMap(stockInItemList, ErpStockInItemDO::getInId); - // 1.2 产品信息 - Map productMap = productService.getProductVOMap( - convertSet(stockInItemList, ErpStockInItemDO::getProductId)); - // 1.3 供应商信息 - Map supplierMap = supplierService.getSupplierMap( - convertSet(pageResult.getList(), ErpStockInDO::getSupplierId)); - // 1.4 管理员信息 - Map userMap = adminUserApi.getUserMap( - convertSet(pageResult.getList(), stockIn -> Long.parseLong(stockIn.getCreator()))); - // 2. 开始拼接 - return BeanUtils.toBean(pageResult, ErpStockInRespVO.class, stockIn -> { - stockIn.setItems(BeanUtils.toBean(stockInItemMap.get(stockIn.getId()), ErpStockInRespVO.Item.class, - item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); - stockIn.setProductNames(CollUtil.join(stockIn.getItems(), ",", ErpStockInRespVO.Item::getProductName)); - MapUtils.findAndThen(supplierMap, stockIn.getSupplierId(), supplier -> stockIn.setSupplierName(supplier.getName())); - MapUtils.findAndThen(userMap, Long.parseLong(stockIn.getCreator()), user -> stockIn.setCreatorName(user.getNickname())); - }); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockMoveController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockMoveController.java deleted file mode 100644 index 1df3fd7fca..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockMoveController.java +++ /dev/null @@ -1,160 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMovePageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMoveRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMoveSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveItemDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockMoveService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 库存调拨单") -@RestController -@RequestMapping("/erp/stock-move") -@Validated -public class ErpStockMoveController { - - @Resource - private ErpStockMoveService stockMoveService; - @Resource - private ErpStockService stockService; - @Resource - private ErpProductService productService; - - @Resource - private AdminUserApi adminUserApi; - - @PostMapping("/create") - @Operation(summary = "创建库存调拨单") - @PreAuthorize("@ss.hasPermission('erp:stock-move:create')") - public CommonResult createStockMove(@Valid @RequestBody ErpStockMoveSaveReqVO createReqVO) { - return success(stockMoveService.createStockMove(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新库存调拨单") - @PreAuthorize("@ss.hasPermission('erp:stock-move:update')") - public CommonResult updateStockMove(@Valid @RequestBody ErpStockMoveSaveReqVO updateReqVO) { - stockMoveService.updateStockMove(updateReqVO); - return success(true); - } - - @PutMapping("/update-status") - @Operation(summary = "更新库存调拨单的状态") - @PreAuthorize("@ss.hasPermission('erp:stock-move:update-status')") - public CommonResult updateStockMoveStatus(@RequestParam("id") Long id, - @RequestParam("status") Integer status) { - stockMoveService.updateStockMoveStatus(id, status); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除库存调拨单") - @Parameter(name = "ids", description = "编号数组", required = true) - @PreAuthorize("@ss.hasPermission('erp:stock-move:delete')") - public CommonResult deleteStockMove(@RequestParam("ids") List ids) { - stockMoveService.deleteStockMove(ids); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得库存调拨单") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:stock-move:query')") - public CommonResult getStockMove(@RequestParam("id") Long id) { - ErpStockMoveDO stockMove = stockMoveService.getStockMove(id); - if (stockMove == null) { - return success(null); - } - List stockMoveItemList = stockMoveService.getStockMoveItemListByMoveId(id); - Map productMap = productService.getProductVOMap( - convertSet(stockMoveItemList, ErpStockMoveItemDO::getProductId)); - return success(BeanUtils.toBean(stockMove, ErpStockMoveRespVO.class, stockMoveVO -> - stockMoveVO.setItems(BeanUtils.toBean(stockMoveItemList, ErpStockMoveRespVO.Item.class, item -> { - ErpStockDO stock = stockService.getStock(item.getProductId(), item.getFromWarehouseId()); - item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO); - MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); - })))); - } - - @GetMapping("/page") - @Operation(summary = "获得库存调拨单分页") - @PreAuthorize("@ss.hasPermission('erp:stock-move:query')") - public CommonResult> getStockMovePage(@Valid ErpStockMovePageReqVO pageReqVO) { - PageResult pageResult = stockMoveService.getStockMovePage(pageReqVO); - return success(buildStockMoveVOPageResult(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出库存调拨单 Excel") - @PreAuthorize("@ss.hasPermission('erp:stock-move:export')") - @OperateLog(type = EXPORT) - public void exportStockMoveExcel(@Valid ErpStockMovePageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = buildStockMoveVOPageResult(stockMoveService.getStockMovePage(pageReqVO)).getList(); - // 导出 Excel - ExcelUtils.write(response, "库存调拨单.xls", "数据", ErpStockMoveRespVO.class, list); - } - - private PageResult buildStockMoveVOPageResult(PageResult pageResult) { - if (CollUtil.isEmpty(pageResult.getList())) { - return PageResult.empty(pageResult.getTotal()); - } - // 1.1 调拨项 - List stockMoveItemList = stockMoveService.getStockMoveItemListByMoveIds( - convertSet(pageResult.getList(), ErpStockMoveDO::getId)); - Map> stockMoveItemMap = convertMultiMap(stockMoveItemList, ErpStockMoveItemDO::getMoveId); - // 1.2 产品信息 - Map productMap = productService.getProductVOMap( - convertSet(stockMoveItemList, ErpStockMoveItemDO::getProductId)); - // 1.3 TODO 芋艿:搞仓库信息 - // 1.4 管理员信息 - Map userMap = adminUserApi.getUserMap( - convertSet(pageResult.getList(), stockMove -> Long.parseLong(stockMove.getCreator()))); - // 2. 开始拼接 - return BeanUtils.toBean(pageResult, ErpStockMoveRespVO.class, stockMove -> { - stockMove.setItems(BeanUtils.toBean(stockMoveItemMap.get(stockMove.getId()), ErpStockMoveRespVO.Item.class, - item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); - stockMove.setProductNames(CollUtil.join(stockMove.getItems(), ",", ErpStockMoveRespVO.Item::getProductName)); - // TODO 芋艿: -// MapUtils.findAndThen(customerMap, stockMove.getCustomerId(), supplier -> stockMove.setCustomerName(supplier.getName())); - MapUtils.findAndThen(userMap, Long.parseLong(stockMove.getCreator()), user -> stockMove.setCreatorName(user.getNickname())); - }); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java deleted file mode 100644 index 9ad592f1ad..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java +++ /dev/null @@ -1,165 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockOutService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 其它出库单") -@RestController -@RequestMapping("/erp/stock-out") -@Validated -public class ErpStockOutController { - - @Resource - private ErpStockOutService stockOutService; - @Resource - private ErpStockService stockService; - @Resource - private ErpProductService productService; - @Resource - private ErpCustomerService customerService; - - @Resource - private AdminUserApi adminUserApi; - - @PostMapping("/create") - @Operation(summary = "创建其它出库单") - @PreAuthorize("@ss.hasPermission('erp:stock-out:create')") - public CommonResult createStockOut(@Valid @RequestBody ErpStockOutSaveReqVO createReqVO) { - return success(stockOutService.createStockOut(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新其它出库单") - @PreAuthorize("@ss.hasPermission('erp:stock-out:update')") - public CommonResult updateStockOut(@Valid @RequestBody ErpStockOutSaveReqVO updateReqVO) { - stockOutService.updateStockOut(updateReqVO); - return success(true); - } - - @PutMapping("/update-status") - @Operation(summary = "更新其它出库单的状态") - @PreAuthorize("@ss.hasPermission('erp:stock-out:update-status')") - public CommonResult updateStockOutStatus(@RequestParam("id") Long id, - @RequestParam("status") Integer status) { - stockOutService.updateStockOutStatus(id, status); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除其它出库单") - @Parameter(name = "ids", description = "编号数组", required = true) - @PreAuthorize("@ss.hasPermission('erp:stock-out:delete')") - public CommonResult deleteStockOut(@RequestParam("ids") List ids) { - stockOutService.deleteStockOut(ids); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得其它出库单") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:stock-out:query')") - public CommonResult getStockOut(@RequestParam("id") Long id) { - ErpStockOutDO stockOut = stockOutService.getStockOut(id); - if (stockOut == null) { - return success(null); - } - List stockOutItemList = stockOutService.getStockOutItemListByOutId(id); - Map productMap = productService.getProductVOMap( - convertSet(stockOutItemList, ErpStockOutItemDO::getProductId)); - return success(BeanUtils.toBean(stockOut, ErpStockOutRespVO.class, stockOutVO -> - stockOutVO.setItems(BeanUtils.toBean(stockOutItemList, ErpStockOutRespVO.Item.class, item -> { - ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId()); - item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO); - MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); - })))); - } - - @GetMapping("/page") - @Operation(summary = "获得其它出库单分页") - @PreAuthorize("@ss.hasPermission('erp:stock-out:query')") - public CommonResult> getStockOutPage(@Valid ErpStockOutPageReqVO pageReqVO) { - PageResult pageResult = stockOutService.getStockOutPage(pageReqVO); - return success(buildStockOutVOPageResult(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出其它出库单 Excel") - @PreAuthorize("@ss.hasPermission('erp:stock-out:export')") - @OperateLog(type = EXPORT) - public void exportStockOutExcel(@Valid ErpStockOutPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = buildStockOutVOPageResult(stockOutService.getStockOutPage(pageReqVO)).getList(); - // 导出 Excel - ExcelUtils.write(response, "其它出库单.xls", "数据", ErpStockOutRespVO.class, list); - } - - private PageResult buildStockOutVOPageResult(PageResult pageResult) { - if (CollUtil.isEmpty(pageResult.getList())) { - return PageResult.empty(pageResult.getTotal()); - } - // 1.1 出库项 - List stockOutItemList = stockOutService.getStockOutItemListByOutIds( - convertSet(pageResult.getList(), ErpStockOutDO::getId)); - Map> stockOutItemMap = convertMultiMap(stockOutItemList, ErpStockOutItemDO::getOutId); - // 1.2 产品信息 - Map productMap = productService.getProductVOMap( - convertSet(stockOutItemList, ErpStockOutItemDO::getProductId)); - // 1.3 客户信息 - Map customerMap = customerService.getCustomerMap( - convertSet(pageResult.getList(), ErpStockOutDO::getCustomerId)); - // 1.4 管理员信息 - Map userMap = adminUserApi.getUserMap( - convertSet(pageResult.getList(), stockOut -> Long.parseLong(stockOut.getCreator()))); - // 2. 开始拼接 - return BeanUtils.toBean(pageResult, ErpStockOutRespVO.class, stockOut -> { - stockOut.setItems(BeanUtils.toBean(stockOutItemMap.get(stockOut.getId()), ErpStockOutRespVO.Item.class, - item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); - stockOut.setProductNames(CollUtil.join(stockOut.getItems(), ",", ErpStockOutRespVO.Item::getProductName)); - MapUtils.findAndThen(customerMap, stockOut.getCustomerId(), supplier -> stockOut.setCustomerName(supplier.getName())); - MapUtils.findAndThen(userMap, Long.parseLong(stockOut.getCreator()), user -> stockOut.setCreatorName(user.getNickname())); - }); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockRecordController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockRecordController.java deleted file mode 100644 index 6ed4538945..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockRecordController.java +++ /dev/null @@ -1,105 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordRespVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockRecordDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockRecordService; -import cn.iocoder.yudao.module.erp.service.stock.ErpWarehouseService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.io.IOException; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 产品库存明细") -@RestController -@RequestMapping("/erp/stock-record") -@Validated -public class ErpStockRecordController { - - @Resource - private ErpStockRecordService stockRecordService; - @Resource - private ErpProductService productService; - @Resource - private ErpWarehouseService warehouseService; - - @Resource - private AdminUserApi adminUserApi; - - @GetMapping("/get") - @Operation(summary = "获得产品库存明细") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:stock-record:query')") - public CommonResult getStockRecord(@RequestParam("id") Long id) { - ErpStockRecordDO stockRecord = stockRecordService.getStockRecord(id); - return success(BeanUtils.toBean(stockRecord, ErpStockRecordRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得产品库存明细分页") - @PreAuthorize("@ss.hasPermission('erp:stock-record:query')") - public CommonResult> getStockRecordPage(@Valid ErpStockRecordPageReqVO pageReqVO) { - PageResult pageResult = stockRecordService.getStockRecordPage(pageReqVO); - return success(buildStockRecrodVOPageResult(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出产品库存明细 Excel") - @PreAuthorize("@ss.hasPermission('erp:stock-record:export')") - @OperateLog(type = EXPORT) - public void exportStockRecordExcel(@Valid ErpStockRecordPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = buildStockRecrodVOPageResult(stockRecordService.getStockRecordPage(pageReqVO)).getList(); - // 导出 Excel - ExcelUtils.write(response, "产品库存明细.xls", "数据", ErpStockRecordRespVO.class, list); - } - - private PageResult buildStockRecrodVOPageResult(PageResult pageResult) { - if (CollUtil.isEmpty(pageResult.getList())) { - return PageResult.empty(pageResult.getTotal()); - } - Map productMap = productService.getProductVOMap( - convertSet(pageResult.getList(), ErpStockRecordDO::getProductId)); - Map warehouseMap = warehouseService.getWarehouseMap( - convertSet(pageResult.getList(), ErpStockRecordDO::getWarehouseId)); - Map userMap = adminUserApi.getUserMap( - convertSet(pageResult.getList(), record -> Long.parseLong(record.getCreator()))); - return BeanUtils.toBean(pageResult, ErpStockRecordRespVO.class, stock -> { - MapUtils.findAndThen(productMap, stock.getProductId(), product -> stock.setProductName(product.getName()) - .setCategoryName(product.getCategoryName()).setUnitName(product.getUnitName())); - MapUtils.findAndThen(warehouseMap, stock.getWarehouseId(), warehouse -> stock.setWarehouseName(warehouse.getName())); - MapUtils.findAndThen(userMap, Long.parseLong(stock.getCreator()), user -> stock.setCreatorName(user.getNickname())); - }); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpWarehouseController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpWarehouseController.java deleted file mode 100644 index 744f439f57..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpWarehouseController.java +++ /dev/null @@ -1,116 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.ErpWarehouseSaveReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehousePageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehouseRespVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; -import cn.iocoder.yudao.module.erp.service.stock.ErpWarehouseService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Parameters; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - ERP 仓库") -@RestController -@RequestMapping("/erp/warehouse") -@Validated -public class ErpWarehouseController { - - @Resource - private ErpWarehouseService warehouseService; - - @PostMapping("/create") - @Operation(summary = "创建仓库") - @PreAuthorize("@ss.hasPermission('erp:warehouse:create')") - public CommonResult createWarehouse(@Valid @RequestBody ErpWarehouseSaveReqVO createReqVO) { - return success(warehouseService.createWarehouse(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新仓库") - @PreAuthorize("@ss.hasPermission('erp:warehouse:update')") - public CommonResult updateWarehouse(@Valid @RequestBody ErpWarehouseSaveReqVO updateReqVO) { - warehouseService.updateWarehouse(updateReqVO); - return success(true); - } - - @PutMapping("/update-default-status") - @Operation(summary = "更新仓库默认状态") - @Parameters({ - @Parameter(name = "id", description = "编号", required = true), - @Parameter(name = "status", description = "状态", required = true) - }) - public CommonResult updateWarehouseDefaultStatus(@RequestParam("id") Long id, - @RequestParam("defaultStatus") Boolean defaultStatus) { - warehouseService.updateWarehouseDefaultStatus(id, defaultStatus); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除仓库") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('erp:warehouse:delete')") - public CommonResult deleteWarehouse(@RequestParam("id") Long id) { - warehouseService.deleteWarehouse(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得仓库") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:warehouse:query')") - public CommonResult getWarehouse(@RequestParam("id") Long id) { - ErpWarehouseDO warehouse = warehouseService.getWarehouse(id); - return success(BeanUtils.toBean(warehouse, ErpWarehouseRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得仓库分页") - @PreAuthorize("@ss.hasPermission('erp:warehouse:query')") - public CommonResult> getWarehousePage(@Valid ErpWarehousePageReqVO pageReqVO) { - PageResult pageResult = warehouseService.getWarehousePage(pageReqVO); - return success(BeanUtils.toBean(pageResult, ErpWarehouseRespVO.class)); - } - - @GetMapping("/simple-list") - @Operation(summary = "获得仓库精简列表", description = "只包含被开启的仓库,主要用于前端的下拉选项") - public CommonResult> getWarehouseSimpleList() { - List list = warehouseService.getWarehouseListByStatus(CommonStatusEnum.ENABLE.getStatus()); - return success(convertList(list, warehouse -> new ErpWarehouseRespVO().setId(warehouse.getId()) - .setName(warehouse.getName()).setDefaultStatus(warehouse.getDefaultStatus()))); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出仓库 Excel") - @PreAuthorize("@ss.hasPermission('erp:warehouse:export')") - @OperateLog(type = EXPORT) - public void exportWarehouseExcel(@Valid ErpWarehousePageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = warehouseService.getWarehousePage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "仓库.xls", "数据", ErpWarehouseRespVO.class, - BeanUtils.toBean(list, ErpWarehouseRespVO.class)); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckPageReqVO.java deleted file mode 100644 index 2bae14c1eb..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckPageReqVO.java +++ /dev/null @@ -1,45 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.validation.InEnum; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 库存盘点单分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpStockCheckPageReqVO extends PageParam { - - @Schema(description = "盘点单号", example = "S123") - private String no; - - @Schema(description = "仓库编号", example = "3113") - private Long warehouseId; - - @Schema(description = "盘点时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] checkTime; - - @Schema(description = "状态", example = "10") - @InEnum(ErpAuditStatus.class) - private Integer status; - - @Schema(description = "备注", example = "随便") - private String remark; - - @Schema(description = "创建者") - private String creator; - - @Schema(description = "产品编号", example = "1") - private Long productId; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckRespVO.java deleted file mode 100644 index af53e3c726..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckRespVO.java +++ /dev/null @@ -1,111 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -import static cn.iocoder.yudao.module.erp.enums.DictTypeConstants.AUDIT_STATUS; - -@Schema(description = "管理后台 - ERP 库存盘点单 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpStockCheckRespVO { - - @Schema(description = "盘点编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - @ExcelProperty("盘点编号") - private Long id; - - @Schema(description = "盘点单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "S123") - @ExcelProperty("盘点单号") - private String no; - - @Schema(description = "盘点时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("盘点时间") - private LocalDateTime checkTime; - - @Schema(description = "合计数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663") - @ExcelProperty("合计数量") - private BigDecimal totalCount; - - @Schema(description = "合计金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906") - @ExcelProperty("合计金额") - private BigDecimal totalPrice; - - @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat(AUDIT_STATUS) - private Integer status; - - @Schema(description = "备注", example = "随便") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "附件 URL", example = "https://www.iocoder.cn/1.doc") - private String fileUrl; - - @Schema(description = "创建人", example = "芋道") - private String creator; - @Schema(description = "创建人名称", example = "芋道") - private String creatorName; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "盘点项列表", requiredMode = Schema.RequiredMode.REQUIRED) - private List items; - - @Schema(description = "产品信息", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("产品信息") - private String productNames; - - @Data - public static class Item { - - @Schema(description = "盘点项编号", example = "11756") - private Long id; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long warehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productId; - - @Schema(description = "产品单价", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "账面数量(当前库存)", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "账面数量不能为空") - private BigDecimal stockCount; - - @Schema(description = "实际数量(实际库存)", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "实际数量不能为空") - private BigDecimal actualCount; - - @Schema(description = "盈亏数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "盈亏数量不能为空") - private BigDecimal count; - - @Schema(description = "备注", example = "随便") - private String remark; - - // ========== 关联字段 ========== - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "巧克力") - private String productName; - @Schema(description = "产品条码", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985") - private String productBarCode; - @Schema(description = "产品单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "盒") - private String productUnitName; - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckSaveReqVO.java deleted file mode 100644 index 0af223fb50..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckSaveReqVO.java +++ /dev/null @@ -1,69 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 其它出库单新增/修改 Request VO") -@Data -public class ErpStockCheckSaveReqVO { - - @Schema(description = "出库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - private Long id; - - @Schema(description = "出库时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "出库时间不能为空") - private LocalDateTime checkTime; - - @Schema(description = "备注", example = "随便") - private String remark; - - @Schema(description = "附件 URL", example = "https://www.iocoder.cn/1.doc") - private String fileUrl; - - @Schema(description = "出库项列表", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "出库项列表不能为空") - @Valid - private List items; - - @Data - public static class Item { - - @Schema(description = "出库项编号", example = "11756") - private Long id; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "仓库编号不能为空") - private Long warehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品编号不能为空") - private Long productId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "账面数量(当前库存)", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "账面数量不能为空") - private BigDecimal stockCount; - - @Schema(description = "实际数量(实际库存)", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "实际数量不能为空") - private BigDecimal actualCount; - - @Schema(description = "盈亏数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "盈亏数量不能为空") - private BigDecimal count; - - @Schema(description = "备注", example = "随便") - private String remark; - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInPageReqVO.java deleted file mode 100644 index 02e3db37a9..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInPageReqVO.java +++ /dev/null @@ -1,48 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.validation.InEnum; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 其它入库单分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpStockInPageReqVO extends PageParam { - - @Schema(description = "入库单号", example = "S123") - private String no; - - @Schema(description = "供应商编号", example = "3113") - private Long supplierId; - - @Schema(description = "入库时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] inTime; - - @Schema(description = "状态", example = "10") - @InEnum(ErpAuditStatus.class) - private Integer status; - - @Schema(description = "备注", example = "随便") - private String remark; - - @Schema(description = "创建者") - private String creator; - - @Schema(description = "产品编号", example = "1") - private Long productId; - - @Schema(description = "仓库编号", example = "1") - private Long warehouseId; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInRespVO.java deleted file mode 100644 index 077b9dd1b6..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInRespVO.java +++ /dev/null @@ -1,110 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -import static cn.iocoder.yudao.module.erp.enums.DictTypeConstants.AUDIT_STATUS; - -@Schema(description = "管理后台 - ERP 其它入库单 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpStockInRespVO { - - @Schema(description = "入库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - @ExcelProperty("入库编号") - private Long id; - - @Schema(description = "入库单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "S123") - @ExcelProperty("入库单号") - private String no; - - @Schema(description = "供应商编号", example = "3113") - private Long supplierId; - @Schema(description = "供应商名称", example = "芋道") - @ExcelProperty("供应商名称") - private String supplierName; - - @Schema(description = "入库时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("入库时间") - private LocalDateTime inTime; - - @Schema(description = "合计数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663") - @ExcelProperty("合计数量") - private BigDecimal totalCount; - - @Schema(description = "合计金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906") - @ExcelProperty("合计金额") - private BigDecimal totalPrice; - - @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat(AUDIT_STATUS) - private Integer status; - - @Schema(description = "备注", example = "随便") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "附件 URL", example = "https://www.iocoder.cn/1.doc") - private String fileUrl; - - @Schema(description = "创建人", example = "芋道") - private String creator; - @Schema(description = "创建人名称", example = "芋道") - private String creatorName; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "入库项列表", requiredMode = Schema.RequiredMode.REQUIRED) - private List items; - - @Schema(description = "产品信息", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("产品信息") - private String productNames; - - @Data - public static class Item { - - @Schema(description = "入库项编号", example = "11756") - private Long id; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long warehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productId; - - @Schema(description = "产品单价", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal count; - - @Schema(description = "备注", example = "随便") - private String remark; - - // ========== 关联字段 ========== - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "巧克力") - private String productName; - @Schema(description = "产品条码", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985") - private String productBarCode; - @Schema(description = "产品单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "盒") - private String productUnitName; - - @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal stockCount; // 该字段仅仅在“详情”和“编辑”时使用 - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInSaveReqVO.java deleted file mode 100644 index 0187872c83..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInSaveReqVO.java +++ /dev/null @@ -1,64 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 其它入库单新增/修改 Request VO") -@Data -public class ErpStockInSaveReqVO { - - @Schema(description = "入库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - private Long id; - - @Schema(description = "供应商编号", example = "3113") - private Long supplierId; - - @Schema(description = "入库时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "入库时间不能为空") - private LocalDateTime inTime; - - @Schema(description = "备注", example = "随便") - private String remark; - - @Schema(description = "附件 URL", example = "https://www.iocoder.cn/1.doc") - private String fileUrl; - - @Schema(description = "入库项列表", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "入库项列表不能为空") - @Valid - private List items; - - @Data - public static class Item { - - @Schema(description = "入库项编号", example = "11756") - private Long id; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "仓库编号不能为空") - private Long warehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品编号不能为空") - private Long productId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "备注", example = "随便") - private String remark; - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMovePageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMovePageReqVO.java deleted file mode 100644 index 98a1fe95e9..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMovePageReqVO.java +++ /dev/null @@ -1,45 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.validation.InEnum; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 库存调拨单分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpStockMovePageReqVO extends PageParam { - - @Schema(description = "调拨单号", example = "S123") - private String no; - - @Schema(description = "调拨时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] moveTime; - - @Schema(description = "状态", example = "10") - @InEnum(ErpAuditStatus.class) - private Integer status; - - @Schema(description = "备注", example = "随便") - private String remark; - - @Schema(description = "创建者") - private String creator; - - @Schema(description = "产品编号", example = "1") - private Long productId; - - @Schema(description = "调出仓库编号", example = "1") - private Long fromWarehouseId; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMoveRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMoveRespVO.java deleted file mode 100644 index 799ddc3f16..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMoveRespVO.java +++ /dev/null @@ -1,107 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -import static cn.iocoder.yudao.module.erp.enums.DictTypeConstants.AUDIT_STATUS; - -@Schema(description = "管理后台 - ERP 库存调拨单 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpStockMoveRespVO { - - @Schema(description = "调拨编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - @ExcelProperty("调拨编号") - private Long id; - - @Schema(description = "调拨单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "S123") - @ExcelProperty("调拨单号") - private String no; - - @Schema(description = "调拨时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("调拨时间") - private LocalDateTime moveTime; - - @Schema(description = "合计数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663") - @ExcelProperty("合计数量") - private BigDecimal totalCount; - - @Schema(description = "合计金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906") - @ExcelProperty("合计金额") - private BigDecimal totalPrice; - - @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat(AUDIT_STATUS) - private Integer status; - - @Schema(description = "备注", example = "随便") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "附件 URL", example = "https://www.iocoder.cn/1.doc") - private String fileUrl; - - @Schema(description = "创建人", example = "芋道") - private String creator; - @Schema(description = "创建人名称", example = "芋道") - private String creatorName; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "调拨项列表", requiredMode = Schema.RequiredMode.REQUIRED) - private List items; - - @Schema(description = "产品信息", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("产品信息") - private String productNames; - - @Data - public static class Item { - - @Schema(description = "调拨项编号", example = "11756") - private Long id; - - @Schema(description = "调出仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long fromWarehouseId; - - @Schema(description = "调入仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "888") - private Long toWarehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productId; - - @Schema(description = "产品单价", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal count; - - @Schema(description = "备注", example = "随便") - private String remark; - - // ========== 关联字段 ========== - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "巧克力") - private String productName; - @Schema(description = "产品条码", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985") - private String productBarCode; - @Schema(description = "产品单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "盒") - private String productUnitName; - - @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal stockCount; // 该字段仅仅在“详情”和“编辑”时使用 - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMoveSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMoveSaveReqVO.java deleted file mode 100644 index 17a431561b..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMoveSaveReqVO.java +++ /dev/null @@ -1,77 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move; - -import cn.hutool.core.util.ObjectUtil; -import com.fasterxml.jackson.annotation.JsonIgnore; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.Valid; -import jakarta.validation.constraints.AssertTrue; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 库存调拨单新增/修改 Request VO") -@Data -public class ErpStockMoveSaveReqVO { - - @Schema(description = "调拨编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - private Long id; - - @Schema(description = "客户编号", example = "3113") - private Long customerId; - - @Schema(description = "调拨时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "调拨时间不能为空") - private LocalDateTime moveTime; - - @Schema(description = "备注", example = "随便") - private String remark; - - @Schema(description = "附件 URL", example = "https://www.iocoder.cn/1.doc") - private String fileUrl; - - @Schema(description = "调拨项列表", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "调拨项列表不能为空") - @Valid - private List items; - - @Data - public static class Item { - - @Schema(description = "调拨项编号", example = "11756") - private Long id; - - @Schema(description = "调出仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "调出仓库编号不能为空") - private Long fromWarehouseId; - - @Schema(description = "调入仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "888") - @NotNull(message = "调入仓库编号不能为空") - private Long toWarehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品编号不能为空") - private Long productId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "备注", example = "随便") - private String remark; - - @AssertTrue(message = "调出、调仓仓库不能相同") - @JsonIgnore - public boolean isWarehouseValid() { - return ObjectUtil.notEqual(fromWarehouseId, toWarehouseId); - } - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java deleted file mode 100644 index 5f6558b19e..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java +++ /dev/null @@ -1,48 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.validation.InEnum; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 其它出库单分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpStockOutPageReqVO extends PageParam { - - @Schema(description = "出库单号", example = "S123") - private String no; - - @Schema(description = "客户编号", example = "3113") - private Long customerId; - - @Schema(description = "出库时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] outTime; - - @Schema(description = "状态", example = "10") - @InEnum(ErpAuditStatus.class) - private Integer status; - - @Schema(description = "备注", example = "随便") - private String remark; - - @Schema(description = "创建者") - private String creator; - - @Schema(description = "产品编号", example = "1") - private Long productId; - - @Schema(description = "仓库编号", example = "1") - private Long warehouseId; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutRespVO.java deleted file mode 100644 index 22a88e7c93..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutRespVO.java +++ /dev/null @@ -1,110 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -import static cn.iocoder.yudao.module.erp.enums.DictTypeConstants.AUDIT_STATUS; - -@Schema(description = "管理后台 - ERP 其它出库单 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpStockOutRespVO { - - @Schema(description = "出库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - @ExcelProperty("出库编号") - private Long id; - - @Schema(description = "出库单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "S123") - @ExcelProperty("出库单号") - private String no; - - @Schema(description = "客户编号", example = "3113") - private Long customerId; - @Schema(description = "客户名称", example = "芋道") - @ExcelProperty("客户名称") - private String customerName; - - @Schema(description = "出库时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("出库时间") - private LocalDateTime outTime; - - @Schema(description = "合计数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663") - @ExcelProperty("合计数量") - private BigDecimal totalCount; - - @Schema(description = "合计金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906") - @ExcelProperty("合计金额") - private BigDecimal totalPrice; - - @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat(AUDIT_STATUS) - private Integer status; - - @Schema(description = "备注", example = "随便") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "附件 URL", example = "https://www.iocoder.cn/1.doc") - private String fileUrl; - - @Schema(description = "创建人", example = "芋道") - private String creator; - @Schema(description = "创建人名称", example = "芋道") - private String creatorName; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "出库项列表", requiredMode = Schema.RequiredMode.REQUIRED) - private List items; - - @Schema(description = "产品信息", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("产品信息") - private String productNames; - - @Data - public static class Item { - - @Schema(description = "出库项编号", example = "11756") - private Long id; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long warehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - private Long productId; - - @Schema(description = "产品单价", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal count; - - @Schema(description = "备注", example = "随便") - private String remark; - - // ========== 关联字段 ========== - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "巧克力") - private String productName; - @Schema(description = "产品条码", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985") - private String productBarCode; - @Schema(description = "产品单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "盒") - private String productUnitName; - - @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - private BigDecimal stockCount; // 该字段仅仅在“详情”和“编辑”时使用 - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutSaveReqVO.java deleted file mode 100644 index 5a903798e3..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutSaveReqVO.java +++ /dev/null @@ -1,64 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "管理后台 - ERP 其它出库单新增/修改 Request VO") -@Data -public class ErpStockOutSaveReqVO { - - @Schema(description = "出库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756") - private Long id; - - @Schema(description = "客户编号", example = "3113") - private Long customerId; - - @Schema(description = "出库时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "出库时间不能为空") - private LocalDateTime outTime; - - @Schema(description = "备注", example = "随便") - private String remark; - - @Schema(description = "附件 URL", example = "https://www.iocoder.cn/1.doc") - private String fileUrl; - - @Schema(description = "出库项列表", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "出库项列表不能为空") - @Valid - private List items; - - @Data - public static class Item { - - @Schema(description = "出库项编号", example = "11756") - private Long id; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "仓库编号不能为空") - private Long warehouseId; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "产品编号不能为空") - private Long productId; - - @Schema(description = "产品单价", example = "100.00") - private BigDecimal productPrice; - - @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "产品数量不能为空") - private BigDecimal count; - - @Schema(description = "备注", example = "随便") - private String remark; - - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordPageReqVO.java deleted file mode 100644 index c478e4fef2..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordPageReqVO.java +++ /dev/null @@ -1,36 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - ERP 产品库存明细分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpStockRecordPageReqVO extends PageParam { - - @Schema(description = "产品编号", example = "10625") - private Long productId; - - @Schema(description = "仓库编号", example = "32407") - private Long warehouseId; - - @Schema(description = "业务类型", example = "10") - private Integer bizType; - - @Schema(description = "业务单号", example = "Z110") - private String bizNo; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordRespVO.java deleted file mode 100644 index ff4b3e12a1..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordRespVO.java +++ /dev/null @@ -1,87 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.yudao.module.erp.enums.DictTypeConstants; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - ERP 产品库存明细 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpStockRecordRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "18909") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10625") - private Long productId; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32407") - private Long warehouseId; - - @Schema(description = "出入库数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "11084") - @ExcelProperty("出入库数量") - private BigDecimal count; - - @Schema(description = "总库存量", requiredMode = Schema.RequiredMode.REQUIRED, example = "4307") - @ExcelProperty("总库存量") - private BigDecimal totalCount; - - @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") - @ExcelProperty(value = "业务类型", converter = DictConvert.class) - @DictFormat(DictTypeConstants.STOCK_RECORD_BIZ_TYPE) - private Integer bizType; - - @Schema(description = "业务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "27093") - @ExcelProperty("业务编号") - private Long bizId; - - @Schema(description = "业务项编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23516") - @ExcelProperty("业务项编号") - private Long bizItemId; - - @Schema(description = "业务单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "Z110") - @ExcelProperty("业务单号") - private String bizNo; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED, example = "25682") - private String creator; - - // ========== 产品信息 ========== - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "苹果") - @ExcelProperty("产品名称") - private String productName; - - @Schema(description = "产品分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "水果") - @ExcelProperty("产品分类") - private String categoryName; - - @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "个") - @ExcelProperty("单位") - private String unitName; - - // ========== 仓库信息 ========== - - @Schema(description = "仓库名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") - @ExcelProperty("仓库名称") - private String warehouseName; - - // ========== 用户信息 ========== - - @Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") - @ExcelProperty("创建人") - private String creatorName; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockPageReqVO.java deleted file mode 100644 index f7f3fa3439..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockPageReqVO.java +++ /dev/null @@ -1,21 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Schema(description = "管理后台 - ERP 库存分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpStockPageReqVO extends PageParam { - - @Schema(description = "产品编号", example = "19614") - private Long productId; - - @Schema(description = "仓库编号", example = "2802") - private Long warehouseId; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockRespVO.java deleted file mode 100644 index 06366a0dd4..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockRespVO.java +++ /dev/null @@ -1,49 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -@Schema(description = "管理后台 - ERP 库存 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpStockRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17086") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "19614") - private Long productId; - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2802") - private Long warehouseId; - - @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "21935") - @ExcelProperty("库存数量") - private BigDecimal count; - - // ========== 产品信息 ========== - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "苹果") - @ExcelProperty("产品名称") - private String productName; - - @Schema(description = "产品分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "水果") - @ExcelProperty("产品分类") - private String categoryName; - - @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "个") - @ExcelProperty("单位") - private String unitName; - - // ========== 仓库信息 ========== - - @Schema(description = "仓库名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") - @ExcelProperty("仓库名称") - private String warehouseName; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehousePageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehousePageReqVO.java deleted file mode 100644 index 2accf9a0ff..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehousePageReqVO.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.validation.InEnum; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Schema(description = "管理后台 - ERP 仓库分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ErpWarehousePageReqVO extends PageParam { - - @Schema(description = "仓库名称", example = "李四") - private String name; - - @Schema(description = "开启状态", example = "1") - @InEnum(CommonStatusEnum.class) - private Integer status; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehouseRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehouseRespVO.java deleted file mode 100644 index 188d426997..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehouseRespVO.java +++ /dev/null @@ -1,64 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.yudao.module.system.enums.DictTypeConstants; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - ERP 仓库 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ErpWarehouseRespVO { - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11614") - @ExcelProperty("仓库编号") - private Long id; - - @Schema(description = "仓库名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") - @ExcelProperty("仓库名称") - private String name; - - @Schema(description = "仓库地址", example = "上海陆家嘴") - @ExcelProperty("仓库地址") - private String address; - - @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") - @ExcelProperty("排序") - private Long sort; - - @Schema(description = "备注", example = "随便") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "负责人", example = "芋头") - @ExcelProperty("负责人") - private String principal; - - @Schema(description = "仓储费,单位:元", example = "13973") - @ExcelProperty("仓储费,单位:元") - private BigDecimal warehousePrice; - - @Schema(description = "搬运费,单位:元", example = "9903") - @ExcelProperty("搬运费,单位:元") - private BigDecimal truckagePrice; - - @Schema(description = "开启状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty(value = "开启状态", converter = DictConvert.class) - @DictFormat(DictTypeConstants.COMMON_STATUS) - private Integer status; - - @Schema(description = "是否默认", example = "1") - @ExcelProperty("是否默认") - private Boolean defaultStatus; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehouseSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehouseSaveReqVO.java deleted file mode 100644 index 8a6f1ce78c..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehouseSaveReqVO.java +++ /dev/null @@ -1,47 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.stock.vo; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.validation.InEnum; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; - -@Schema(description = "管理后台 - ERP 仓库新增/修改 Request VO") -@Data -public class ErpWarehouseSaveReqVO { - - @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11614") - private Long id; - - @Schema(description = "仓库名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") - @NotEmpty(message = "仓库名称不能为空") - private String name; - - @Schema(description = "仓库地址", example = "上海陆家嘴") - private String address; - - @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") - @NotNull(message = "排序不能为空") - private Long sort; - - @Schema(description = "备注", example = "随便") - private String remark; - - @Schema(description = "负责人", example = "芋头") - private String principal; - - @Schema(description = "仓储费,单位:元", example = "13973") - private BigDecimal warehousePrice; - - @Schema(description = "搬运费,单位:元", example = "9903") - private BigDecimal truckagePrice; - - @Schema(description = "开启状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @NotNull(message = "开启状态不能为空") - @InEnum(CommonStatusEnum.class) - private Integer status; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/package-info.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/package-info.java deleted file mode 100644 index ef0e5accfc..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * 提供 RESTful API 给前端: - * 1. admin 包:提供给管理后台 yudao-ui-admin 前端项目 - * 2. app 包:提供给用户 APP yudao-ui-app 前端项目,它的 Controller 和 VO 都要添加 App 前缀,用于和管理后台进行区分 - */ -package cn.iocoder.yudao.module.erp.controller; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpAccountDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpAccountDO.java deleted file mode 100644 index fe01cc228b..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpAccountDO.java +++ /dev/null @@ -1,56 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.finance; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** - * ERP 结算账户 DO - * - * @author 芋道源码 - */ -@TableName("erp_account") -@KeySequence("erp_account_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpAccountDO extends BaseDO { - - /** - * 结算账户编号 - */ - @TableId - private Long id; - /** - * 账户名称 - */ - private String name; - /** - * 账户编码 - */ - private String no; - /** - * 备注 - */ - private String remark; - /** - * 开启状态 - * - * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} - */ - private Integer status; - /** - * 排序 - */ - private Integer sort; - /** - * 是否默认 - */ - private Boolean defaultStatus; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentDO.java deleted file mode 100644 index edb55edbfc..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentDO.java +++ /dev/null @@ -1,86 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.finance; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * ERP 付款单 DO - * - * @author 芋道源码 - */ -@TableName("erp_finance_payment") -@KeySequence("erp_finance_payment_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpFinancePaymentDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 付款单号 - */ - private String no; - /** - * 付款状态 - * - * 枚举 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus} - */ - private Integer status; - /** - * 付款时间 - */ - private LocalDateTime paymentTime; - /** - * 财务人员编号 - * - * 关联 AdminUserDO 的 id 字段 - */ - private Long financeUserId; - /** - * 供应商编号 - * - * 关联 {@link ErpSupplierDO#getId()} - */ - private Long supplierId; - /** - * 付款账户编号 - * - * 关联 {@link ErpAccountDO#getId()} - */ - private Long accountId; - - /** - * 合计价格,单位:元 - */ - private BigDecimal totalPrice; - /** - * 优惠金额,单位:元 - */ - private BigDecimal discountPrice; - /** - * 实付金额,单位:分 - * - * paymentPrice = totalPrice - discountPrice - */ - private BigDecimal paymentPrice; - - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentItemDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentItemDO.java deleted file mode 100644 index dd5bc5f69b..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentItemDO.java +++ /dev/null @@ -1,75 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.finance; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 付款项 DO - * - * @author 芋道源码 - */ -@TableName("erp_finance_payment_item") -@KeySequence("erp_finance_payment_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpFinancePaymentItemDO extends BaseDO { - - /** - * 入库项编号 - */ - @TableId - private Long id; - /** - * 付款单编号 - * - * 关联 {@link ErpFinancePaymentDO#getId()} - */ - private Long paymentId; - - /** - * 业务类型 - * - * 枚举 {@link cn.iocoder.yudao.module.erp.enums.common.ErpBizTypeEnum} 的采购入库、退货 - */ - private Integer bizType; - /** - * 业务编号 - * - * 例如说:{@link ErpPurchaseInDO#getId()} - */ - private Long bizId; - /** - * 业务单号 - * - * 例如说:{@link ErpPurchaseInDO#getNo()} - */ - private String bizNo; - - /** - * 应付金额,单位:分 - */ - private BigDecimal totalPrice; - /** - * 已付金额,单位:分 - */ - private BigDecimal paidPrice; - /** - * 本次付款,单位:分 - */ - private BigDecimal paymentPrice; - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptDO.java deleted file mode 100644 index 46a5595054..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptDO.java +++ /dev/null @@ -1,86 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.finance; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * ERP 收款单 DO - * - * @author 芋道源码 - */ -@TableName("erp_finance_receipt") -@KeySequence("erp_finance_receipt_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpFinanceReceiptDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 收款单号 - */ - private String no; - /** - * 收款状态 - * - * 枚举 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus} - */ - private Integer status; - /** - * 收款时间 - */ - private LocalDateTime receiptTime; - /** - * 财务人员编号 - * - * 关联 AdminUserDO 的 id 字段 - */ - private Long financeUserId; - /** - * 客户编号 - * - * 关联 {@link ErpCustomerDO#getId()} - */ - private Long customerId; - /** - * 收款账户编号 - * - * 关联 {@link ErpAccountDO#getId()} - */ - private Long accountId; - - /** - * 合计价格,单位:元 - */ - private BigDecimal totalPrice; - /** - * 优惠金额,单位:元 - */ - private BigDecimal discountPrice; - /** - * 实付金额,单位:分 - * - * receiptPrice = totalPrice - discountPrice - */ - private BigDecimal receiptPrice; - - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptItemDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptItemDO.java deleted file mode 100644 index 87f051d5ce..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptItemDO.java +++ /dev/null @@ -1,75 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.finance; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 收款项 DO - * - * @author 芋道源码 - */ -@TableName("erp_finance_receipt_item") -@KeySequence("erp_finance_receipt_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpFinanceReceiptItemDO extends BaseDO { - - /** - * 入库项编号 - */ - @TableId - private Long id; - /** - * 收款单编号 - * - * 关联 {@link ErpFinanceReceiptDO#getId()} - */ - private Long receiptId; - - /** - * 业务类型 - * - * 枚举 {@link cn.iocoder.yudao.module.erp.enums.common.ErpBizTypeEnum} 的销售出库、退货 - */ - private Integer bizType; - /** - * 业务编号 - * - * 例如说:{@link ErpSaleOutDO#getId()} - */ - private Long bizId; - /** - * 业务单号 - * - * 例如说:{@link ErpSaleOutDO#getNo()} - */ - private String bizNo; - - /** - * 应收金额,单位:分 - */ - private BigDecimal totalPrice; - /** - * 已收金额,单位:分 - */ - private BigDecimal receiptedPrice; - /** - * 本次收款,单位:分 - */ - private BigDecimal receiptPrice; - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductCategoryDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductCategoryDO.java deleted file mode 100644 index 4c6225158b..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductCategoryDO.java +++ /dev/null @@ -1,54 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.product; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** - * ERP 产品分类 DO - * - * @author 芋道源码 - */ -@TableName("erp_product_category") -@KeySequence("erp_product_category_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpProductCategoryDO extends BaseDO { - - public static final Long PARENT_ID_ROOT = 0L; - - /** - * 分类编号 - */ - @TableId - private Long id; - /** - * 父分类编号 - */ - private Long parentId; - /** - * 分类名称 - */ - private String name; - /** - * 分类编码 - */ - private String code; - /** - * 分类排序 - */ - private Integer sort; - /** - * 开启状态 - * - * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} - */ - private Integer status; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductDO.java deleted file mode 100644 index 31e4aa2d9a..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductDO.java +++ /dev/null @@ -1,86 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.product; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 产品 DO - * - * @author 芋道源码 - */ -@TableName("erp_product") -@KeySequence("erp_product_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpProductDO extends BaseDO { - - /** - * 产品编号 - */ - @TableId - private Long id; - /** - * 产品名称 - */ - private String name; - /** - * 产品条码 - */ - private String barCode; - /** - * 产品分类编号 - * - * 关联 {@link ErpProductCategoryDO#getId()} - */ - private Long categoryId; - /** - * 单位编号 - * - * 关联 {@link ErpProductUnitDO#getId()} - */ - private Long unitId; - /** - * 产品状态 - * - * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} - */ - private Integer status; - /** - * 产品规格 - */ - private String standard; - /** - * 产品备注 - */ - private String remark; - /** - * 保质期天数 - */ - private Integer expiryDay; - /** - * 基础重量(kg) - */ - private BigDecimal weight; - /** - * 采购价格,单位:元 - */ - private BigDecimal purchasePrice; - /** - * 销售价格,单位:元 - */ - private BigDecimal salePrice; - /** - * 最低价格,单位:元 - */ - private BigDecimal minPrice; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductUnitDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductUnitDO.java deleted file mode 100644 index 73c96c2901..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductUnitDO.java +++ /dev/null @@ -1,39 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.product; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; - -/** - * ERP 产品单位 DO - * - * @author 芋道源码 - */ -@TableName("erp_product_unit") -@KeySequence("erp_product_unit_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpProductUnitDO extends BaseDO { - - /** - * 单位编号 - */ - @TableId - private Long id; - /** - * 单位名字 - */ - private String name; - /** - * 单位状态 - */ - private Integer status; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInDO.java deleted file mode 100644 index b8186f509f..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInDO.java +++ /dev/null @@ -1,122 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.purchase; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * ERP 采购入库 DO - * - * @author 芋道源码 - */ -@TableName(value = "erp_purchase_in") -@KeySequence("erp_purchase_in_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpPurchaseInDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 采购入库单号 - */ - private String no; - /** - * 入库状态 - * - * 枚举 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus} - */ - private Integer status; - /** - * 供应商编号 - * - * 关联 {@link ErpSupplierDO#getId()} - */ - private Long supplierId; - /** - * 结算账户编号 - * - * 关联 {@link ErpAccountDO#getId()} - */ - private Long accountId; - /** - * 入库时间 - */ - private LocalDateTime inTime; - - /** - * 采购订单编号 - * - * 关联 {@link ErpPurchaseOrderDO#getId()} - */ - private Long orderId; - /** - * 采购订单号 - * - * 冗余 {@link ErpPurchaseOrderDO#getNo()} - */ - private String orderNo; - - /** - * 合计数量 - */ - private BigDecimal totalCount; - /** - * 最终合计价格,单位:元 - * - * totalPrice = totalProductPrice + totalTaxPrice - discountPrice + otherPrice - */ - private BigDecimal totalPrice; - /** - * 已支付金额,单位:元 - * - * 目的:和 {@link cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentDO} 结合,记录已支付金额 - */ - private BigDecimal paymentPrice; - - /** - * 合计产品价格,单位:元 - */ - private BigDecimal totalProductPrice; - /** - * 合计税额,单位:元 - */ - private BigDecimal totalTaxPrice; - /** - * 优惠率,百分比 - */ - private BigDecimal discountPercent; - /** - * 优惠金额,单位:元 - * - * discountPrice = (totalProductPrice + totalTaxPrice) * discountPercent - */ - private BigDecimal discountPrice; - /** - * 其它金额,单位:元 - */ - private BigDecimal otherPrice; - - /** - * 附件地址 - */ - private String fileUrl; - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInItemDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInItemDO.java deleted file mode 100644 index 1597bc10bb..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInItemDO.java +++ /dev/null @@ -1,95 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.purchase; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 采购入库项 DO - * - * @author 芋道源码 - */ -@TableName("erp_purchase_in_items") -@KeySequence("erp_purchase_in_items_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpPurchaseInItemDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 采购入库编号 - * - * 关联 {@link ErpPurchaseInDO##getId()} - */ - private Long inId; - /** - * 采购订单项编号 - * - * 关联 {@link ErpPurchaseOrderItemDO#getId()} - * 目的:方便更新关联的采购订单项的入库数量 - */ - private Long orderItemId; - /** - * 仓库编号 - * - * 关联 {@link ErpWarehouseDO#getId()} - */ - private Long warehouseId; - /** - * 产品编号 - * - * 关联 {@link ErpProductDO#getId()} - */ - private Long productId; - /** - * 产品单位单位 - * - * 冗余 {@link ErpProductDO#getUnitId()} - */ - private Long productUnitId; - - /** - * 产品单位单价,单位:元 - */ - private BigDecimal productPrice; - /** - * 数量 - */ - private BigDecimal count; - /** - * 总价,单位:元 - * - * totalPrice = productPrice * count - */ - private BigDecimal totalPrice; - /** - * 税率,百分比 - */ - private BigDecimal taxPercent; - /** - * 税额,单位:元 - * - * taxPrice = totalPrice * taxPercent - */ - private BigDecimal taxPrice; - - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java deleted file mode 100644 index bba1542e3e..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java +++ /dev/null @@ -1,115 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.purchase; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * ERP 采购订单 DO - * - * @author 芋道源码 - */ -@TableName(value = "erp_purchase_order") -@KeySequence("erp_purchase_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpPurchaseOrderDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 采购订单号 - */ - private String no; - /** - * 采购状态 - * - * 枚举 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus} - */ - private Integer status; - /** - * 供应商编号 - * - * 关联 {@link ErpSupplierDO#getId()} - */ - private Long supplierId; - /** - * 结算账户编号 - * - * 关联 {@link ErpAccountDO#getId()} - */ - private Long accountId; - /** - * 下单时间 - */ - private LocalDateTime orderTime; - - /** - * 合计数量 - */ - private BigDecimal totalCount; - /** - * 最终合计价格,单位:元 - * - * totalPrice = totalProductPrice + totalTaxPrice - discountPrice - */ - private BigDecimal totalPrice; - - /** - * 合计产品价格,单位:元 - */ - private BigDecimal totalProductPrice; - /** - * 合计税额,单位:元 - */ - private BigDecimal totalTaxPrice; - /** - * 优惠率,百分比 - */ - private BigDecimal discountPercent; - /** - * 优惠金额,单位:元 - * - * discountPrice = (totalProductPrice + totalTaxPrice) * discountPercent - */ - private BigDecimal discountPrice; - /** - * 定金金额,单位:元 - */ - private BigDecimal depositPrice; - - /** - * 附件地址 - */ - private String fileUrl; - /** - * 备注 - */ - private String remark; - - // ========== 采购入库 ========== - /** - * 采购入库数量 - */ - private BigDecimal inCount; - - // ========== 采购退货(出库)) ========== - /** - * 采购退货数量 - */ - private BigDecimal returnCount; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderItemDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderItemDO.java deleted file mode 100644 index aa54d336b4..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderItemDO.java +++ /dev/null @@ -1,93 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.purchase; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 采购订单项 DO - * - * @author 芋道源码 - */ -@TableName("erp_purchase_order_items") -@KeySequence("erp_purchase_order_items_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpPurchaseOrderItemDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 采购订单编号 - * - * 关联 {@link ErpPurchaseOrderDO#getId()} - */ - private Long orderId; - /** - * 产品编号 - * - * 关联 {@link ErpProductDO#getId()} - */ - private Long productId; - /** - * 产品单位单位 - * - * 冗余 {@link ErpProductDO#getUnitId()} - */ - private Long productUnitId; - - /** - * 产品单位单价,单位:元 - */ - private BigDecimal productPrice; - /** - * 数量 - */ - private BigDecimal count; - /** - * 总价,单位:元 - * - * totalPrice = productPrice * count - */ - private BigDecimal totalPrice; - /** - * 税率,百分比 - */ - private BigDecimal taxPercent; - /** - * 税额,单位:元 - * - * taxPrice = totalPrice * taxPercent - */ - private BigDecimal taxPrice; - - /** - * 备注 - */ - private String remark; - - // ========== 采购入库 ========== - /** - * 采购入库数量 - */ - private BigDecimal inCount; - - // ========== 采购退货(出库)) ========== - /** - * 采购退货数量 - */ - private BigDecimal returnCount; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnDO.java deleted file mode 100644 index 4189e0adc5..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnDO.java +++ /dev/null @@ -1,122 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.purchase; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * ERP 采购退货 DO - * - * @author 芋道源码 - */ -@TableName(value = "erp_purchase_return") -@KeySequence("erp_purchase_return_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpPurchaseReturnDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 采购退货单号 - */ - private String no; - /** - * 退货状态 - * - * 枚举 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus} - */ - private Integer status; - /** - * 供应商编号 - * - * 关联 {@link ErpSupplierDO#getId()} - */ - private Long supplierId; - /** - * 结算账户编号 - * - * 关联 {@link ErpAccountDO#getId()} - */ - private Long accountId; - /** - * 退货时间 - */ - private LocalDateTime returnTime; - - /** - * 采购订单编号 - * - * 关联 {@link ErpPurchaseOrderDO#getId()} - */ - private Long orderId; - /** - * 采购订单号 - * - * 冗余 {@link ErpPurchaseOrderDO#getNo()} - */ - private String orderNo; - - /** - * 合计数量 - */ - private BigDecimal totalCount; - /** - * 最终合计价格,单位:元 - * - * totalPrice = totalProductPrice + totalTaxPrice - discountPrice + otherPrice - */ - private BigDecimal totalPrice; - /** - * 已退款金额,单位:元 - * - * 目的:和 {@link cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentDO} 结合,记录已支付金额 - */ - private BigDecimal refundPrice; - - /** - * 合计产品价格,单位:元 - */ - private BigDecimal totalProductPrice; - /** - * 合计税额,单位:元 - */ - private BigDecimal totalTaxPrice; - /** - * 优惠率,百分比 - */ - private BigDecimal discountPercent; - /** - * 优惠金额,单位:元 - * - * discountPrice = (totalProductPrice + totalTaxPrice) * discountPercent - */ - private BigDecimal discountPrice; - /** - * 其它金额,单位:元 - */ - private BigDecimal otherPrice; - - /** - * 附件地址 - */ - private String fileUrl; - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnItemDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnItemDO.java deleted file mode 100644 index 1e17132775..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnItemDO.java +++ /dev/null @@ -1,95 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.purchase; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 采购退货项 DO - * - * @author 芋道源码 - */ -@TableName("erp_purchase_return_items") -@KeySequence("erp_purchase_return_items_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpPurchaseReturnItemDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 采购退货编号 - * - * 关联 {@link ErpPurchaseReturnDO##getId()} - */ - private Long returnId; - /** - * 采购订单项编号 - * - * 关联 {@link ErpPurchaseOrderItemDO#getId()} - * 目的:方便更新关联的采购订单项的退货数量 - */ - private Long orderItemId; - /** - * 仓库编号 - * - * 关联 {@link ErpWarehouseDO#getId()} - */ - private Long warehouseId; - /** - * 产品编号 - * - * 关联 {@link ErpProductDO#getId()} - */ - private Long productId; - /** - * 产品单位单位 - * - * 冗余 {@link ErpProductDO#getUnitId()} - */ - private Long productUnitId; - - /** - * 产品单位单价,单位:元 - */ - private BigDecimal productPrice; - /** - * 数量 - */ - private BigDecimal count; - /** - * 总价,单位:元 - * - * totalPrice = productPrice * count - */ - private BigDecimal totalPrice; - /** - * 税率,百分比 - */ - private BigDecimal taxPercent; - /** - * 税额,单位:元 - * - * taxPrice = totalPrice * taxPercent - */ - private BigDecimal taxPrice; - - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpSupplierDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpSupplierDO.java deleted file mode 100644 index 6e94c66690..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpSupplierDO.java +++ /dev/null @@ -1,90 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.purchase; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 供应商 DO - * - * @author 芋道源码 - */ -@TableName("erp_supplier") -@KeySequence("erp_supplier_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpSupplierDO extends BaseDO { - - /** - * 供应商编号 - */ - @TableId - private Long id; - /** - * 供应商名称 - */ - private String name; - /** - * 联系人 - */ - private String contact; - /** - * 手机号码 - */ - private String mobile; - /** - * 联系电话 - */ - private String telephone; - /** - * 电子邮箱 - */ - private String email; - /** - * 传真 - */ - private String fax; - /** - * 备注 - */ - private String remark; - /** - * 开启状态 - * - * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} - */ - private Integer status; - /** - * 排序 - */ - private Integer sort; - /** - * 纳税人识别号 - */ - private String taxNo; - /** - * 税率 - */ - private BigDecimal taxPercent; - /** - * 开户行 - */ - private String bankName; - /** - * 开户账号 - */ - private String bankAccount; - /** - * 开户地址 - */ - private String bankAddress; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpCustomerDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpCustomerDO.java deleted file mode 100644 index 7bffcc17cc..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpCustomerDO.java +++ /dev/null @@ -1,90 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.sale; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 客户 DO - * - * @author 芋道源码 - */ -@TableName("erp_customer") -@KeySequence("erp_customer_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpCustomerDO extends BaseDO { - - /** - * 客户编号 - */ - @TableId - private Long id; - /** - * 客户名称 - */ - private String name; - /** - * 联系人 - */ - private String contact; - /** - * 手机号码 - */ - private String mobile; - /** - * 联系电话 - */ - private String telephone; - /** - * 电子邮箱 - */ - private String email; - /** - * 传真 - */ - private String fax; - /** - * 备注 - */ - private String remark; - /** - * 开启状态 - * - * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} - */ - private Integer status; - /** - * 排序 - */ - private Integer sort; - /** - * 纳税人识别号 - */ - private String taxNo; - /** - * 税率 - */ - private BigDecimal taxPercent; - /** - * 开户行 - */ - private String bankName; - /** - * 开户账号 - */ - private String bankAccount; - /** - * 开户地址 - */ - private String bankAddress; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderDO.java deleted file mode 100644 index 5cdd4344e5..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderDO.java +++ /dev/null @@ -1,121 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.sale; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * ERP 销售订单 DO - * - * @author 芋道源码 - */ -@TableName(value = "erp_sale_order") -@KeySequence("erp_sale_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpSaleOrderDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 销售订单号 - */ - private String no; - /** - * 销售状态 - * - * 枚举 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus} - */ - private Integer status; - /** - * 客户编号 - * - * 关联 {@link ErpCustomerDO#getId()} - */ - private Long customerId; - /** - * 结算账户编号 - * - * 关联 {@link ErpAccountDO#getId()} - */ - private Long accountId; - /** - * 销售员编号 - * - * 关联 AdminUserDO 的 id 字段 - */ - private Long saleUserId; - /** - * 下单时间 - */ - private LocalDateTime orderTime; - - /** - * 合计数量 - */ - private BigDecimal totalCount; - /** - * 最终合计价格,单位:元 - * - * totalPrice = totalProductPrice + totalTaxPrice - discountPrice - */ - private BigDecimal totalPrice; - - /** - * 合计产品价格,单位:元 - */ - private BigDecimal totalProductPrice; - /** - * 合计税额,单位:元 - */ - private BigDecimal totalTaxPrice; - /** - * 优惠率,百分比 - */ - private BigDecimal discountPercent; - /** - * 优惠金额,单位:元 - * - * discountPrice = (totalProductPrice + totalTaxPrice) * discountPercent - */ - private BigDecimal discountPrice; - /** - * 定金金额,单位:元 - */ - private BigDecimal depositPrice; - - /** - * 附件地址 - */ - private String fileUrl; - /** - * 备注 - */ - private String remark; - - // ========== 销售出库 ========== - /** - * 销售出库数量 - */ - private BigDecimal outCount; - - // ========== 销售退货(入库)) ========== - /** - * 销售退货数量 - */ - private BigDecimal returnCount; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderItemDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderItemDO.java deleted file mode 100644 index 4c829765b4..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderItemDO.java +++ /dev/null @@ -1,93 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.sale; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 销售订单项 DO - * - * @author 芋道源码 - */ -@TableName("erp_sale_order_items") -@KeySequence("erp_sale_order_items_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpSaleOrderItemDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 销售订单编号 - * - * 关联 {@link ErpSaleOrderDO#getId()} - */ - private Long orderId; - /** - * 产品编号 - * - * 关联 {@link ErpProductDO#getId()} - */ - private Long productId; - /** - * 产品单位单位 - * - * 冗余 {@link ErpProductDO#getUnitId()} - */ - private Long productUnitId; - - /** - * 产品单位单价,单位:元 - */ - private BigDecimal productPrice; - /** - * 数量 - */ - private BigDecimal count; - /** - * 总价,单位:元 - * - * totalPrice = productPrice * count - */ - private BigDecimal totalPrice; - /** - * 税率,百分比 - */ - private BigDecimal taxPercent; - /** - * 税额,单位:元 - * - * taxPrice = totalPrice * taxPercent - */ - private BigDecimal taxPrice; - - /** - * 备注 - */ - private String remark; - - // ========== 销售出库 ========== - /** - * 销售出库数量 - */ - private BigDecimal outCount; - - // ========== 销售退货(入库)) ========== - /** - * 销售退货数量 - */ - private BigDecimal returnCount; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutDO.java deleted file mode 100644 index 65b9d941fd..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutDO.java +++ /dev/null @@ -1,128 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.sale; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * ERP 销售出库 DO - * - * @author 芋道源码 - */ -@TableName(value = "erp_sale_out") -@KeySequence("erp_sale_out_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpSaleOutDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 销售出库单号 - */ - private String no; - /** - * 出库状态 - * - * 枚举 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus} - */ - private Integer status; - /** - * 客户编号 - * - * 关联 {@link ErpCustomerDO#getId()} - */ - private Long customerId; - /** - * 结算账户编号 - * - * 关联 {@link ErpAccountDO#getId()} - */ - private Long accountId; - /** - * 销售员编号 - * - * 关联 AdminUserDO 的 id 字段 - */ - private Long saleUserId; - /** - * 出库时间 - */ - private LocalDateTime outTime; - - /** - * 销售订单编号 - * - * 关联 {@link ErpSaleOrderDO#getId()} - */ - private Long orderId; - /** - * 销售订单号 - * - * 冗余 {@link ErpSaleOrderDO#getNo()} - */ - private String orderNo; - - /** - * 合计数量 - */ - private BigDecimal totalCount; - /** - * 最终合计价格,单位:元 - * - * totalPrice = totalProductPrice + totalTaxPrice - discountPrice + otherPrice - */ - private BigDecimal totalPrice; - /** - * 已收款金额,单位:元 - * - * 目的:和 {@link cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptDO} 结合,记录已收款金额 - */ - private BigDecimal receiptPrice; - - /** - * 合计产品价格,单位:元 - */ - private BigDecimal totalProductPrice; - /** - * 合计税额,单位:元 - */ - private BigDecimal totalTaxPrice; - /** - * 优惠率,百分比 - */ - private BigDecimal discountPercent; - /** - * 优惠金额,单位:元 - * - * discountPrice = (totalProductPrice + totalTaxPrice) * discountPercent - */ - private BigDecimal discountPrice; - /** - * 其它金额,单位:元 - */ - private BigDecimal otherPrice; - - /** - * 附件地址 - */ - private String fileUrl; - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutItemDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutItemDO.java deleted file mode 100644 index b9b406413e..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutItemDO.java +++ /dev/null @@ -1,96 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.sale; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 销售出库项 DO - * - * @author 芋道源码 - */ -@TableName("erp_sale_out_items") -@KeySequence("erp_sale_out_items_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpSaleOutItemDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 销售出库编号 - * - * 关联 {@link ErpStockOutDO##getId()} - */ - private Long outId; - /** - * 销售订单项编号 - * - * 关联 {@link ErpSaleOrderItemDO#getId()} - * 目的:方便更新关联的销售订单项的出库数量 - */ - private Long orderItemId; - /** - * 仓库编号 - * - * 关联 {@link ErpWarehouseDO#getId()} - */ - private Long warehouseId; - /** - * 产品编号 - * - * 关联 {@link ErpProductDO#getId()} - */ - private Long productId; - /** - * 产品单位单位 - * - * 冗余 {@link ErpProductDO#getUnitId()} - */ - private Long productUnitId; - - /** - * 产品单位单价,单位:元 - */ - private BigDecimal productPrice; - /** - * 数量 - */ - private BigDecimal count; - /** - * 总价,单位:元 - * - * totalPrice = productPrice * count - */ - private BigDecimal totalPrice; - /** - * 税率,百分比 - */ - private BigDecimal taxPercent; - /** - * 税额,单位:元 - * - * taxPrice = totalPrice * taxPercent - */ - private BigDecimal taxPrice; - - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnDO.java deleted file mode 100644 index ba41ac91b4..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnDO.java +++ /dev/null @@ -1,128 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.sale; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * ERP 销售退货 DO - * - * @author 芋道源码 - */ -@TableName(value = "erp_sale_return") -@KeySequence("erp_sale_return_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpSaleReturnDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 销售退货单号 - */ - private String no; - /** - * 退货状态 - * - * 枚举 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus} - */ - private Integer status; - /** - * 客户编号 - * - * 关联 {@link ErpCustomerDO#getId()} - */ - private Long customerId; - /** - * 结算账户编号 - * - * 关联 {@link ErpAccountDO#getId()} - */ - private Long accountId; - /** - * 销售员编号 - * - * 关联 AdminUserDO 的 id 字段 - */ - private Long saleUserId; - /** - * 退货时间 - */ - private LocalDateTime returnTime; - - /** - * 销售订单编号 - * - * 关联 {@link ErpSaleOrderDO#getId()} - */ - private Long orderId; - /** - * 销售订单号 - * - * 冗余 {@link ErpSaleOrderDO#getNo()} - */ - private String orderNo; - - /** - * 合计数量 - */ - private BigDecimal totalCount; - /** - * 最终合计价格,单位:元 - * - * totalPrice = totalProductPrice + totalTaxPrice - discountPrice + otherPrice - */ - private BigDecimal totalPrice; - /** - * 已退款金额,单位:元 - * - * 目的:和 {@link cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptDO} 结合,记录已退款金额 - */ - private BigDecimal refundPrice; - - /** - * 合计产品价格,单位:元 - */ - private BigDecimal totalProductPrice; - /** - * 合计税额,单位:元 - */ - private BigDecimal totalTaxPrice; - /** - * 优惠率,百分比 - */ - private BigDecimal discountPercent; - /** - * 优惠金额,单位:元 - * - * discountPrice = (totalProductPrice + totalTaxPrice) * discountPercent - */ - private BigDecimal discountPrice; - /** - * 其它金额,单位:元 - */ - private BigDecimal otherPrice; - - /** - * 附件地址 - */ - private String fileUrl; - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnItemDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnItemDO.java deleted file mode 100644 index 8851d157c5..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnItemDO.java +++ /dev/null @@ -1,95 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.sale; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 销售退货项 DO - * - * @author 芋道源码 - */ -@TableName("erp_sale_return_items") -@KeySequence("erp_sale_return_items_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpSaleReturnItemDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 销售退货编号 - * - * 关联 {@link ErpSaleReturnDO##getId()} - */ - private Long returnId; - /** - * 销售订单项编号 - * - * 关联 {@link ErpSaleOrderItemDO#getId()} - * 目的:方便更新关联的销售订单项的退货数量 - */ - private Long orderItemId; - /** - * 仓库编号 - * - * 关联 {@link ErpWarehouseDO#getId()} - */ - private Long warehouseId; - /** - * 产品编号 - * - * 关联 {@link ErpProductDO#getId()} - */ - private Long productId; - /** - * 产品单位单位 - * - * 冗余 {@link ErpProductDO#getUnitId()} - */ - private Long productUnitId; - - /** - * 产品单位单价,单位:元 - */ - private BigDecimal productPrice; - /** - * 数量 - */ - private BigDecimal count; - /** - * 总价,单位:元 - * - * totalPrice = productPrice * count - */ - private BigDecimal totalPrice; - /** - * 税率,百分比 - */ - private BigDecimal taxPercent; - /** - * 税额,单位:元 - * - * taxPrice = totalPrice * taxPercent - */ - private BigDecimal taxPrice; - - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckDO.java deleted file mode 100644 index e9168275ff..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckDO.java +++ /dev/null @@ -1,63 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.stock; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * ERP 库存盘点单 DO - * - * @author 芋道源码 - */ -@TableName("erp_stock_check") -@KeySequence("erp_stock_check_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpStockCheckDO extends BaseDO { - - /** - * 盘点编号 - */ - @TableId - private Long id; - /** - * 盘点单号 - */ - private String no; - /** - * 盘点时间 - */ - private LocalDateTime checkTime; - /** - * 合计数量 - */ - private BigDecimal totalCount; - /** - * 合计金额,单位:元 - */ - private BigDecimal totalPrice; - /** - * 状态 - * - * 枚举 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus} - */ - private Integer status; - /** - * 备注 - */ - private String remark; - /** - * 附件 URL - */ - private String fileUrl; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckItemDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckItemDO.java deleted file mode 100644 index c3c4dbf991..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckItemDO.java +++ /dev/null @@ -1,83 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.stock; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 库存盘点单项 DO - * - * @author 芋道源码 - */ -@TableName("erp_stock_check_item") -@KeySequence("erp_stock_check_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpStockCheckItemDO extends BaseDO { - - /** - * 盘点项编号 - */ - @TableId - private Long id; - /** - * 盘点编号 - * - * 关联 {@link ErpStockCheckDO#getId()} - */ - private Long checkId; - /** - * 仓库编号 - * - * 关联 {@link ErpWarehouseDO#getId()} - */ - private Long warehouseId; - /** - * 产品编号 - * - * 关联 {@link ErpProductDO#getId()} - */ - private Long productId; - /** - * 产品单位编号 - * - * 冗余 {@link ErpProductDO#getUnitId()} - */ - private Long productUnitId; - /** - * 产品单价 - */ - private BigDecimal productPrice; - /** - * 账面数量(当前库存) - */ - private BigDecimal stockCount; - /** - * 实际数量(实际库存) - */ - private BigDecimal actualCount; - /** - * 盈亏数量 - * - * count = stockCount - actualCount - */ - private BigDecimal count; - /** - * 合计金额,单位:元 - */ - private BigDecimal totalPrice; - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockDO.java deleted file mode 100644 index 558c6c6e5a..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockDO.java +++ /dev/null @@ -1,49 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.stock; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 产品库存 DO - * - * @author 芋道源码 - */ -@TableName("erp_stock") -@KeySequence("erp_stock_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpStockDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 产品编号 - * - * 关联 {@link ErpProductDO#getId()} - */ - private Long productId; - /** - * 仓库编号 - * - * 关联 {@link ErpWarehouseDO#getId()} - */ - private Long warehouseId; - /** - * 库存数量 - */ - private BigDecimal count; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInDO.java deleted file mode 100644 index ee2512ab63..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInDO.java +++ /dev/null @@ -1,70 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.stock; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * ERP 其它入库单 DO - * - * @author 芋道源码 - */ -@TableName("erp_stock_in") -@KeySequence("erp_stock_in_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpStockInDO extends BaseDO { - - /** - * 入库编号 - */ - @TableId - private Long id; - /** - * 入库单号 - */ - private String no; - /** - * 供应商编号 - * - * 关联 {@link ErpSupplierDO#getId()} - */ - private Long supplierId; - /** - * 入库时间 - */ - private LocalDateTime inTime; - /** - * 合计数量 - */ - private BigDecimal totalCount; - /** - * 合计金额,单位:元 - */ - private BigDecimal totalPrice; - /** - * 状态 - * - * 枚举 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus} - */ - private Integer status; - /** - * 备注 - */ - private String remark; - /** - * 附件 URL - */ - private String fileUrl; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInItemDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInItemDO.java deleted file mode 100644 index 3e3ca9c5ca..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInItemDO.java +++ /dev/null @@ -1,73 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.stock; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 其它入库单项 DO - * - * @author 芋道源码 - */ -@TableName("erp_stock_in_item") -@KeySequence("erp_stock_in_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpStockInItemDO extends BaseDO { - - /** - * 入库项编号 - */ - @TableId - private Long id; - /** - * 入库编号 - * - * 关联 {@link ErpStockInDO#getId()} - */ - private Long inId; - /** - * 仓库编号 - * - * 关联 {@link ErpWarehouseDO#getId()} - */ - private Long warehouseId; - /** - * 产品编号 - * - * 关联 {@link ErpProductDO#getId()} - */ - private Long productId; - /** - * 产品单位编号 - * - * 冗余 {@link ErpProductDO#getUnitId()} - */ - private Long productUnitId; - /** - * 产品单价 - */ - private BigDecimal productPrice; - /** - * 产品数量 - */ - private BigDecimal count; - /** - * 合计金额,单位:元 - */ - private BigDecimal totalPrice; - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveDO.java deleted file mode 100644 index 682b33104a..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveDO.java +++ /dev/null @@ -1,63 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.stock; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * ERP 库存调拨单 DO - * - * @author 芋道源码 - */ -@TableName("erp_stock_move") -@KeySequence("erp_stock_move_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpStockMoveDO extends BaseDO { - - /** - * 调拨编号 - */ - @TableId - private Long id; - /** - * 调拨单号 - */ - private String no; - /** - * 调拨时间 - */ - private LocalDateTime moveTime; - /** - * 合计数量 - */ - private BigDecimal totalCount; - /** - * 合计金额,单位:元 - */ - private BigDecimal totalPrice; - /** - * 状态 - * - * 枚举 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus} - */ - private Integer status; - /** - * 备注 - */ - private String remark; - /** - * 附件 URL - */ - private String fileUrl; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveItemDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveItemDO.java deleted file mode 100644 index aee2036707..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveItemDO.java +++ /dev/null @@ -1,79 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.stock; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 库存调拨单项 DO - * - * @author 芋道源码 - */ -@TableName("erp_stock_move_item") -@KeySequence("erp_stock_move_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpStockMoveItemDO extends BaseDO { - - /** - * 调拨项编号 - */ - @TableId - private Long id; - /** - * 调拨编号 - * - * 关联 {@link ErpStockMoveDO#getId()} - */ - private Long moveId; - /** - * 调出仓库编号 - * - * 关联 {@link ErpWarehouseDO#getId()} - */ - private Long fromWarehouseId; - /** - * 调入仓库编号 - * - * 关联 {@link ErpWarehouseDO#getId()} - */ - private Long toWarehouseId; - /** - * 产品编号 - * - * 关联 {@link ErpProductDO#getId()} - */ - private Long productId; - /** - * 产品单位编号 - * - * 冗余 {@link ErpProductDO#getUnitId()} - */ - private Long productUnitId; - /** - * 产品单价 - */ - private BigDecimal productPrice; - /** - * 产品数量 - */ - private BigDecimal count; - /** - * 合计金额,单位:元 - */ - private BigDecimal totalPrice; - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java deleted file mode 100644 index e0b337adbc..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java +++ /dev/null @@ -1,69 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.stock; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * ERP 其它出库单 DO - * - * @author 芋道源码 - */ -@TableName("erp_stock_out") -@KeySequence("erp_stock_out_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpStockOutDO extends BaseDO { - - /** - * 出库编号 - */ - @TableId - private Long id; - /** - * 出库单号 - */ - private String no; - /** - * 客户编号 - * - * TODO 芋艿:待关联 - */ - private Long customerId; - /** - * 出库时间 - */ - private LocalDateTime outTime; - /** - * 合计数量 - */ - private BigDecimal totalCount; - /** - * 合计金额,单位:元 - */ - private BigDecimal totalPrice; - /** - * 状态 - * - * 枚举 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus} - */ - private Integer status; - /** - * 备注 - */ - private String remark; - /** - * 附件 URL - */ - private String fileUrl; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutItemDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutItemDO.java deleted file mode 100644 index 065c5255a4..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutItemDO.java +++ /dev/null @@ -1,73 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.stock; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 其它出库单项 DO - * - * @author 芋道源码 - */ -@TableName("erp_stock_out_item") -@KeySequence("erp_stock_out_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpStockOutItemDO extends BaseDO { - - /** - * 出库项编号 - */ - @TableId - private Long id; - /** - * 出库编号 - * - * 关联 {@link ErpStockOutDO#getId()} - */ - private Long outId; - /** - * 仓库编号 - * - * 关联 {@link ErpWarehouseDO#getId()} - */ - private Long warehouseId; - /** - * 产品编号 - * - * 关联 {@link ErpProductDO#getId()} - */ - private Long productId; - /** - * 产品单位编号 - * - * 冗余 {@link ErpProductDO#getUnitId()} - */ - private Long productUnitId; - /** - * 产品单价 - */ - private BigDecimal productPrice; - /** - * 产品数量 - */ - private BigDecimal count; - /** - * 合计金额,单位:元 - */ - private BigDecimal totalPrice; - /** - * 备注 - */ - private String remark; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockRecordDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockRecordDO.java deleted file mode 100644 index 7bc5e5a01e..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockRecordDO.java +++ /dev/null @@ -1,82 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.stock; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 产品库存明细 DO - * - * @author 芋道源码 - */ -@TableName("erp_stock_record") -@KeySequence("erp_stock_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpStockRecordDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 产品编号 - * - * 关联 {@link ErpProductDO#getId()} - */ - private Long productId; - /** - * 仓库编号 - * - * 关联 {@link ErpWarehouseDO#getId()} - */ - private Long warehouseId; - /** - * 出入库数量 - * - * 正数,表示入库;负数,表示出库 - */ - private BigDecimal count; - /** - * 总库存量 - * - * 出入库之后,目前的库存量 - */ - private BigDecimal totalCount; - /** - * 业务类型 - * - * 枚举 {@link ErpStockRecordBizTypeEnum} - */ - private Integer bizType; - /** - * 业务编号 - * - * 例如说:{@link ErpStockInDO#getId()} - */ - private Long bizId; - /** - * 业务项编号 - * - * 例如说:{@link ErpStockInItemDO#getId()} - */ - private Long bizItemId; - /** - * 业务单号 - * - * 例如说:{@link ErpStockInDO#getNo()} - */ - private String bizNo; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpWarehouseDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpWarehouseDO.java deleted file mode 100644 index 4f206173fc..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpWarehouseDO.java +++ /dev/null @@ -1,70 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.dataobject.stock; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * ERP 仓库 DO - * - * @author 芋道源码 - */ -@TableName("erp_warehouse") -@KeySequence("erp_warehouse_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ErpWarehouseDO extends BaseDO { - - /** - * 仓库编号 - */ - @TableId - private Long id; - /** - * 仓库名称 - */ - private String name; - /** - * 仓库地址 - */ - private String address; - /** - * 排序 - */ - private Long sort; - /** - * 备注 - */ - private String remark; - /** - * 负责人 - */ - private String principal; - /** - * 仓储费,单位:元 - */ - private BigDecimal warehousePrice; - /** - * 搬运费,单位:元 - */ - private BigDecimal truckagePrice; - /** - * 开启状态 - * - * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} - */ - private Integer status; - /** - * 是否默认 - */ - private Boolean defaultStatus; - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpAccountMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpAccountMapper.java deleted file mode 100644 index 2f98147e20..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpAccountMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.finance; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.account.ErpAccountPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * ERP 结算账户 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpAccountMapper extends BaseMapperX { - - default PageResult selectPage(ErpAccountPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(ErpAccountDO::getName, reqVO.getName()) - .likeIfPresent(ErpAccountDO::getNo, reqVO.getNo()) - .eqIfPresent(ErpAccountDO::getRemark, reqVO.getRemark()) - .orderByDesc(ErpAccountDO::getId)); - } - - default ErpAccountDO selectByDefaultStatus() { - return selectOne(ErpAccountDO::getDefaultStatus, true); - } - - default List selectListByStatus(Integer status) { - return selectList(ErpAccountDO::getStatus, status); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinancePaymentItemMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinancePaymentItemMapper.java deleted file mode 100644 index 7787e8d709..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinancePaymentItemMapper.java +++ /dev/null @@ -1,44 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.finance; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.map.MapUtil; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentItemDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -/** - * ERP 付款单项 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpFinancePaymentItemMapper extends BaseMapperX { - - default List selectListByPaymentId(Long paymentId) { - return selectList(ErpFinancePaymentItemDO::getPaymentId, paymentId); - } - - default List selectListByPaymentIds(Collection paymentIds) { - return selectList(ErpFinancePaymentItemDO::getPaymentId, paymentIds); - } - - default BigDecimal selectPaymentPriceSumByBizIdAndBizType(Long bizId, Integer bizType) { - // SQL sum 查询 - List> result = selectMaps(new QueryWrapper() - .select("SUM(payment_price) AS paymentPriceSum") - .eq("biz_id", bizId) - .eq("biz_type", bizType)); - // 获得数量 - if (CollUtil.isEmpty(result)) { - return BigDecimal.ZERO; - } - return BigDecimal.valueOf(MapUtil.getDouble(result.get(0), "paymentPriceSum", 0D)); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinancePaymentMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinancePaymentMapper.java deleted file mode 100644 index 5ad0cccfd2..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinancePaymentMapper.java +++ /dev/null @@ -1,48 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.finance; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment.ErpFinancePaymentPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentItemDO; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * ERP 付款单 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpFinancePaymentMapper extends BaseMapperX { - - default PageResult selectPage(ErpFinancePaymentPageReqVO reqVO) { - MPJLambdaWrapperX query = new MPJLambdaWrapperX() - .likeIfPresent(ErpFinancePaymentDO::getNo, reqVO.getNo()) - .betweenIfPresent(ErpFinancePaymentDO::getPaymentTime, reqVO.getPaymentTime()) - .eqIfPresent(ErpFinancePaymentDO::getSupplierId, reqVO.getSupplierId()) - .eqIfPresent(ErpFinancePaymentDO::getCreator, reqVO.getCreator()) - .eqIfPresent(ErpFinancePaymentDO::getFinanceUserId, reqVO.getFinanceUserId()) - .eqIfPresent(ErpFinancePaymentDO::getAccountId, reqVO.getAccountId()) - .eqIfPresent(ErpFinancePaymentDO::getStatus, reqVO.getStatus()) - .likeIfPresent(ErpFinancePaymentDO::getRemark, reqVO.getRemark()) - .orderByDesc(ErpFinancePaymentDO::getId); - if (reqVO.getBizNo() != null) { - query.leftJoin(ErpFinancePaymentItemDO.class, ErpFinancePaymentItemDO::getPaymentId, ErpFinancePaymentDO::getId) - .eq(reqVO.getBizNo() != null, ErpFinancePaymentItemDO::getBizNo, reqVO.getBizNo()) - .groupBy(ErpFinancePaymentDO::getId); // 避免 1 对多查询,产生相同的 1 - } - return selectJoinPage(reqVO, ErpFinancePaymentDO.class, query); - } - - default int updateByIdAndStatus(Long id, Integer status, ErpFinancePaymentDO updateObj) { - return update(updateObj, new LambdaUpdateWrapper() - .eq(ErpFinancePaymentDO::getId, id).eq(ErpFinancePaymentDO::getStatus, status)); - } - - default ErpFinancePaymentDO selectByNo(String no) { - return selectOne(ErpFinancePaymentDO::getNo, no); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinanceReceiptItemMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinanceReceiptItemMapper.java deleted file mode 100644 index cb6082b0e4..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinanceReceiptItemMapper.java +++ /dev/null @@ -1,44 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.finance; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.map.MapUtil; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptItemDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -/** - * ERP 收款单项 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpFinanceReceiptItemMapper extends BaseMapperX { - - default List selectListByReceiptId(Long receiptId) { - return selectList(ErpFinanceReceiptItemDO::getReceiptId, receiptId); - } - - default List selectListByReceiptIds(Collection receiptIds) { - return selectList(ErpFinanceReceiptItemDO::getReceiptId, receiptIds); - } - - default BigDecimal selectReceiptPriceSumByBizIdAndBizType(Long bizId, Integer bizType) { - // SQL sum 查询 - List> result = selectMaps(new QueryWrapper() - .select("SUM(receipt_price) AS receiptPriceSum") - .eq("biz_id", bizId) - .eq("biz_type", bizType)); - // 获得数量 - if (CollUtil.isEmpty(result)) { - return BigDecimal.ZERO; - } - return BigDecimal.valueOf(MapUtil.getDouble(result.get(0), "receiptPriceSum", 0D)); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinanceReceiptMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinanceReceiptMapper.java deleted file mode 100644 index d895adea41..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinanceReceiptMapper.java +++ /dev/null @@ -1,48 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.finance; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.receipt.ErpFinanceReceiptPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptItemDO; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * ERP 收款单 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpFinanceReceiptMapper extends BaseMapperX { - - default PageResult selectPage(ErpFinanceReceiptPageReqVO reqVO) { - MPJLambdaWrapperX query = new MPJLambdaWrapperX() - .likeIfPresent(ErpFinanceReceiptDO::getNo, reqVO.getNo()) - .betweenIfPresent(ErpFinanceReceiptDO::getReceiptTime, reqVO.getReceiptTime()) - .eqIfPresent(ErpFinanceReceiptDO::getCustomerId, reqVO.getCustomerId()) - .eqIfPresent(ErpFinanceReceiptDO::getCreator, reqVO.getCreator()) - .eqIfPresent(ErpFinanceReceiptDO::getFinanceUserId, reqVO.getFinanceUserId()) - .eqIfPresent(ErpFinanceReceiptDO::getAccountId, reqVO.getAccountId()) - .eqIfPresent(ErpFinanceReceiptDO::getStatus, reqVO.getStatus()) - .likeIfPresent(ErpFinanceReceiptDO::getRemark, reqVO.getRemark()) - .orderByDesc(ErpFinanceReceiptDO::getId); - if (reqVO.getBizNo() != null) { - query.leftJoin(ErpFinanceReceiptItemDO.class, ErpFinanceReceiptItemDO::getReceiptId, ErpFinanceReceiptDO::getId) - .eq(reqVO.getBizNo() != null, ErpFinanceReceiptItemDO::getBizNo, reqVO.getBizNo()) - .groupBy(ErpFinanceReceiptDO::getId); // 避免 1 对多查询,产生相同的 1 - } - return selectJoinPage(reqVO, ErpFinanceReceiptDO.class, query); - } - - default int updateByIdAndStatus(Long id, Integer status, ErpFinanceReceiptDO updateObj) { - return update(updateObj, new LambdaUpdateWrapper() - .eq(ErpFinanceReceiptDO::getId, id).eq(ErpFinanceReceiptDO::getStatus, status)); - } - - default ErpFinanceReceiptDO selectByNo(String no) { - return selectOne(ErpFinanceReceiptDO::getNo, no); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductCategoryMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductCategoryMapper.java deleted file mode 100644 index 70bbc64299..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductCategoryMapper.java +++ /dev/null @@ -1,34 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.product; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategoryListReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * ERP 产品分类 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpProductCategoryMapper extends BaseMapperX { - - default List selectList(ErpProductCategoryListReqVO reqVO) { - return selectList(new LambdaQueryWrapperX() - .likeIfPresent(ErpProductCategoryDO::getName, reqVO.getName()) - .eqIfPresent(ErpProductCategoryDO::getStatus, reqVO.getStatus()) - .orderByDesc(ErpProductCategoryDO::getId)); - } - - default ErpProductCategoryDO selectByParentIdAndName(Long parentId, String name) { - return selectOne(ErpProductCategoryDO::getParentId, parentId, ErpProductCategoryDO::getName, name); - } - - default Long selectCountByParentId(Long parentId) { - return selectCount(ErpProductCategoryDO::getParentId, parentId); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java deleted file mode 100644 index ff491fe22f..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java +++ /dev/null @@ -1,40 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.product; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * ERP 产品 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpProductMapper extends BaseMapperX { - - default PageResult selectPage(ErpProductPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(ErpProductDO::getName, reqVO.getName()) - .eqIfPresent(ErpProductDO::getCategoryId, reqVO.getCategoryId()) - .betweenIfPresent(ErpProductDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(ErpProductDO::getId)); - } - - default Long selectCountByCategoryId(Long categoryId) { - return selectCount(ErpProductDO::getCategoryId, categoryId); - } - - default Long selectCountByUnitId(Long unitId) { - return selectCount(ErpProductDO::getUnitId, unitId); - } - - default List selectListByStatus(Integer status) { - return selectList(ErpProductDO::getStatus, status); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductUnitMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductUnitMapper.java deleted file mode 100644 index 45db6a8292..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductUnitMapper.java +++ /dev/null @@ -1,35 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.product; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * ERP 产品单位 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpProductUnitMapper extends BaseMapperX { - - default PageResult selectPage(ErpProductUnitPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(ErpProductUnitDO::getName, reqVO.getName()) - .eqIfPresent(ErpProductUnitDO::getStatus, reqVO.getStatus()) - .orderByDesc(ErpProductUnitDO::getId)); - } - - default ErpProductUnitDO selectByName(String name) { - return selectOne(ErpProductUnitDO::getName, name); - } - - default List selectListByStatus(Integer status) { - return selectList(ErpProductUnitDO::getStatus, status); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInItemMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInItemMapper.java deleted file mode 100644 index 9140f9548f..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInItemMapper.java +++ /dev/null @@ -1,56 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.purchase; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInItemDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; - -/** - * ERP 采购入库项 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpPurchaseInItemMapper extends BaseMapperX { - - default List selectListByInId(Long inId) { - return selectList(ErpPurchaseInItemDO::getInId, inId); - } - - default List selectListByInIds(Collection inIds) { - return selectList(ErpPurchaseInItemDO::getInId, inIds); - } - - default int deleteByInId(Long inId) { - return delete(ErpPurchaseInItemDO::getInId, inId); - } - - /** - * 基于采购订单编号,查询每个采购订单项的入库数量之和 - * - * @param inIds 入库订单项编号数组 - * @return key:采购订单项编号;value:入库数量之和 - */ - default Map selectOrderItemCountSumMapByInIds(Collection inIds) { - if (CollUtil.isEmpty(inIds)) { - return Collections.emptyMap(); - } - // SQL sum 查询 - List> result = selectMaps(new QueryWrapper() - .select("order_item_id, SUM(count) AS sumCount") - .groupBy("order_item_id") - .in("in_id", inIds)); - // 获得数量 - return convertMap(result, obj -> (Long) obj.get("order_item_id"), obj -> (BigDecimal) obj.get("sumCount")); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInMapper.java deleted file mode 100644 index c155d8cbed..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInMapper.java +++ /dev/null @@ -1,70 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.purchase; - - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInItemDO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; -import java.util.Objects; - -/** - * ERP 采购入库 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpPurchaseInMapper extends BaseMapperX { - - default PageResult selectPage(ErpPurchaseInPageReqVO reqVO) { - MPJLambdaWrapperX query = new MPJLambdaWrapperX() - .likeIfPresent(ErpPurchaseInDO::getNo, reqVO.getNo()) - .eqIfPresent(ErpPurchaseInDO::getSupplierId, reqVO.getSupplierId()) - .betweenIfPresent(ErpPurchaseInDO::getInTime, reqVO.getInTime()) - .eqIfPresent(ErpPurchaseInDO::getStatus, reqVO.getStatus()) - .likeIfPresent(ErpPurchaseInDO::getRemark, reqVO.getRemark()) - .eqIfPresent(ErpPurchaseInDO::getCreator, reqVO.getCreator()) - .eqIfPresent(ErpPurchaseInDO::getAccountId, reqVO.getAccountId()) - .likeIfPresent(ErpPurchaseInDO::getOrderNo, reqVO.getOrderNo()) - .orderByDesc(ErpPurchaseInDO::getId); - // 付款状态。为什么需要 t. 的原因,是因为联表查询时,需要指定表名,不然会报字段不存在的错误 - if (Objects.equals(reqVO.getPaymentStatus(), ErpPurchaseInPageReqVO.PAYMENT_STATUS_NONE)) { - query.eq(ErpPurchaseInDO::getPaymentPrice, 0); - } else if (Objects.equals(reqVO.getPaymentStatus(), ErpPurchaseInPageReqVO.PAYMENT_STATUS_PART)) { - query.gt(ErpPurchaseInDO::getPaymentPrice, 0).apply("t.payment_price < t.total_price"); - } else if (Objects.equals(reqVO.getPaymentStatus(), ErpPurchaseInPageReqVO.PAYMENT_STATUS_ALL)) { - query.apply("t.payment_price = t.total_price"); - } - if (Boolean.TRUE.equals(reqVO.getPaymentEnable())) { - query.eq(ErpPurchaseInDO::getStatus, ErpAuditStatus.APPROVE.getStatus()) - .apply("t.payment_price < t.total_price"); - } - if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) { - query.leftJoin(ErpPurchaseInItemDO.class, ErpPurchaseInItemDO::getInId, ErpPurchaseInDO::getId) - .eq(reqVO.getWarehouseId() != null, ErpPurchaseInItemDO::getWarehouseId, reqVO.getWarehouseId()) - .eq(reqVO.getProductId() != null, ErpPurchaseInItemDO::getProductId, reqVO.getProductId()) - .groupBy(ErpPurchaseInDO::getId); // 避免 1 对多查询,产生相同的 1 - } - return selectJoinPage(reqVO, ErpPurchaseInDO.class, query); - } - - default int updateByIdAndStatus(Long id, Integer status, ErpPurchaseInDO updateObj) { - return update(updateObj, new LambdaUpdateWrapper() - .eq(ErpPurchaseInDO::getId, id).eq(ErpPurchaseInDO::getStatus, status)); - } - - default ErpPurchaseInDO selectByNo(String no) { - return selectOne(ErpPurchaseInDO::getNo, no); - } - - default List selectListByOrderId(Long orderId) { - return selectList(ErpPurchaseInDO::getOrderId, orderId); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderItemMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderItemMapper.java deleted file mode 100644 index 17f1fe290a..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderItemMapper.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.purchase; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Collection; -import java.util.List; - -/** - * ERP 采购订单明项目 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpPurchaseOrderItemMapper extends BaseMapperX { - - default List selectListByOrderId(Long orderId) { - return selectList(ErpPurchaseOrderItemDO::getOrderId, orderId); - } - - default List selectListByOrderIds(Collection orderIds) { - return selectList(ErpPurchaseOrderItemDO::getOrderId, orderIds); - } - - default int deleteByOrderId(Long orderId) { - return delete(ErpPurchaseOrderItemDO::getOrderId, orderId); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java deleted file mode 100644 index 01f0303f97..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java +++ /dev/null @@ -1,75 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.purchase; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Objects; - -/** - * ERP 采购订单 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpPurchaseOrderMapper extends BaseMapperX { - - default PageResult selectPage(ErpPurchaseOrderPageReqVO reqVO) { - MPJLambdaWrapperX query = new MPJLambdaWrapperX() - .likeIfPresent(ErpPurchaseOrderDO::getNo, reqVO.getNo()) - .eqIfPresent(ErpPurchaseOrderDO::getSupplierId, reqVO.getSupplierId()) - .betweenIfPresent(ErpPurchaseOrderDO::getOrderTime, reqVO.getOrderTime()) - .eqIfPresent(ErpPurchaseOrderDO::getStatus, reqVO.getStatus()) - .likeIfPresent(ErpPurchaseOrderDO::getRemark, reqVO.getRemark()) - .eqIfPresent(ErpPurchaseOrderDO::getCreator, reqVO.getCreator()) - .orderByDesc(ErpPurchaseOrderDO::getId); - // 入库状态。为什么需要 t. 的原因,是因为联表查询时,需要指定表名,不然会报 in_count 错误 - if (Objects.equals(reqVO.getInStatus(), ErpPurchaseOrderPageReqVO.IN_STATUS_NONE)) { - query.eq(ErpPurchaseOrderDO::getInCount, 0); - } else if (Objects.equals(reqVO.getInStatus(), ErpPurchaseOrderPageReqVO.IN_STATUS_PART)) { - query.gt(ErpPurchaseOrderDO::getInCount, 0).apply("t.in_count < t.total_count"); - } else if (Objects.equals(reqVO.getInStatus(), ErpPurchaseOrderPageReqVO.IN_STATUS_ALL)) { - query.apply("t.in_count = t.total_count"); - } - // 退货状态 - if (Objects.equals(reqVO.getReturnStatus(), ErpPurchaseOrderPageReqVO.RETURN_STATUS_NONE)) { - query.eq(ErpPurchaseOrderDO::getReturnCount, 0); - } else if (Objects.equals(reqVO.getReturnStatus(), ErpPurchaseOrderPageReqVO.RETURN_STATUS_PART)) { - query.gt(ErpPurchaseOrderDO::getReturnCount, 0).apply("t.return_count < t.total_count"); - } else if (Objects.equals(reqVO.getReturnStatus(), ErpPurchaseOrderPageReqVO.RETURN_STATUS_ALL)) { - query.apply("t.return_count = t.total_count"); - } - // 可采购入库 - if (Boolean.TRUE.equals(reqVO.getInEnable())) { - query.eq(ErpPurchaseOrderDO::getStatus, ErpAuditStatus.APPROVE.getStatus()) - .apply("t.in_count < t.total_count"); - } - // 可采购退货 - if (Boolean.TRUE.equals(reqVO.getReturnEnable())) { - query.eq(ErpPurchaseOrderDO::getStatus, ErpAuditStatus.APPROVE.getStatus()) - .apply("t.return_count < t.in_count"); - } - if (reqVO.getProductId() != null) { - query.leftJoin(ErpPurchaseOrderItemDO.class, ErpPurchaseOrderItemDO::getOrderId, ErpPurchaseOrderDO::getId) - .eq(reqVO.getProductId() != null, ErpPurchaseOrderItemDO::getProductId, reqVO.getProductId()) - .groupBy(ErpPurchaseOrderDO::getId); // 避免 1 对多查询,产生相同的 1 - } - return selectJoinPage(reqVO, ErpPurchaseOrderDO.class, query); - } - - default int updateByIdAndStatus(Long id, Integer status, ErpPurchaseOrderDO updateObj) { - return update(updateObj, new LambdaUpdateWrapper() - .eq(ErpPurchaseOrderDO::getId, id).eq(ErpPurchaseOrderDO::getStatus, status)); - } - - default ErpPurchaseOrderDO selectByNo(String no) { - return selectOne(ErpPurchaseOrderDO::getNo, no); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseReturnItemMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseReturnItemMapper.java deleted file mode 100644 index 2a8011900c..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseReturnItemMapper.java +++ /dev/null @@ -1,56 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.purchase; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnItemDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; - -/** - * ERP 采购退货项 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpPurchaseReturnItemMapper extends BaseMapperX { - - default List selectListByReturnId(Long returnId) { - return selectList(ErpPurchaseReturnItemDO::getReturnId, returnId); - } - - default List selectListByReturnIds(Collection returnIds) { - return selectList(ErpPurchaseReturnItemDO::getReturnId, returnIds); - } - - default int deleteByReturnId(Long returnId) { - return delete(ErpPurchaseReturnItemDO::getReturnId, returnId); - } - - /** - * 基于采购订单编号,查询每个采购订单项的退货数量之和 - * - * @param returnIds 入库订单项编号数组 - * @return key:采购订单项编号;value:退货数量之和 - */ - default Map selectOrderItemCountSumMapByReturnIds(Collection returnIds) { - if (CollUtil.isEmpty(returnIds)) { - return Collections.emptyMap(); - } - // SQL sum 查询 - List> result = selectMaps(new QueryWrapper() - .select("order_item_id, SUM(count) AS sumCount") - .groupBy("order_item_id") - .in("return_id", returnIds)); - // 获得数量 - return convertMap(result, obj -> (Long) obj.get("order_item_id"), obj -> (BigDecimal) obj.get("sumCount")); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseReturnMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseReturnMapper.java deleted file mode 100644 index 689a55dfd3..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseReturnMapper.java +++ /dev/null @@ -1,70 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.purchase; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnItemDO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; -import java.util.Objects; - -/** - * ERP 采购退货 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpPurchaseReturnMapper extends BaseMapperX { - - default PageResult selectPage(ErpPurchaseReturnPageReqVO reqVO) { - MPJLambdaWrapperX query = new MPJLambdaWrapperX() - .likeIfPresent(ErpPurchaseReturnDO::getNo, reqVO.getNo()) - .eqIfPresent(ErpPurchaseReturnDO::getSupplierId, reqVO.getSupplierId()) - .betweenIfPresent(ErpPurchaseReturnDO::getReturnTime, reqVO.getReturnTime()) - .eqIfPresent(ErpPurchaseReturnDO::getStatus, reqVO.getStatus()) - .likeIfPresent(ErpPurchaseReturnDO::getRemark, reqVO.getRemark()) - .eqIfPresent(ErpPurchaseReturnDO::getCreator, reqVO.getCreator()) - .eqIfPresent(ErpPurchaseReturnDO::getAccountId, reqVO.getAccountId()) - .likeIfPresent(ErpPurchaseReturnDO::getOrderNo, reqVO.getOrderNo()) - .orderByDesc(ErpPurchaseReturnDO::getId); - // 退款状态。为什么需要 t. 的原因,是因为联表查询时,需要指定表名,不然会报字段不存在的错误 - if (Objects.equals(reqVO.getRefundStatus(), ErpPurchaseReturnPageReqVO.REFUND_STATUS_NONE)) { - query.eq(ErpPurchaseReturnDO::getRefundPrice, 0); - } else if (Objects.equals(reqVO.getRefundStatus(), ErpPurchaseReturnPageReqVO.REFUND_STATUS_PART)) { - query.gt(ErpPurchaseReturnDO::getRefundPrice, 0).apply("t.refund_price < t.total_price"); - } else if (Objects.equals(reqVO.getRefundStatus(), ErpPurchaseReturnPageReqVO.REFUND_STATUS_ALL)) { - query.apply("t.refund_price = t.total_price"); - } - if (Boolean.TRUE.equals(reqVO.getRefundEnable())) { - query.eq(ErpPurchaseInDO::getStatus, ErpAuditStatus.APPROVE.getStatus()) - .apply("t.refund_price < t.total_price"); - } - if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) { - query.leftJoin(ErpPurchaseReturnItemDO.class, ErpPurchaseReturnItemDO::getReturnId, ErpPurchaseReturnDO::getId) - .eq(reqVO.getWarehouseId() != null, ErpPurchaseReturnItemDO::getWarehouseId, reqVO.getWarehouseId()) - .eq(reqVO.getProductId() != null, ErpPurchaseReturnItemDO::getProductId, reqVO.getProductId()) - .groupBy(ErpPurchaseReturnDO::getId); // 避免 1 对多查询,产生相同的 1 - } - return selectJoinPage(reqVO, ErpPurchaseReturnDO.class, query); - } - - default int updateByIdAndStatus(Long id, Integer status, ErpPurchaseReturnDO updateObj) { - return update(updateObj, new LambdaUpdateWrapper() - .eq(ErpPurchaseReturnDO::getId, id).eq(ErpPurchaseReturnDO::getStatus, status)); - } - - default ErpPurchaseReturnDO selectByNo(String no) { - return selectOne(ErpPurchaseReturnDO::getNo, no); - } - - default List selectListByOrderId(Long orderId) { - return selectList(ErpPurchaseReturnDO::getOrderId, orderId); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpSupplierMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpSupplierMapper.java deleted file mode 100644 index c74f1e6f80..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpSupplierMapper.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.purchase; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * ERP 供应商 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpSupplierMapper extends BaseMapperX { - - default PageResult selectPage(ErpSupplierPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(ErpSupplierDO::getName, reqVO.getName()) - .likeIfPresent(ErpSupplierDO::getMobile, reqVO.getMobile()) - .likeIfPresent(ErpSupplierDO::getTelephone, reqVO.getTelephone()) - .orderByDesc(ErpSupplierDO::getId)); - } - - default List selectListByStatus(Integer status) { - return selectList(ErpSupplierDO::getStatus, status); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpCustomerMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpCustomerMapper.java deleted file mode 100644 index 4970f9ad52..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpCustomerMapper.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.sale; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.customer.ErpCustomerPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * ERP 客户 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpCustomerMapper extends BaseMapperX { - - default PageResult selectPage(ErpCustomerPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(ErpCustomerDO::getName, reqVO.getName()) - .eqIfPresent(ErpCustomerDO::getMobile, reqVO.getMobile()) - .eqIfPresent(ErpCustomerDO::getTelephone, reqVO.getTelephone()) - .orderByDesc(ErpCustomerDO::getId)); - } - - default List selectListByStatus(Integer status) { - return selectList(ErpCustomerDO::getStatus, status); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderItemMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderItemMapper.java deleted file mode 100644 index d2825e5635..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderItemMapper.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.sale; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderItemDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Collection; -import java.util.List; - -/** - * ERP 销售订单明项目 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpSaleOrderItemMapper extends BaseMapperX { - - default List selectListByOrderId(Long orderId) { - return selectList(ErpSaleOrderItemDO::getOrderId, orderId); - } - - default List selectListByOrderIds(Collection orderIds) { - return selectList(ErpSaleOrderItemDO::getOrderId, orderIds); - } - - default int deleteByOrderId(Long orderId) { - return delete(ErpSaleOrderItemDO::getOrderId, orderId); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java deleted file mode 100644 index 8ed3b6fcd5..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java +++ /dev/null @@ -1,76 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.sale; - - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderItemDO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Objects; - -/** - * ERP 销售订单 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpSaleOrderMapper extends BaseMapperX { - - default PageResult selectPage(ErpSaleOrderPageReqVO reqVO) { - MPJLambdaWrapperX query = new MPJLambdaWrapperX() - .likeIfPresent(ErpSaleOrderDO::getNo, reqVO.getNo()) - .eqIfPresent(ErpSaleOrderDO::getCustomerId, reqVO.getCustomerId()) - .betweenIfPresent(ErpSaleOrderDO::getOrderTime, reqVO.getOrderTime()) - .eqIfPresent(ErpSaleOrderDO::getStatus, reqVO.getStatus()) - .likeIfPresent(ErpSaleOrderDO::getRemark, reqVO.getRemark()) - .eqIfPresent(ErpSaleOrderDO::getCreator, reqVO.getCreator()) - .orderByDesc(ErpSaleOrderDO::getId); - // 入库状态。为什么需要 t. 的原因,是因为联表查询时,需要指定表名,不然会报 out_count 错误 - if (Objects.equals(reqVO.getOutStatus(), ErpSaleOrderPageReqVO.OUT_STATUS_NONE)) { - query.eq(ErpSaleOrderDO::getOutCount, 0); - } else if (Objects.equals(reqVO.getOutStatus(), ErpSaleOrderPageReqVO.OUT_STATUS_PART)) { - query.gt(ErpSaleOrderDO::getOutCount, 0).apply("t.out_count < t.total_count"); - } else if (Objects.equals(reqVO.getOutStatus(), ErpSaleOrderPageReqVO.OUT_STATUS_ALL)) { - query.apply("t.out_count = t.total_count"); - } - // 退货状态 - if (Objects.equals(reqVO.getReturnStatus(), ErpSaleOrderPageReqVO.RETURN_STATUS_NONE)) { - query.eq(ErpSaleOrderDO::getReturnCount, 0); - } else if (Objects.equals(reqVO.getReturnStatus(), ErpSaleOrderPageReqVO.RETURN_STATUS_PART)) { - query.gt(ErpSaleOrderDO::getReturnCount, 0).apply("t.return_count < t.total_count"); - } else if (Objects.equals(reqVO.getReturnStatus(), ErpSaleOrderPageReqVO.RETURN_STATUS_ALL)) { - query.apply("t.return_count = t.total_count"); - } - // 可销售出库 - if (Boolean.TRUE.equals(reqVO.getOutEnable())) { - query.eq(ErpSaleOrderDO::getStatus, ErpAuditStatus.APPROVE.getStatus()) - .apply("t.out_count < t.total_count"); - } - // 可销售退货 - if (Boolean.TRUE.equals(reqVO.getReturnEnable())) { - query.eq(ErpSaleOrderDO::getStatus, ErpAuditStatus.APPROVE.getStatus()) - .apply("t.return_count < t.out_count"); - } - if (reqVO.getProductId() != null) { - query.leftJoin(ErpSaleOrderItemDO.class, ErpSaleOrderItemDO::getOrderId, ErpSaleOrderDO::getId) - .eq(reqVO.getProductId() != null, ErpSaleOrderItemDO::getProductId, reqVO.getProductId()) - .groupBy(ErpSaleOrderDO::getId); // 避免 1 对多查询,产生相同的 1 - } - return selectJoinPage(reqVO, ErpSaleOrderDO.class, query); - } - - default int updateByIdAndStatus(Long id, Integer status, ErpSaleOrderDO updateObj) { - return update(updateObj, new LambdaUpdateWrapper() - .eq(ErpSaleOrderDO::getId, id).eq(ErpSaleOrderDO::getStatus, status)); - } - - default ErpSaleOrderDO selectByNo(String no) { - return selectOne(ErpSaleOrderDO::getNo, no); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOutItemMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOutItemMapper.java deleted file mode 100644 index 9cd5dede0d..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOutItemMapper.java +++ /dev/null @@ -1,56 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.sale; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutItemDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; - -/** - * ERP 销售出库项 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpSaleOutItemMapper extends BaseMapperX { - - default List selectListByOutId(Long outId) { - return selectList(ErpSaleOutItemDO::getOutId, outId); - } - - default List selectListByOutIds(Collection outIds) { - return selectList(ErpSaleOutItemDO::getOutId, outIds); - } - - default int deleteByOutId(Long outId) { - return delete(ErpSaleOutItemDO::getOutId, outId); - } - - /** - * 基于销售订单编号,查询每个销售订单项的出库数量之和 - * - * @param outIds 出库订单项编号数组 - * @return key:销售订单项编号;value:出库数量之和 - */ - default Map selectOrderItemCountSumMapByOutIds(Collection outIds) { - if (CollUtil.isEmpty(outIds)) { - return Collections.emptyMap(); - } - // SQL sum 查询 - List> result = selectMaps(new QueryWrapper() - .select("order_item_id, SUM(count) AS sumCount") - .groupBy("order_item_id") - .in("out_id", outIds)); - // 获得数量 - return convertMap(result, obj -> (Long) obj.get("order_item_id"), obj -> (BigDecimal) obj.get("sumCount")); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOutMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOutMapper.java deleted file mode 100644 index 128913fcd2..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOutMapper.java +++ /dev/null @@ -1,70 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.sale; - - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutItemDO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; -import java.util.Objects; - -/** - * ERP 销售出库 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpSaleOutMapper extends BaseMapperX { - - default PageResult selectPage(ErpSaleOutPageReqVO reqVO) { - MPJLambdaWrapperX query = new MPJLambdaWrapperX() - .likeIfPresent(ErpSaleOutDO::getNo, reqVO.getNo()) - .eqIfPresent(ErpSaleOutDO::getCustomerId, reqVO.getCustomerId()) - .betweenIfPresent(ErpSaleOutDO::getOutTime, reqVO.getOutTime()) - .eqIfPresent(ErpSaleOutDO::getStatus, reqVO.getStatus()) - .likeIfPresent(ErpSaleOutDO::getRemark, reqVO.getRemark()) - .eqIfPresent(ErpSaleOutDO::getCreator, reqVO.getCreator()) - .eqIfPresent(ErpSaleOutDO::getAccountId, reqVO.getAccountId()) - .likeIfPresent(ErpSaleOutDO::getOrderNo, reqVO.getOrderNo()) - .orderByDesc(ErpSaleOutDO::getId); - // 收款状态。为什么需要 t. 的原因,是因为联表查询时,需要指定表名,不然会报字段不存在的错误 - if (Objects.equals(reqVO.getReceiptStatus(), ErpSaleOutPageReqVO.RECEIPT_STATUS_NONE)) { - query.eq(ErpSaleOutDO::getReceiptPrice, 0); - } else if (Objects.equals(reqVO.getReceiptStatus(), ErpSaleOutPageReqVO.RECEIPT_STATUS_PART)) { - query.gt(ErpSaleOutDO::getReceiptPrice, 0).apply("t.receipt_price < t.total_price"); - } else if (Objects.equals(reqVO.getReceiptStatus(), ErpSaleOutPageReqVO.RECEIPT_STATUS_ALL)) { - query.apply("t.receipt_price = t.total_price"); - } - if (Boolean.TRUE.equals(reqVO.getReceiptEnable())) { - query.eq(ErpSaleOutDO::getStatus, ErpAuditStatus.APPROVE.getStatus()) - .apply("t.receipt_price < t.total_price"); - } - if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) { - query.leftJoin(ErpSaleOutItemDO.class, ErpSaleOutItemDO::getOutId, ErpSaleOutDO::getId) - .eq(reqVO.getWarehouseId() != null, ErpSaleOutItemDO::getWarehouseId, reqVO.getWarehouseId()) - .eq(reqVO.getProductId() != null, ErpSaleOutItemDO::getProductId, reqVO.getProductId()) - .groupBy(ErpSaleOutDO::getId); // 避免 1 对多查询,产生相同的 1 - } - return selectJoinPage(reqVO, ErpSaleOutDO.class, query); - } - - default int updateByIdAndStatus(Long id, Integer status, ErpSaleOutDO updateObj) { - return update(updateObj, new LambdaUpdateWrapper() - .eq(ErpSaleOutDO::getId, id).eq(ErpSaleOutDO::getStatus, status)); - } - - default ErpSaleOutDO selectByNo(String no) { - return selectOne(ErpSaleOutDO::getNo, no); - } - - default List selectListByOrderId(Long orderId) { - return selectList(ErpSaleOutDO::getOrderId, orderId); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleReturnItemMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleReturnItemMapper.java deleted file mode 100644 index fdc5729643..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleReturnItemMapper.java +++ /dev/null @@ -1,56 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.sale; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnItemDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; - -/** - * ERP 销售退货项 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpSaleReturnItemMapper extends BaseMapperX { - - default List selectListByReturnId(Long returnId) { - return selectList(ErpSaleReturnItemDO::getReturnId, returnId); - } - - default List selectListByReturnIds(Collection returnIds) { - return selectList(ErpSaleReturnItemDO::getReturnId, returnIds); - } - - default int deleteByReturnId(Long returnId) { - return delete(ErpSaleReturnItemDO::getReturnId, returnId); - } - - /** - * 基于销售订单编号,查询每个销售订单项的退货数量之和 - * - * @param returnIds 出库订单项编号数组 - * @return key:销售订单项编号;value:退货数量之和 - */ - default Map selectOrderItemCountSumMapByReturnIds(Collection returnIds) { - if (CollUtil.isEmpty(returnIds)) { - return Collections.emptyMap(); - } - // SQL sum 查询 - List> result = selectMaps(new QueryWrapper() - .select("order_item_id, SUM(count) AS sumCount") - .groupBy("order_item_id") - .in("return_id", returnIds)); - // 获得数量 - return convertMap(result, obj -> (Long) obj.get("order_item_id"), obj -> (BigDecimal) obj.get("sumCount")); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleReturnMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleReturnMapper.java deleted file mode 100644 index 867b454998..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleReturnMapper.java +++ /dev/null @@ -1,71 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.sale; - - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnItemDO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; -import java.util.Objects; - -/** - * ERP 销售退货 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpSaleReturnMapper extends BaseMapperX { - - default PageResult selectPage(ErpSaleReturnPageReqVO reqVO) { - MPJLambdaWrapperX query = new MPJLambdaWrapperX() - .likeIfPresent(ErpSaleReturnDO::getNo, reqVO.getNo()) - .eqIfPresent(ErpSaleReturnDO::getCustomerId, reqVO.getCustomerId()) - .betweenIfPresent(ErpSaleReturnDO::getReturnTime, reqVO.getReturnTime()) - .eqIfPresent(ErpSaleReturnDO::getStatus, reqVO.getStatus()) - .likeIfPresent(ErpSaleReturnDO::getRemark, reqVO.getRemark()) - .eqIfPresent(ErpSaleReturnDO::getCreator, reqVO.getCreator()) - .eqIfPresent(ErpSaleReturnDO::getAccountId, reqVO.getAccountId()) - .likeIfPresent(ErpSaleReturnDO::getOrderNo, reqVO.getOrderNo()) - .orderByDesc(ErpSaleReturnDO::getId); - // 退款状态。为什么需要 t. 的原因,是因为联表查询时,需要指定表名,不然会报字段不存在的错误 - if (Objects.equals(reqVO.getRefundStatus(), ErpSaleReturnPageReqVO.REFUND_STATUS_NONE)) { - query.eq(ErpSaleReturnDO::getRefundPrice, 0); - } else if (Objects.equals(reqVO.getRefundStatus(), ErpSaleReturnPageReqVO.REFUND_STATUS_PART)) { - query.gt(ErpSaleReturnDO::getRefundPrice, 0).apply("t.refund_price < t.total_price"); - } else if (Objects.equals(reqVO.getRefundStatus(), ErpSaleReturnPageReqVO.REFUND_STATUS_ALL)) { - query.apply("t.refund_price = t.total_price"); - } - if (Boolean.TRUE.equals(reqVO.getRefundEnable())) { - query.eq(ErpSaleOutDO::getStatus, ErpAuditStatus.APPROVE.getStatus()) - .apply("t.refund_price < t.total_price"); - } - if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) { - query.leftJoin(ErpSaleReturnItemDO.class, ErpSaleReturnItemDO::getReturnId, ErpSaleReturnDO::getId) - .eq(reqVO.getWarehouseId() != null, ErpSaleReturnItemDO::getWarehouseId, reqVO.getWarehouseId()) - .eq(reqVO.getProductId() != null, ErpSaleReturnItemDO::getProductId, reqVO.getProductId()) - .groupBy(ErpSaleReturnDO::getId); // 避免 1 对多查询,产生相同的 1 - } - return selectJoinPage(reqVO, ErpSaleReturnDO.class, query); - } - - default int updateByIdAndStatus(Long id, Integer status, ErpSaleReturnDO updateObj) { - return update(updateObj, new LambdaUpdateWrapper() - .eq(ErpSaleReturnDO::getId, id).eq(ErpSaleReturnDO::getStatus, status)); - } - - default ErpSaleReturnDO selectByNo(String no) { - return selectOne(ErpSaleReturnDO::getNo, no); - } - - default List selectListByOrderId(Long orderId) { - return selectList(ErpSaleReturnDO::getOrderId, orderId); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckItemMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckItemMapper.java deleted file mode 100644 index ae13f9f96d..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckItemMapper.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.stock; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckItemDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Collection; -import java.util.List; - -/** - * ERP 库存盘点单项 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpStockCheckItemMapper extends BaseMapperX { - - default List selectListByCheckId(Long checkId) { - return selectList(ErpStockCheckItemDO::getCheckId, checkId); - } - - default List selectListByCheckIds(Collection checkIds) { - return selectList(ErpStockCheckItemDO::getCheckId, checkIds); - } - - default int deleteByCheckId(Long checkId) { - return delete(ErpStockCheckItemDO::getCheckId, checkId); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckMapper.java deleted file mode 100644 index dd976df3db..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckMapper.java +++ /dev/null @@ -1,46 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckItemDO; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * ERP 库存调拨单 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpStockCheckMapper extends BaseMapperX { - - default PageResult selectPage(ErpStockCheckPageReqVO reqVO) { - MPJLambdaWrapperX query = new MPJLambdaWrapperX() - .likeIfPresent(ErpStockCheckDO::getNo, reqVO.getNo()) - .betweenIfPresent(ErpStockCheckDO::getCheckTime, reqVO.getCheckTime()) - .eqIfPresent(ErpStockCheckDO::getStatus, reqVO.getStatus()) - .likeIfPresent(ErpStockCheckDO::getRemark, reqVO.getRemark()) - .eqIfPresent(ErpStockCheckDO::getCreator, reqVO.getCreator()) - .orderByDesc(ErpStockCheckDO::getId); - if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) { - query.leftJoin(ErpStockCheckItemDO.class, ErpStockCheckItemDO::getCheckId, ErpStockCheckDO::getId) - .eq(reqVO.getWarehouseId() != null, ErpStockCheckItemDO::getWarehouseId, reqVO.getWarehouseId()) - .eq(reqVO.getProductId() != null, ErpStockCheckItemDO::getProductId, reqVO.getProductId()) - .groupBy(ErpStockCheckDO::getId); // 避免 1 对多查询,产生相同的 1 - } - return selectJoinPage(reqVO, ErpStockCheckDO.class, query); - } - - default int updateByIdAndStatus(Long id, Integer status, ErpStockCheckDO updateObj) { - return update(updateObj, new LambdaUpdateWrapper() - .eq(ErpStockCheckDO::getId, id).eq(ErpStockCheckDO::getStatus, status)); - } - - default ErpStockCheckDO selectByNo(String no) { - return selectOne(ErpStockCheckDO::getNo, no); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInItemMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInItemMapper.java deleted file mode 100644 index 2731aa7bbb..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInItemMapper.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.stock; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Collection; -import java.util.List; - -/** - * ERP 其它入库单项 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpStockInItemMapper extends BaseMapperX { - - default List selectListByInId(Long inId) { - return selectList(ErpStockInItemDO::getInId, inId); - } - - default List selectListByInIds(Collection inIds) { - return selectList(ErpStockInItemDO::getInId, inIds); - } - - default int deleteByInId(Long inId) { - return delete(ErpStockInItemDO::getInId, inId); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java deleted file mode 100644 index e815583aca..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java +++ /dev/null @@ -1,47 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * ERP 其它入库单 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpStockInMapper extends BaseMapperX { - - default PageResult selectPage(ErpStockInPageReqVO reqVO) { - MPJLambdaWrapperX query = new MPJLambdaWrapperX() - .likeIfPresent(ErpStockInDO::getNo, reqVO.getNo()) - .eqIfPresent(ErpStockInDO::getSupplierId, reqVO.getSupplierId()) - .betweenIfPresent(ErpStockInDO::getInTime, reqVO.getInTime()) - .eqIfPresent(ErpStockInDO::getStatus, reqVO.getStatus()) - .likeIfPresent(ErpStockInDO::getRemark, reqVO.getRemark()) - .eqIfPresent(ErpStockInDO::getCreator, reqVO.getCreator()) - .orderByDesc(ErpStockInDO::getId); - if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) { - query.leftJoin(ErpStockInItemDO.class, ErpStockInItemDO::getInId, ErpStockInDO::getId) - .eq(reqVO.getWarehouseId() != null, ErpStockInItemDO::getWarehouseId, reqVO.getWarehouseId()) - .eq(reqVO.getProductId() != null, ErpStockInItemDO::getProductId, reqVO.getProductId()) - .groupBy(ErpStockInDO::getId); // 避免 1 对多查询,产生相同的 1 - } - return selectJoinPage(reqVO, ErpStockInDO.class, query); - } - - default int updateByIdAndStatus(Long id, Integer status, ErpStockInDO updateObj) { - return update(updateObj, new LambdaUpdateWrapper() - .eq(ErpStockInDO::getId, id).eq(ErpStockInDO::getStatus, status)); - } - - default ErpStockInDO selectByNo(String no) { - return selectOne(ErpStockInDO::getNo, no); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java deleted file mode 100644 index 0ebc985979..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java +++ /dev/null @@ -1,64 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.stock; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.map.MapUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock.ErpStockPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -/** - * ERP 产品库存 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpStockMapper extends BaseMapperX { - - default PageResult selectPage(ErpStockPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(ErpStockDO::getProductId, reqVO.getProductId()) - .eqIfPresent(ErpStockDO::getWarehouseId, reqVO.getWarehouseId()) - .orderByDesc(ErpStockDO::getId)); - } - - default ErpStockDO selectByProductIdAndWarehouseId(Long productId, Long warehouseId) { - return selectOne(ErpStockDO::getProductId, productId, - ErpStockDO::getWarehouseId, warehouseId); - } - - default int updateCountIncrement(Long id, BigDecimal count, boolean negativeEnable) { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() - .eq(ErpStockDO::getId, id); - if (count.compareTo(BigDecimal.ZERO) > 0) { - updateWrapper.setSql("count = count + " + count); - } else if (count.compareTo(BigDecimal.ZERO) < 0) { - if (!negativeEnable) { - updateWrapper.ge(ErpStockDO::getCount, count.abs()); - } - updateWrapper.setSql("count = count - " + count.abs()); - } - return update(null, updateWrapper); - } - - default BigDecimal selectSumByProductId(Long productId) { - // SQL sum 查询 - List> result = selectMaps(new QueryWrapper() - .select("SUM(count) AS sumCount") - .eq("product_id", productId)); - // 获得数量 - if (CollUtil.isEmpty(result)) { - return BigDecimal.ZERO; - } - return BigDecimal.valueOf(MapUtil.getDouble(result.get(0), "sumCount", 0D)); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveItemMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveItemMapper.java deleted file mode 100644 index 21a267029d..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveItemMapper.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.stock; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveItemDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Collection; -import java.util.List; - -/** - * ERP 库存调拨单项 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpStockMoveItemMapper extends BaseMapperX { - - default List selectListByMoveId(Long moveId) { - return selectList(ErpStockMoveItemDO::getMoveId, moveId); - } - - default List selectListByMoveIds(Collection moveIds) { - return selectList(ErpStockMoveItemDO::getMoveId, moveIds); - } - - default int deleteByMoveId(Long moveId) { - return delete(ErpStockMoveItemDO::getMoveId, moveId); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveMapper.java deleted file mode 100644 index 9a8ce0b64d..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveMapper.java +++ /dev/null @@ -1,46 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMovePageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveItemDO; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * ERP 库存调拨单 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpStockMoveMapper extends BaseMapperX { - - default PageResult selectPage(ErpStockMovePageReqVO reqVO) { - MPJLambdaWrapperX query = new MPJLambdaWrapperX() - .likeIfPresent(ErpStockMoveDO::getNo, reqVO.getNo()) - .betweenIfPresent(ErpStockMoveDO::getMoveTime, reqVO.getMoveTime()) - .eqIfPresent(ErpStockMoveDO::getStatus, reqVO.getStatus()) - .likeIfPresent(ErpStockMoveDO::getRemark, reqVO.getRemark()) - .eqIfPresent(ErpStockMoveDO::getCreator, reqVO.getCreator()) - .orderByDesc(ErpStockMoveDO::getId); - if (reqVO.getFromWarehouseId() != null || reqVO.getProductId() != null) { - query.leftJoin(ErpStockMoveItemDO.class, ErpStockMoveItemDO::getMoveId, ErpStockMoveDO::getId) - .eq(reqVO.getFromWarehouseId() != null, ErpStockMoveItemDO::getFromWarehouseId, reqVO.getFromWarehouseId()) - .eq(reqVO.getProductId() != null, ErpStockMoveItemDO::getProductId, reqVO.getProductId()) - .groupBy(ErpStockMoveDO::getId); // 避免 1 对多查询,产生相同的 1 - } - return selectJoinPage(reqVO, ErpStockMoveDO.class, query); - } - - default int updateByIdAndStatus(Long id, Integer status, ErpStockMoveDO updateObj) { - return update(updateObj, new LambdaUpdateWrapper() - .eq(ErpStockMoveDO::getId, id).eq(ErpStockMoveDO::getStatus, status)); - } - - default ErpStockMoveDO selectByNo(String no) { - return selectOne(ErpStockMoveDO::getNo, no); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemMapper.java deleted file mode 100644 index 3b27cd3dc4..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemMapper.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.stock; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Collection; -import java.util.List; - -/** - * ERP 其它出库单项 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpStockOutItemMapper extends BaseMapperX { - - default List selectListByOutId(Long outId) { - return selectList(ErpStockOutItemDO::getOutId, outId); - } - - default List selectListByOutIds(Collection outIds) { - return selectList(ErpStockOutItemDO::getOutId, outIds); - } - - default int deleteByOutId(Long outId) { - return delete(ErpStockOutItemDO::getOutId, outId); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java deleted file mode 100644 index a73dd3ccff..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java +++ /dev/null @@ -1,47 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * ERP 其它出库单 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpStockOutMapper extends BaseMapperX { - - default PageResult selectPage(ErpStockOutPageReqVO reqVO) { - MPJLambdaWrapperX query = new MPJLambdaWrapperX() - .likeIfPresent(ErpStockOutDO::getNo, reqVO.getNo()) - .eqIfPresent(ErpStockOutDO::getCustomerId, reqVO.getCustomerId()) - .betweenIfPresent(ErpStockOutDO::getOutTime, reqVO.getOutTime()) - .eqIfPresent(ErpStockOutDO::getStatus, reqVO.getStatus()) - .likeIfPresent(ErpStockOutDO::getRemark, reqVO.getRemark()) - .eqIfPresent(ErpStockOutDO::getCreator, reqVO.getCreator()) - .orderByDesc(ErpStockOutDO::getId); - if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) { - query.leftJoin(ErpStockOutItemDO.class, ErpStockOutItemDO::getOutId, ErpStockOutDO::getId) - .eq(reqVO.getWarehouseId() != null, ErpStockOutItemDO::getWarehouseId, reqVO.getWarehouseId()) - .eq(reqVO.getProductId() != null, ErpStockOutItemDO::getProductId, reqVO.getProductId()) - .groupBy(ErpStockOutDO::getId); // 避免 1 对多查询,产生相同的 1 - } - return selectJoinPage(reqVO, ErpStockOutDO.class, query); - } - - default int updateByIdAndStatus(Long id, Integer status, ErpStockOutDO updateObj) { - return update(updateObj, new LambdaUpdateWrapper() - .eq(ErpStockOutDO::getId, id).eq(ErpStockOutDO::getStatus, status)); - } - - default ErpStockOutDO selectByNo(String no) { - return selectOne(ErpStockOutDO::getNo, no); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockRecordMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockRecordMapper.java deleted file mode 100644 index bfd8b6751a..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockRecordMapper.java +++ /dev/null @@ -1,28 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockRecordDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * ERP 产品库存明细 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpStockRecordMapper extends BaseMapperX { - - default PageResult selectPage(ErpStockRecordPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(ErpStockRecordDO::getProductId, reqVO.getProductId()) - .eqIfPresent(ErpStockRecordDO::getWarehouseId, reqVO.getWarehouseId()) - .eqIfPresent(ErpStockRecordDO::getBizType, reqVO.getBizType()) - .likeIfPresent(ErpStockRecordDO::getBizNo, reqVO.getBizNo()) - .betweenIfPresent(ErpStockRecordDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(ErpStockRecordDO::getId)); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpWarehouseMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpWarehouseMapper.java deleted file mode 100644 index 0442011f21..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpWarehouseMapper.java +++ /dev/null @@ -1,35 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.mysql.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehousePageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * ERP 仓库 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ErpWarehouseMapper extends BaseMapperX { - - default PageResult selectPage(ErpWarehousePageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(ErpWarehouseDO::getName, reqVO.getName()) - .eqIfPresent(ErpWarehouseDO::getStatus, reqVO.getStatus()) - .orderByDesc(ErpWarehouseDO::getId)); - } - - default ErpWarehouseDO selectByDefaultStatus() { - return selectOne(ErpWarehouseDO::getDefaultStatus, true); - } - - default List selectListByStatus(Integer status) { - return selectList(ErpWarehouseDO::getStatus, status); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/RedisKeyConstants.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/RedisKeyConstants.java deleted file mode 100644 index f0ba46807c..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/RedisKeyConstants.java +++ /dev/null @@ -1,18 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.redis; - -/** - * ERP Redis Key 枚举类 - * - * @author 芋道源码 - */ -public interface RedisKeyConstants { - - /** - * 序号的缓存 - * - * KEY 格式:trade_no:{prefix} - * VALUE 数据格式:编号自增 - */ - String NO = "seq_no:"; - -} diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/no/ErpNoRedisDAO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/no/ErpNoRedisDAO.java deleted file mode 100644 index 98fb8e8ffb..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/no/ErpNoRedisDAO.java +++ /dev/null @@ -1,96 +0,0 @@ -package cn.iocoder.yudao.module.erp.dal.redis.no; - -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateUtil; -import cn.iocoder.yudao.module.erp.dal.redis.RedisKeyConstants; -import jakarta.annotation.Resource; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Repository; - -import java.time.Duration; -import java.time.LocalDateTime; - - -/** - * 订单序号的 Redis DAO - * - * @author HUIHUI - */ -@Repository -public class ErpNoRedisDAO { - - /** - * 其它入库 {@link cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO} - */ - public static final String STOCK_IN_NO_PREFIX = "QTRK"; - /** - * 其它出库 {@link cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO} - */ - public static final String STOCK_OUT_NO_PREFIX = "QCKD"; - - /** - * 库存调拨 {@link cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveDO} - */ - public static final String STOCK_MOVE_NO_PREFIX = "QCDB"; - - /** - * 库存盘点 {@link cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckDO} - */ - public static final String STOCK_CHECK_NO_PREFIX = "QCPD"; - - /** - * 销售订单 {@link cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO} - */ - public static final String SALE_ORDER_NO_PREFIX = "XSDD"; - /** - * 销售出库 {@link cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO} - */ - public static final String SALE_OUT_NO_PREFIX = "XSCK"; - /** - * 销售退货 {@link cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnDO} - */ - public static final String SALE_RETURN_NO_PREFIX = "XSTH"; - - /** - * 采购订单 {@link cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO} - */ - public static final String PURCHASE_ORDER_NO_PREFIX = "CGDD"; - /** - * 采购入库 {@link cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO} - */ - public static final String PURCHASE_IN_NO_PREFIX = "CGRK"; - /** - * 采购退货 {@link cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO} - */ - public static final String PURCHASE_RETURN_NO_PREFIX = "CGTH"; - - /** - * 付款单 {@link cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentDO} - */ - public static final String FINANCE_PAYMENT_NO_PREFIX = "FKD"; - /** - * 收款单 {@link cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptDO} - */ - public static final String FINANCE_RECEIPT_NO_PREFIX = "SKD"; - - @Resource - private StringRedisTemplate stringRedisTemplate; - - /** - * 生成序号,使用当前日期,格式为 {PREFIX} + yyyyMMdd + 6 位自增 - * 例如说:QTRK 202109 000001 (没有中间空格) - * - * @param prefix 前缀 - * @return 序号 - */ - public String generate(String prefix) { - // 递增序号 - String noPrefix = prefix + DateUtil.format(LocalDateTime.now(), DatePattern.PURE_DATE_PATTERN); - String key = RedisKeyConstants.NO + noPrefix; - Long no = stringRedisTemplate.opsForValue().increment(key); - // 设置过期时间 - stringRedisTemplate.expire(key, Duration.ofDays(1L)); - return noPrefix + String.format("%06d", no); - } - -} diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/package-info.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/package-info.java deleted file mode 100644 index af7bc123ca..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * 属于 erp 模块的 framework 封装 - * - * @author 芋道源码 - */ -package cn.iocoder.yudao.module.erp.framework; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/web/config/ErpWebConfiguration.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/web/config/ErpWebConfiguration.java deleted file mode 100644 index 4a2bc7fa37..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/web/config/ErpWebConfiguration.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.yudao.module.erp.framework.web.config; - -import cn.iocoder.yudao.framework.swagger.config.YudaoSwaggerAutoConfiguration; -import org.springdoc.core.models.GroupedOpenApi; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * erp 模块的 web 组件的 Configuration - * - * @author 芋道源码 - */ -@Configuration(proxyBeanMethods = false) -public class ErpWebConfiguration { - - /** - * erp 模块的 API 分组 - */ - @Bean - public GroupedOpenApi erpGroupedOpenApi() { - return YudaoSwaggerAutoConfiguration.buildGroupedOpenApi("erp"); - } - -} diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/web/package-info.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/web/package-info.java deleted file mode 100644 index 70f70c035c..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/web/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * trade 模块的 web 配置 - */ -package cn.iocoder.yudao.module.erp.framework.web; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/package-info.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/package-info.java deleted file mode 100644 index 2608a98895..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/package-info.java +++ /dev/null @@ -1,10 +0,0 @@ -/** - * erp 包下,企业资源管理(Enterprise Resource Planning)。 - * 例如说:采购、销售、库存、财务、产品等等 - * - * 1. Controller URL:以 /erp/ 开头,避免和其它 Module 冲突 - * 2. DataObject 表名:以 erp_ 开头,方便在数据库中区分 - * - * 注意,由于 Erp 模块下,容易和其它模块重名,所以类名都加载 Erp 的前缀~ - */ -package cn.iocoder.yudao.module.erp; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpAccountService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpAccountService.java deleted file mode 100644 index 502423fb29..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpAccountService.java +++ /dev/null @@ -1,102 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.finance; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.account.ErpAccountPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.account.ErpAccountSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; - -/** - * ERP 结算账户 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpAccountService { - - /** - * 创建结算账户 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createAccount(@Valid ErpAccountSaveReqVO createReqVO); - - /** - * 更新ERP 结算账户 - * - * @param updateReqVO 更新信息 - */ - void updateAccount(@Valid ErpAccountSaveReqVO updateReqVO); - - /** - * 更新结算账户默认状态 - * - * @param id 编号 - * @param defaultStatus 默认状态 - */ - void updateAccountDefaultStatus(Long id, Boolean defaultStatus); - - /** - * 删除结算账户 - * - * @param id 编号 - */ - void deleteAccount(Long id); - - /** - * 获得结算账户 - * - * @param id 编号 - * @return 结算账户 - */ - ErpAccountDO getAccount(Long id); - - /** - * 校验结算账户 - * - * @param id 编号 - * @return 结算账户 - */ - ErpAccountDO validateAccount(Long id); - - /** - * 获得指定状态的结算账户列表 - * - * @param status 状态 - * @return 结算账户 - */ - List getAccountListByStatus(Integer status); - - /** - * 获得结算账户列表 - * - * @param ids 编号数组 - * @return 结算账户列表 - */ - List getAccountList(Collection ids); - - /** - * 获得结算账户 Map - * - * @param ids 编号数组 - * @return 结算账户 Map - */ - default Map getAccountMap(Collection ids) { - return convertMap(getAccountList(ids), ErpAccountDO::getId); - } - - /** - * 获得结算账户分页 - * - * @param pageReqVO 分页查询 - * @return 结算账户分页 - */ - PageResult getAccountPage(ErpAccountPageReqVO pageReqVO); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpAccountServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpAccountServiceImpl.java deleted file mode 100644 index 9a8e858288..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpAccountServiceImpl.java +++ /dev/null @@ -1,112 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.finance; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.account.ErpAccountPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.account.ErpAccountSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO; -import cn.iocoder.yudao.module.erp.dal.mysql.finance.ErpAccountMapper; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import java.util.Collection; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -/** - * ERP 结算账户 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpAccountServiceImpl implements ErpAccountService { - - @Resource - private ErpAccountMapper accountMapper; - - @Override - public Long createAccount(ErpAccountSaveReqVO createReqVO) { - // 插入 - ErpAccountDO account = BeanUtils.toBean(createReqVO, ErpAccountDO.class); - accountMapper.insert(account); - // 返回 - return account.getId(); - } - - @Override - public void updateAccount(ErpAccountSaveReqVO updateReqVO) { - // 校验存在 - validateAccountExists(updateReqVO.getId()); - // 更新 - ErpAccountDO updateObj = BeanUtils.toBean(updateReqVO, ErpAccountDO.class); - accountMapper.updateById(updateObj); - } - - @Override - public void updateAccountDefaultStatus(Long id, Boolean defaultStatus) { - // 1. 校验存在 - validateAccountExists(id); - - // 2.1 如果开启,则需要关闭所有其它的默认 - if (defaultStatus) { - ErpAccountDO account = accountMapper.selectByDefaultStatus(); - if (account != null) { - accountMapper.updateById(new ErpAccountDO().setId(account.getId()).setDefaultStatus(false)); - } - } - // 2.2 更新对应的默认状态 - accountMapper.updateById(new ErpAccountDO().setId(id).setDefaultStatus(defaultStatus)); - } - - @Override - public void deleteAccount(Long id) { - // 校验存在 - validateAccountExists(id); - // 删除 - accountMapper.deleteById(id); - } - - private void validateAccountExists(Long id) { - if (accountMapper.selectById(id) == null) { - throw exception(ACCOUNT_NOT_EXISTS); - } - } - - @Override - public ErpAccountDO getAccount(Long id) { - return accountMapper.selectById(id); - } - - @Override - public ErpAccountDO validateAccount(Long id) { - ErpAccountDO account = accountMapper.selectById(id); - if (account == null) { - throw exception(ACCOUNT_NOT_EXISTS); - } - if (CommonStatusEnum.isDisable(account.getStatus())) { - throw exception(ACCOUNT_NOT_ENABLE, account.getName()); - } - return account; - } - - @Override - public List getAccountListByStatus(Integer status) { - return accountMapper.selectListByStatus(status); - } - - @Override - public List getAccountList(Collection ids) { - return accountMapper.selectBatchIds(ids); - } - - @Override - public PageResult getAccountPage(ErpAccountPageReqVO pageReqVO) { - return accountMapper.selectPage(pageReqVO); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentService.java deleted file mode 100644 index b2f27917de..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentService.java +++ /dev/null @@ -1,84 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.finance; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment.ErpFinancePaymentPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment.ErpFinancePaymentSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentItemDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; - -/** - * ERP 付款单 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpFinancePaymentService { - - /** - * 创建付款单 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createFinancePayment(@Valid ErpFinancePaymentSaveReqVO createReqVO); - - /** - * 更新付款单 - * - * @param updateReqVO 更新信息 - */ - void updateFinancePayment(@Valid ErpFinancePaymentSaveReqVO updateReqVO); - - /** - * 更新付款单的状态 - * - * @param id 编号 - * @param status 状态 - */ - void updateFinancePaymentStatus(Long id, Integer status); - - /** - * 删除付款单 - * - * @param ids 编号数组 - */ - void deleteFinancePayment(List ids); - - /** - * 获得付款单 - * - * @param id 编号 - * @return 付款单 - */ - ErpFinancePaymentDO getFinancePayment(Long id); - - /** - * 获得付款单分页 - * - * @param pageReqVO 分页查询 - * @return 付款单分页 - */ - PageResult getFinancePaymentPage(ErpFinancePaymentPageReqVO pageReqVO); - - // ==================== 付款单项 ==================== - - /** - * 获得付款单项列表 - * - * @param paymentId 付款单编号 - * @return 付款单项列表 - */ - List getFinancePaymentItemListByPaymentId(Long paymentId); - - /** - * 获得付款单项 List - * - * @param paymentIds 付款单编号数组 - * @return 付款单项 List - */ - List getFinancePaymentItemListByPaymentIds(Collection paymentIds); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentServiceImpl.java deleted file mode 100644 index ab94dad538..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentServiceImpl.java +++ /dev/null @@ -1,273 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.finance; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.lang.Assert; -import cn.hutool.core.util.ObjectUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment.ErpFinancePaymentPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment.ErpFinancePaymentSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentItemDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO; -import cn.iocoder.yudao.module.erp.dal.mysql.finance.ErpFinancePaymentItemMapper; -import cn.iocoder.yudao.module.erp.dal.mysql.finance.ErpFinancePaymentMapper; -import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import cn.iocoder.yudao.module.erp.enums.common.ErpBizTypeEnum; -import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseInService; -import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseReturnService; -import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -// TODO 芋艿:记录操作日志 - -/** - * ERP 付款单 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpFinancePaymentServiceImpl implements ErpFinancePaymentService { - - @Resource - private ErpFinancePaymentMapper financePaymentMapper; - @Resource - private ErpFinancePaymentItemMapper financePaymentItemMapper; - - @Resource - private ErpNoRedisDAO noRedisDAO; - - @Resource - private ErpSupplierService supplierService; - @Resource - private ErpAccountService accountService; - @Resource - private ErpPurchaseInService purchaseInService; - @Resource - private ErpPurchaseReturnService purchaseReturnService; - - @Resource - private AdminUserApi adminUserApi; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createFinancePayment(ErpFinancePaymentSaveReqVO createReqVO) { - // 1.1 校验订单项的有效性 - List paymentItems = validateFinancePaymentItems( - createReqVO.getSupplierId(), createReqVO.getItems()); - // 1.2 校验供应商 - supplierService.validateSupplier(createReqVO.getSupplierId()); - // 1.3 校验结算账户 - if (createReqVO.getAccountId() != null) { - accountService.validateAccount(createReqVO.getAccountId()); - } - // 1.4 校验财务人员 - if (createReqVO.getFinanceUserId() != null) { - adminUserApi.validateUser(createReqVO.getFinanceUserId()); - } - // 1.5 生成付款单号,并校验唯一性 - String no = noRedisDAO.generate(ErpNoRedisDAO.FINANCE_PAYMENT_NO_PREFIX); - if (financePaymentMapper.selectByNo(no) != null) { - throw exception(FINANCE_PAYMENT_NO_EXISTS); - } - - // 2.1 插入付款单 - ErpFinancePaymentDO payment = BeanUtils.toBean(createReqVO, ErpFinancePaymentDO.class, in -> in - .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus())); - calculateTotalPrice(payment, paymentItems); - financePaymentMapper.insert(payment); - // 2.2 插入付款单项 - paymentItems.forEach(o -> o.setPaymentId(payment.getId())); - financePaymentItemMapper.insertBatch(paymentItems); - - // 3. 更新采购入库、退货的付款金额情况 - updatePurchasePrice(paymentItems); - return payment.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateFinancePayment(ErpFinancePaymentSaveReqVO updateReqVO) { - // 1.1 校验存在 - ErpFinancePaymentDO payment = validateFinancePaymentExists(updateReqVO.getId()); - if (ErpAuditStatus.APPROVE.getStatus().equals(payment.getStatus())) { - throw exception(FINANCE_PAYMENT_UPDATE_FAIL_APPROVE, payment.getNo()); - } - // 1.2 校验供应商 - supplierService.validateSupplier(updateReqVO.getSupplierId()); - // 1.3 校验结算账户 - if (updateReqVO.getAccountId() != null) { - accountService.validateAccount(updateReqVO.getAccountId()); - } - // 1.4 校验财务人员 - if (updateReqVO.getFinanceUserId() != null) { - adminUserApi.validateUser(updateReqVO.getFinanceUserId()); - } - // 1.5 校验付款单项的有效性 - List paymentItems = validateFinancePaymentItems( - updateReqVO.getSupplierId(), updateReqVO.getItems()); - - // 2.1 更新付款单 - ErpFinancePaymentDO updateObj = BeanUtils.toBean(updateReqVO, ErpFinancePaymentDO.class); - calculateTotalPrice(updateObj, paymentItems); - financePaymentMapper.updateById(updateObj); - // 2.2 更新付款单项 - updateFinancePaymentItemList(updateReqVO.getId(), paymentItems); - } - - private void calculateTotalPrice(ErpFinancePaymentDO payment, List paymentItems) { - payment.setTotalPrice(getSumValue(paymentItems, ErpFinancePaymentItemDO::getPaymentPrice, BigDecimal::add, BigDecimal.ZERO)); - payment.setPaymentPrice(payment.getTotalPrice().subtract(payment.getDiscountPrice())); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateFinancePaymentStatus(Long id, Integer status) { - boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status); - // 1.1 校验存在 - ErpFinancePaymentDO payment = validateFinancePaymentExists(id); - // 1.2 校验状态 - if (payment.getStatus().equals(status)) { - throw exception(approve ? FINANCE_PAYMENT_APPROVE_FAIL : FINANCE_PAYMENT_PROCESS_FAIL); - } - - // 2. 更新状态 - int updateCount = financePaymentMapper.updateByIdAndStatus(id, payment.getStatus(), - new ErpFinancePaymentDO().setStatus(status)); - if (updateCount == 0) { - throw exception(approve ? FINANCE_PAYMENT_APPROVE_FAIL : FINANCE_PAYMENT_PROCESS_FAIL); - } - } - - private List validateFinancePaymentItems( - Long supplierId, - List list) { - return convertList(list, o -> BeanUtils.toBean(o, ErpFinancePaymentItemDO.class, item -> { - if (ObjectUtil.equal(item.getBizType(), ErpBizTypeEnum.PURCHASE_IN.getType())) { - ErpPurchaseInDO purchaseIn = purchaseInService.validatePurchaseIn(item.getBizId()); - Assert.equals(purchaseIn.getSupplierId(), supplierId, "供应商必须相同"); - item.setTotalPrice(purchaseIn.getTotalPrice()).setBizNo(purchaseIn.getNo()); - } else if (ObjectUtil.equal(item.getBizType(), ErpBizTypeEnum.PURCHASE_RETURN.getType())) { - ErpPurchaseReturnDO purchaseReturn = purchaseReturnService.validatePurchaseReturn(item.getBizId()); - Assert.equals(purchaseReturn.getSupplierId(), supplierId, "供应商必须相同"); - item.setTotalPrice(purchaseReturn.getTotalPrice().negate()).setBizNo(purchaseReturn.getNo()); - } else { - throw new IllegalArgumentException("业务类型不正确:" + item.getBizType()); - } - })); - } - - private void updateFinancePaymentItemList(Long id, List newList) { - // 第一步,对比新老数据,获得添加、修改、删除的列表 - List oldList = financePaymentItemMapper.selectListByPaymentId(id); - List> diffList = diffList(oldList, newList, // id 不同,就认为是不同的记录 - (oldVal, newVal) -> oldVal.getId().equals(newVal.getId())); - - // 第二步,批量添加、修改、删除 - if (CollUtil.isNotEmpty(diffList.get(0))) { - diffList.get(0).forEach(o -> o.setPaymentId(id)); - financePaymentItemMapper.insertBatch(diffList.get(0)); - } - if (CollUtil.isNotEmpty(diffList.get(1))) { - financePaymentItemMapper.updateBatch(diffList.get(1)); - } - if (CollUtil.isNotEmpty(diffList.get(2))) { - financePaymentItemMapper.deleteBatchIds(convertList(diffList.get(2), ErpFinancePaymentItemDO::getId)); - } - - // 第三步,更新采购入库、退货的付款金额情况 - updatePurchasePrice(CollectionUtils.newArrayList(diffList)); - } - - private void updatePurchasePrice(List paymentItems) { - paymentItems.forEach(paymentItem -> { - BigDecimal totalPaymentPrice = financePaymentItemMapper.selectPaymentPriceSumByBizIdAndBizType( - paymentItem.getBizId(), paymentItem.getBizType()); - if (ErpBizTypeEnum.PURCHASE_IN.getType().equals(paymentItem.getBizType())) { - purchaseInService.updatePurchaseInPaymentPrice(paymentItem.getBizId(), totalPaymentPrice); - } else if (ErpBizTypeEnum.PURCHASE_RETURN.getType().equals(paymentItem.getBizType())) { - purchaseReturnService.updatePurchaseReturnRefundPrice(paymentItem.getBizId(), totalPaymentPrice.negate()); - } else { - throw new IllegalArgumentException("业务类型不正确:" + paymentItem.getBizType()); - } - }); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteFinancePayment(List ids) { - // 1. 校验不处于已审批 - List payments = financePaymentMapper.selectBatchIds(ids); - if (CollUtil.isEmpty(payments)) { - return; - } - payments.forEach(payment -> { - if (ErpAuditStatus.APPROVE.getStatus().equals(payment.getStatus())) { - throw exception(FINANCE_PAYMENT_DELETE_FAIL_APPROVE, payment.getNo()); - } - }); - - // 2. 遍历删除,并记录操作日志 - payments.forEach(payment -> { - // 2.1 删除付款单 - financePaymentMapper.deleteById(payment.getId()); - // 2.2 删除付款单项 - List paymentItems = financePaymentItemMapper.selectListByPaymentId(payment.getId()); - financePaymentItemMapper.deleteBatchIds(convertSet(paymentItems, ErpFinancePaymentItemDO::getId)); - - // 2.3 更新采购入库、退货的付款金额情况 - updatePurchasePrice(paymentItems); - }); - } - - private ErpFinancePaymentDO validateFinancePaymentExists(Long id) { - ErpFinancePaymentDO payment = financePaymentMapper.selectById(id); - if (payment == null) { - throw exception(FINANCE_PAYMENT_NOT_EXISTS); - } - return payment; - } - - @Override - public ErpFinancePaymentDO getFinancePayment(Long id) { - return financePaymentMapper.selectById(id); - } - - @Override - public PageResult getFinancePaymentPage(ErpFinancePaymentPageReqVO pageReqVO) { - return financePaymentMapper.selectPage(pageReqVO); - } - - // ==================== 付款单项 ==================== - - @Override - public List getFinancePaymentItemListByPaymentId(Long paymentId) { - return financePaymentItemMapper.selectListByPaymentId(paymentId); - } - - @Override - public List getFinancePaymentItemListByPaymentIds(Collection paymentIds) { - if (CollUtil.isEmpty(paymentIds)) { - return Collections.emptyList(); - } - return financePaymentItemMapper.selectListByPaymentIds(paymentIds); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptService.java deleted file mode 100644 index 1796481952..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptService.java +++ /dev/null @@ -1,84 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.finance; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.receipt.ErpFinanceReceiptPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.receipt.ErpFinanceReceiptSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptItemDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; - -/** - * ERP 收款单 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpFinanceReceiptService { - - /** - * 创建收款单 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createFinanceReceipt(@Valid ErpFinanceReceiptSaveReqVO createReqVO); - - /** - * 更新收款单 - * - * @param updateReqVO 更新信息 - */ - void updateFinanceReceipt(@Valid ErpFinanceReceiptSaveReqVO updateReqVO); - - /** - * 更新收款单的状态 - * - * @param id 编号 - * @param status 状态 - */ - void updateFinanceReceiptStatus(Long id, Integer status); - - /** - * 删除收款单 - * - * @param ids 编号数组 - */ - void deleteFinanceReceipt(List ids); - - /** - * 获得收款单 - * - * @param id 编号 - * @return 收款单 - */ - ErpFinanceReceiptDO getFinanceReceipt(Long id); - - /** - * 获得收款单分页 - * - * @param pageReqVO 分页查询 - * @return 收款单分页 - */ - PageResult getFinanceReceiptPage(ErpFinanceReceiptPageReqVO pageReqVO); - - // ==================== 收款单项 ==================== - - /** - * 获得收款单项列表 - * - * @param receiptId 收款单编号 - * @return 收款单项列表 - */ - List getFinanceReceiptItemListByReceiptId(Long receiptId); - - /** - * 获得收款单项 List - * - * @param receiptIds 收款单编号数组 - * @return 收款单项 List - */ - List getFinanceReceiptItemListByReceiptIds(Collection receiptIds); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptServiceImpl.java deleted file mode 100644 index 42b81d8764..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptServiceImpl.java +++ /dev/null @@ -1,273 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.finance; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.lang.Assert; -import cn.hutool.core.util.ObjectUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.receipt.ErpFinanceReceiptPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.receipt.ErpFinanceReceiptSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptItemDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnDO; -import cn.iocoder.yudao.module.erp.dal.mysql.finance.ErpFinanceReceiptItemMapper; -import cn.iocoder.yudao.module.erp.dal.mysql.finance.ErpFinanceReceiptMapper; -import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import cn.iocoder.yudao.module.erp.enums.common.ErpBizTypeEnum; -import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService; -import cn.iocoder.yudao.module.erp.service.sale.ErpSaleOutService; -import cn.iocoder.yudao.module.erp.service.sale.ErpSaleReturnService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -// TODO 芋艿:记录操作日志 - -/** - * ERP 收款单 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpFinanceReceiptServiceImpl implements ErpFinanceReceiptService { - - @Resource - private ErpFinanceReceiptMapper financeReceiptMapper; - @Resource - private ErpFinanceReceiptItemMapper financeReceiptItemMapper; - - @Resource - private ErpNoRedisDAO noRedisDAO; - - @Resource - private ErpCustomerService customerService; - @Resource - private ErpAccountService accountService; - @Resource - private ErpSaleOutService saleOutService; - @Resource - private ErpSaleReturnService saleReturnService; - - @Resource - private AdminUserApi adminUserApi; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createFinanceReceipt(ErpFinanceReceiptSaveReqVO createReqVO) { - // 1.1 校验订单项的有效性 - List receiptItems = validateFinanceReceiptItems( - createReqVO.getCustomerId(), createReqVO.getItems()); - // 1.2 校验客户 - customerService.validateCustomer(createReqVO.getCustomerId()); - // 1.3 校验结算账户 - if (createReqVO.getAccountId() != null) { - accountService.validateAccount(createReqVO.getAccountId()); - } - // 1.4 校验财务人员 - if (createReqVO.getFinanceUserId() != null) { - adminUserApi.validateUser(createReqVO.getFinanceUserId()); - } - // 1.5 生成收款单号,并校验唯一性 - String no = noRedisDAO.generate(ErpNoRedisDAO.FINANCE_RECEIPT_NO_PREFIX); - if (financeReceiptMapper.selectByNo(no) != null) { - throw exception(FINANCE_RECEIPT_NO_EXISTS); - } - - // 2.1 插入收款单 - ErpFinanceReceiptDO receipt = BeanUtils.toBean(createReqVO, ErpFinanceReceiptDO.class, in -> in - .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus())); - calculateTotalPrice(receipt, receiptItems); - financeReceiptMapper.insert(receipt); - // 2.2 插入收款单项 - receiptItems.forEach(o -> o.setReceiptId(receipt.getId())); - financeReceiptItemMapper.insertBatch(receiptItems); - - // 3. 更新销售出库、退货的收款金额情况 - updateSalePrice(receiptItems); - return receipt.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateFinanceReceipt(ErpFinanceReceiptSaveReqVO updateReqVO) { - // 1.1 校验存在 - ErpFinanceReceiptDO receipt = validateFinanceReceiptExists(updateReqVO.getId()); - if (ErpAuditStatus.APPROVE.getStatus().equals(receipt.getStatus())) { - throw exception(FINANCE_RECEIPT_UPDATE_FAIL_APPROVE, receipt.getNo()); - } - // 1.2 校验客户 - customerService.validateCustomer(updateReqVO.getCustomerId()); - // 1.3 校验结算账户 - if (updateReqVO.getAccountId() != null) { - accountService.validateAccount(updateReqVO.getAccountId()); - } - // 1.4 校验财务人员 - if (updateReqVO.getFinanceUserId() != null) { - adminUserApi.validateUser(updateReqVO.getFinanceUserId()); - } - // 1.5 校验收款单项的有效性 - List receiptItems = validateFinanceReceiptItems( - updateReqVO.getCustomerId(), updateReqVO.getItems()); - - // 2.1 更新收款单 - ErpFinanceReceiptDO updateObj = BeanUtils.toBean(updateReqVO, ErpFinanceReceiptDO.class); - calculateTotalPrice(updateObj, receiptItems); - financeReceiptMapper.updateById(updateObj); - // 2.2 更新收款单项 - updateFinanceReceiptItemList(updateReqVO.getId(), receiptItems); - } - - private void calculateTotalPrice(ErpFinanceReceiptDO receipt, List receiptItems) { - receipt.setTotalPrice(getSumValue(receiptItems, ErpFinanceReceiptItemDO::getReceiptPrice, BigDecimal::add, BigDecimal.ZERO)); - receipt.setReceiptPrice(receipt.getTotalPrice().subtract(receipt.getDiscountPrice())); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateFinanceReceiptStatus(Long id, Integer status) { - boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status); - // 1.1 校验存在 - ErpFinanceReceiptDO receipt = validateFinanceReceiptExists(id); - // 1.2 校验状态 - if (receipt.getStatus().equals(status)) { - throw exception(approve ? FINANCE_RECEIPT_APPROVE_FAIL : FINANCE_RECEIPT_PROCESS_FAIL); - } - - // 2. 更新状态 - int updateCount = financeReceiptMapper.updateByIdAndStatus(id, receipt.getStatus(), - new ErpFinanceReceiptDO().setStatus(status)); - if (updateCount == 0) { - throw exception(approve ? FINANCE_RECEIPT_APPROVE_FAIL : FINANCE_RECEIPT_PROCESS_FAIL); - } - } - - private List validateFinanceReceiptItems( - Long customerId, - List list) { - return convertList(list, o -> BeanUtils.toBean(o, ErpFinanceReceiptItemDO.class, item -> { - if (ObjectUtil.equal(item.getBizType(), ErpBizTypeEnum.SALE_OUT.getType())) { - ErpSaleOutDO saleOut = saleOutService.validateSaleOut(item.getBizId()); - Assert.equals(saleOut.getCustomerId(), customerId, "客户必须相同"); - item.setTotalPrice(saleOut.getTotalPrice()).setBizNo(saleOut.getNo()); - } else if (ObjectUtil.equal(item.getBizType(), ErpBizTypeEnum.SALE_RETURN.getType())) { - ErpSaleReturnDO saleReturn = saleReturnService.validateSaleReturn(item.getBizId()); - Assert.equals(saleReturn.getCustomerId(), customerId, "客户必须相同"); - item.setTotalPrice(saleReturn.getTotalPrice().negate()).setBizNo(saleReturn.getNo()); - } else { - throw new IllegalArgumentException("业务类型不正确:" + item.getBizType()); - } - })); - } - - private void updateFinanceReceiptItemList(Long id, List newList) { - // 第一步,对比新老数据,获得添加、修改、删除的列表 - List oldList = financeReceiptItemMapper.selectListByReceiptId(id); - List> diffList = diffList(oldList, newList, // id 不同,就认为是不同的记录 - (oldVal, newVal) -> oldVal.getId().equals(newVal.getId())); - - // 第二步,批量添加、修改、删除 - if (CollUtil.isNotEmpty(diffList.get(0))) { - diffList.get(0).forEach(o -> o.setReceiptId(id)); - financeReceiptItemMapper.insertBatch(diffList.get(0)); - } - if (CollUtil.isNotEmpty(diffList.get(1))) { - financeReceiptItemMapper.updateBatch(diffList.get(1)); - } - if (CollUtil.isNotEmpty(diffList.get(2))) { - financeReceiptItemMapper.deleteBatchIds(convertList(diffList.get(2), ErpFinanceReceiptItemDO::getId)); - } - - // 第三步,更新销售出库、退货的收款金额情况 - updateSalePrice(CollectionUtils.newArrayList(diffList)); - } - - private void updateSalePrice(List receiptItems) { - receiptItems.forEach(receiptItem -> { - BigDecimal totalReceiptPrice = financeReceiptItemMapper.selectReceiptPriceSumByBizIdAndBizType( - receiptItem.getBizId(), receiptItem.getBizType()); - if (ErpBizTypeEnum.SALE_OUT.getType().equals(receiptItem.getBizType())) { - saleOutService.updateSaleInReceiptPrice(receiptItem.getBizId(), totalReceiptPrice); - } else if (ErpBizTypeEnum.SALE_RETURN.getType().equals(receiptItem.getBizType())) { - saleReturnService.updateSaleReturnRefundPrice(receiptItem.getBizId(), totalReceiptPrice.negate()); - } else { - throw new IllegalArgumentException("业务类型不正确:" + receiptItem.getBizType()); - } - }); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteFinanceReceipt(List ids) { - // 1. 校验不处于已审批 - List receipts = financeReceiptMapper.selectBatchIds(ids); - if (CollUtil.isEmpty(receipts)) { - return; - } - receipts.forEach(receipt -> { - if (ErpAuditStatus.APPROVE.getStatus().equals(receipt.getStatus())) { - throw exception(FINANCE_RECEIPT_DELETE_FAIL_APPROVE, receipt.getNo()); - } - }); - - // 2. 遍历删除,并记录操作日志 - receipts.forEach(receipt -> { - // 2.1 删除收款单 - financeReceiptMapper.deleteById(receipt.getId()); - // 2.2 删除收款单项 - List receiptItems = financeReceiptItemMapper.selectListByReceiptId(receipt.getId()); - financeReceiptItemMapper.deleteBatchIds(convertSet(receiptItems, ErpFinanceReceiptItemDO::getId)); - - // 2.3 更新销售出库、退货的收款金额情况 - updateSalePrice(receiptItems); - }); - } - - private ErpFinanceReceiptDO validateFinanceReceiptExists(Long id) { - ErpFinanceReceiptDO receipt = financeReceiptMapper.selectById(id); - if (receipt == null) { - throw exception(FINANCE_RECEIPT_NOT_EXISTS); - } - return receipt; - } - - @Override - public ErpFinanceReceiptDO getFinanceReceipt(Long id) { - return financeReceiptMapper.selectById(id); - } - - @Override - public PageResult getFinanceReceiptPage(ErpFinanceReceiptPageReqVO pageReqVO) { - return financeReceiptMapper.selectPage(pageReqVO); - } - - // ==================== 收款单项 ==================== - - @Override - public List getFinanceReceiptItemListByReceiptId(Long receiptId) { - return financeReceiptItemMapper.selectListByReceiptId(receiptId); - } - - @Override - public List getFinanceReceiptItemListByReceiptIds(Collection receiptIds) { - if (CollUtil.isEmpty(receiptIds)) { - return Collections.emptyList(); - } - return financeReceiptItemMapper.selectListByReceiptIds(receiptIds); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryService.java deleted file mode 100644 index 2b11faf618..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryService.java +++ /dev/null @@ -1,77 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.product; - -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategoryListReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategorySaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; - -/** - * ERP 产品分类 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpProductCategoryService { - - /** - * 创建产品分类 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createProductCategory(@Valid ErpProductCategorySaveReqVO createReqVO); - - /** - * 更新产品分类 - * - * @param updateReqVO 更新信息 - */ - void updateProductCategory(@Valid ErpProductCategorySaveReqVO updateReqVO); - - /** - * 删除产品分类 - * - * @param id 编号 - */ - void deleteProductCategory(Long id); - - /** - * 获得产品分类 - * - * @param id 编号 - * @return 产品分类 - */ - ErpProductCategoryDO getProductCategory(Long id); - - /** - * 获得产品分类列表 - * - * @param listReqVO 查询条件 - * @return 产品分类列表 - */ - List getProductCategoryList(ErpProductCategoryListReqVO listReqVO); - - /** - * 获得产品分类列表 - * - * @param ids 编号数组 - * @return 产品分类列表 - */ - List getProductCategoryList(Collection ids); - - /** - * 获得产品分类 Map - * - * @param ids 编号数组 - * @return 产品分类 Map - */ - default Map getProductCategoryMap(Collection ids) { - return convertMap(getProductCategoryList(ids), ErpProductCategoryDO::getId); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryServiceImpl.java deleted file mode 100644 index bd045acedc..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryServiceImpl.java +++ /dev/null @@ -1,149 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.product; - -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategoryListReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategorySaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO; -import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductCategoryMapper; -import jakarta.annotation.Resource; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import java.util.Collection; -import java.util.List; -import java.util.Objects; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -/** - * ERP 产品分类 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpProductCategoryServiceImpl implements ErpProductCategoryService { - - @Resource - private ErpProductCategoryMapper erpProductCategoryMapper; - - @Resource - @Lazy // 延迟加载,避免循环依赖 - private ErpProductService productService; - - @Override - public Long createProductCategory(ErpProductCategorySaveReqVO createReqVO) { - // 校验父分类编号的有效性 - validateParentProductCategory(null, createReqVO.getParentId()); - // 校验分类名称的唯一性 - validateProductCategoryNameUnique(null, createReqVO.getParentId(), createReqVO.getName()); - - // 插入 - ErpProductCategoryDO category = BeanUtils.toBean(createReqVO, ErpProductCategoryDO.class); - erpProductCategoryMapper.insert(category); - // 返回 - return category.getId(); - } - - @Override - public void updateProductCategory(ErpProductCategorySaveReqVO updateReqVO) { - // 校验存在 - validateProductCategoryExists(updateReqVO.getId()); - // 校验父分类编号的有效性 - validateParentProductCategory(updateReqVO.getId(), updateReqVO.getParentId()); - // 校验分类名称的唯一性 - validateProductCategoryNameUnique(updateReqVO.getId(), updateReqVO.getParentId(), updateReqVO.getName()); - - // 更新 - ErpProductCategoryDO updateObj = BeanUtils.toBean(updateReqVO, ErpProductCategoryDO.class); - erpProductCategoryMapper.updateById(updateObj); - } - - @Override - public void deleteProductCategory(Long id) { - // 1.1 校验存在 - validateProductCategoryExists(id); - // 1.2 校验是否有子产品分类 - if (erpProductCategoryMapper.selectCountByParentId(id) > 0) { - throw exception(PRODUCT_CATEGORY_EXITS_CHILDREN); - } - // 1.3 校验是否有产品 - if (productService.getProductCountByCategoryId(id) > 0) { - throw exception(PRODUCT_CATEGORY_EXITS_PRODUCT); - } - // 2. 删除 - erpProductCategoryMapper.deleteById(id); - } - - private void validateProductCategoryExists(Long id) { - if (erpProductCategoryMapper.selectById(id) == null) { - throw exception(PRODUCT_CATEGORY_NOT_EXISTS); - } - } - - private void validateParentProductCategory(Long id, Long parentId) { - if (parentId == null || ErpProductCategoryDO.PARENT_ID_ROOT.equals(parentId)) { - return; - } - // 1. 不能设置自己为父产品分类 - if (Objects.equals(id, parentId)) { - throw exception(PRODUCT_CATEGORY_PARENT_ERROR); - } - // 2. 父产品分类不存在 - ErpProductCategoryDO parentCategory = erpProductCategoryMapper.selectById(parentId); - if (parentCategory == null) { - throw exception(PRODUCT_CATEGORY_PARENT_NOT_EXITS); - } - // 3. 递归校验父产品分类,如果父产品分类是自己的子产品分类,则报错,避免形成环路 - if (id == null) { // id 为空,说明新增,不需要考虑环路 - return; - } - for (int i = 0; i < Short.MAX_VALUE; i++) { - // 3.1 校验环路 - parentId = parentCategory.getParentId(); - if (Objects.equals(id, parentId)) { - throw exception(PRODUCT_CATEGORY_PARENT_IS_CHILD); - } - // 3.2 继续递归下一级父产品分类 - if (parentId == null || ErpProductCategoryDO.PARENT_ID_ROOT.equals(parentId)) { - break; - } - parentCategory = erpProductCategoryMapper.selectById(parentId); - if (parentCategory == null) { - break; - } - } - } - - private void validateProductCategoryNameUnique(Long id, Long parentId, String name) { - ErpProductCategoryDO productCategory = erpProductCategoryMapper.selectByParentIdAndName(parentId, name); - if (productCategory == null) { - return; - } - // 如果 id 为空,说明不用比较是否为相同 id 的产品分类 - if (id == null) { - throw exception(PRODUCT_CATEGORY_NAME_DUPLICATE); - } - if (!Objects.equals(productCategory.getId(), id)) { - throw exception(PRODUCT_CATEGORY_NAME_DUPLICATE); - } - } - - @Override - public ErpProductCategoryDO getProductCategory(Long id) { - return erpProductCategoryMapper.selectById(id); - } - - @Override - public List getProductCategoryList(ErpProductCategoryListReqVO listReqVO) { - return erpProductCategoryMapper.selectList(listReqVO); - } - - @Override - public List getProductCategoryList(Collection ids) { - return erpProductCategoryMapper.selectBatchIds(ids); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java deleted file mode 100644 index 778c7f29a4..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java +++ /dev/null @@ -1,111 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.product; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ProductSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; - -/** - * ERP 产品 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpProductService { - - /** - * 创建产品 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createProduct(@Valid ProductSaveReqVO createReqVO); - - /** - * 更新产品 - * - * @param updateReqVO 更新信息 - */ - void updateProduct(@Valid ProductSaveReqVO updateReqVO); - - /** - * 删除产品 - * - * @param id 编号 - */ - void deleteProduct(Long id); - - /** - * 校验产品们的有效性 - * - * @param ids 编号数组 - * @return 产品列表 - */ - List validProductList(Collection ids); - - /** - * 获得产品 - * - * @param id 编号 - * @return 产品 - */ - ErpProductDO getProduct(Long id); - - /** - * 获得指定状态的产品 VO 列表 - * - * @param status 状态 - * @return 产品 VO 列表 - */ - List getProductVOListByStatus(Integer status); - - /** - * 获得产品 VO 列表 - * - * @param ids 编号数组 - * @return 产品 VO 列表 - */ - List getProductVOList(Collection ids); - - /** - * 获得产品 VO Map - * - * @param ids 编号数组 - * @return 产品 VO Map - */ - default Map getProductVOMap(Collection ids) { - return convertMap(getProductVOList(ids), ErpProductRespVO::getId); - } - - /** - * 获得产品 VO 分页 - * - * @param pageReqVO 分页查询 - * @return 产品分页 - */ - PageResult getProductVOPage(ErpProductPageReqVO pageReqVO); - - /** - * 基于产品分类编号,获得产品数量 - * - * @param categoryId 产品分类编号 - * @return 产品数量 - */ - Long getProductCountByCategoryId(Long categoryId); - - /** - * 基于产品单位编号,获得产品数量 - * - * @param unitId 产品单位编号 - * @return 产品数量 - */ - Long getProductCountByUnitId(Long unitId); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java deleted file mode 100644 index cbe689c6ac..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java +++ /dev/null @@ -1,147 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.product; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ProductSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; -import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductMapper; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import java.util.*; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -/** - * ERP 产品 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpProductServiceImpl implements ErpProductService { - - @Resource - private ErpProductMapper productMapper; - - @Resource - private ErpProductCategoryService productCategoryService; - @Resource - private ErpProductUnitService productUnitService; - - @Override - public Long createProduct(ProductSaveReqVO createReqVO) { - // TODO 芋艿:校验分类 - // 插入 - ErpProductDO product = BeanUtils.toBean(createReqVO, ErpProductDO.class); - productMapper.insert(product); - // 返回 - return product.getId(); - } - - @Override - public void updateProduct(ProductSaveReqVO updateReqVO) { - // TODO 芋艿:校验分类 - // 校验存在 - validateProductExists(updateReqVO.getId()); - // 更新 - ErpProductDO updateObj = BeanUtils.toBean(updateReqVO, ErpProductDO.class); - productMapper.updateById(updateObj); - } - - @Override - public void deleteProduct(Long id) { - // 校验存在 - validateProductExists(id); - // 删除 - productMapper.deleteById(id); - } - - @Override - public List validProductList(Collection ids) { - if (CollUtil.isEmpty(ids)) { - return Collections.emptyList(); - } - List list = productMapper.selectBatchIds(ids); - Map productMap = convertMap(list, ErpProductDO::getId); - for (Long id : ids) { - ErpProductDO product = productMap.get(id); - if (productMap.get(id) == null) { - throw exception(PRODUCT_NOT_EXISTS); - } - if (CommonStatusEnum.isDisable(product.getStatus())) { - throw exception(PRODUCT_NOT_ENABLE, product.getName()); - } - } - return list; - } - - private void validateProductExists(Long id) { - if (productMapper.selectById(id) == null) { - throw exception(PRODUCT_NOT_EXISTS); - } - } - - @Override - public ErpProductDO getProduct(Long id) { - return productMapper.selectById(id); - } - - @Override - public List getProductVOListByStatus(Integer status) { - List list = productMapper.selectListByStatus(status); - return buildProductVOList(list); - } - - @Override - public List getProductVOList(Collection ids) { - if (CollUtil.isEmpty(ids)) { - return Collections.emptyList(); - } - List list = productMapper.selectBatchIds(ids); - return buildProductVOList(list); - } - - @Override - public PageResult getProductVOPage(ErpProductPageReqVO pageReqVO) { - PageResult pageResult = productMapper.selectPage(pageReqVO); - return new PageResult<>(buildProductVOList(pageResult.getList()), pageResult.getTotal()); - } - - private List buildProductVOList(List list) { - if (CollUtil.isEmpty(list)) { - return Collections.emptyList(); - } - Map categoryMap = productCategoryService.getProductCategoryMap( - convertSet(list, ErpProductDO::getCategoryId)); - Map unitMap = productUnitService.getProductUnitMap( - convertSet(list, ErpProductDO::getUnitId)); - return BeanUtils.toBean(list, ErpProductRespVO.class, product -> { - MapUtils.findAndThen(categoryMap, product.getCategoryId(), - category -> product.setCategoryName(category.getName())); - MapUtils.findAndThen(unitMap, product.getUnitId(), - unit -> product.setUnitName(unit.getName())); - }); - } - - @Override - public Long getProductCountByCategoryId(Long categoryId) { - return productMapper.selectCountByCategoryId(categoryId); - } - - @Override - public Long getProductCountByUnitId(Long unitId) { - return productMapper.selectCountByUnitId(unitId); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java deleted file mode 100644 index 340278ab9b..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java +++ /dev/null @@ -1,86 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.product; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; - -/** - * ERP 产品单位 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpProductUnitService { - - /** - * 创建产品单位 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createProductUnit(@Valid ErpProductUnitSaveReqVO createReqVO); - - /** - * 更新产品单位 - * - * @param updateReqVO 更新信息 - */ - void updateProductUnit(@Valid ErpProductUnitSaveReqVO updateReqVO); - - /** - * 删除产品单位 - * - * @param id 编号 - */ - void deleteProductUnit(Long id); - - /** - * 获得产品单位 - * - * @param id 编号 - * @return 产品单位 - */ - ErpProductUnitDO getProductUnit(Long id); - - /** - * 获得产品单位分页 - * - * @param pageReqVO 分页查询 - * @return 产品单位分页 - */ - PageResult getProductUnitPage(ErpProductUnitPageReqVO pageReqVO); - - /** - * 获得指定状态的产品单位列表 - * - * @param status 状态 - * @return 产品单位列表 - */ - List getProductUnitListByStatus(Integer status); - - /** - * 获得产品单位列表 - * - * @param ids 编号数组 - * @return 产品单位列表 - */ - List getProductUnitList(Collection ids); - - /** - * 获得产品单位 Map - * - * @param ids 编号数组 - * @return 产品单位 Map - */ - default Map getProductUnitMap(Collection ids) { - return convertMap(getProductUnitList(ids), ErpProductUnitDO::getId); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java deleted file mode 100644 index 89ba6b08e3..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java +++ /dev/null @@ -1,111 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.product; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; -import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductUnitMapper; -import com.google.common.annotations.VisibleForTesting; -import jakarta.annotation.Resource; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import java.util.Collection; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -/** - * ERP 产品单位 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpProductUnitServiceImpl implements ErpProductUnitService { - - @Resource - private ErpProductUnitMapper productUnitMapper; - - @Resource - @Lazy // 延迟加载,避免循环依赖 - private ErpProductService productService; - - @Override - public Long createProductUnit(ErpProductUnitSaveReqVO createReqVO) { - // 1. 校验名字唯一 - validateProductUnitNameUnique(null, createReqVO.getName()); - // 2. 插入 - ErpProductUnitDO unit = BeanUtils.toBean(createReqVO, ErpProductUnitDO.class); - productUnitMapper.insert(unit); - return unit.getId(); - } - - @Override - public void updateProductUnit(ErpProductUnitSaveReqVO updateReqVO) { - // 1.1 校验存在 - validateProductUnitExists(updateReqVO.getId()); - // 1.2 校验名字唯一 - validateProductUnitNameUnique(updateReqVO.getId(), updateReqVO.getName()); - // 2. 更新 - ErpProductUnitDO updateObj = BeanUtils.toBean(updateReqVO, ErpProductUnitDO.class); - productUnitMapper.updateById(updateObj); - } - - @VisibleForTesting - void validateProductUnitNameUnique(Long id, String name) { - ErpProductUnitDO unit = productUnitMapper.selectByName(name); - if (unit == null) { - return; - } - // 如果 id 为空,说明不用比较是否为相同 id 的字典类型 - if (id == null) { - throw exception(PRODUCT_UNIT_NAME_DUPLICATE); - } - if (!unit.getId().equals(id)) { - throw exception(PRODUCT_UNIT_NAME_DUPLICATE); - } - } - - @Override - public void deleteProductUnit(Long id) { - // 1.1 校验存在 - validateProductUnitExists(id); - // 1.2 校验产品是否使用 - if (productService.getProductCountByUnitId(id) > 0) { - throw exception(PRODUCT_UNIT_EXITS_PRODUCT); - } - // 2. 删除 - productUnitMapper.deleteById(id); - } - - private void validateProductUnitExists(Long id) { - if (productUnitMapper.selectById(id) == null) { - throw exception(PRODUCT_UNIT_NOT_EXISTS); - } - } - - @Override - public ErpProductUnitDO getProductUnit(Long id) { - return productUnitMapper.selectById(id); - } - - @Override - public PageResult getProductUnitPage(ErpProductUnitPageReqVO pageReqVO) { - return productUnitMapper.selectPage(pageReqVO); - } - - @Override - public List getProductUnitListByStatus(Integer status) { - return productUnitMapper.selectListByStatus(status); - } - - @Override - public List getProductUnitList(Collection ids) { - return productUnitMapper.selectBatchIds(ids); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInService.java deleted file mode 100644 index 37aa452cdc..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInService.java +++ /dev/null @@ -1,101 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.purchase; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInItemDO; -import jakarta.validation.Valid; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.List; - -/** - * ERP 采购入库 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpPurchaseInService { - - /** - * 创建采购入库 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createPurchaseIn(@Valid ErpPurchaseInSaveReqVO createReqVO); - - /** - * 更新采购入库 - * - * @param updateReqVO 更新信息 - */ - void updatePurchaseIn(@Valid ErpPurchaseInSaveReqVO updateReqVO); - - /** - * 更新采购入库的状态 - * - * @param id 编号 - * @param status 状态 - */ - void updatePurchaseInStatus(Long id, Integer status); - - /** - * 更新采购入库的付款金额 - * - * @param id 编号 - * @param paymentPrice 付款金额 - */ - void updatePurchaseInPaymentPrice(Long id, BigDecimal paymentPrice); - - /** - * 删除采购入库 - * - * @param ids 编号数组 - */ - void deletePurchaseIn(List ids); - - /** - * 获得采购入库 - * - * @param id 编号 - * @return 采购入库 - */ - ErpPurchaseInDO getPurchaseIn(Long id); - - /** - * 校验采购入库,已经审核通过 - * - * @param id 编号 - * @return 采购入库 - */ - ErpPurchaseInDO validatePurchaseIn(Long id); - - /** - * 获得采购入库分页 - * - * @param pageReqVO 分页查询 - * @return 采购入库分页 - */ - PageResult getPurchaseInPage(ErpPurchaseInPageReqVO pageReqVO); - - // ==================== 采购入库项 ==================== - - /** - * 获得采购入库项列表 - * - * @param inId 采购入库编号 - * @return 采购入库项列表 - */ - List getPurchaseInItemListByInId(Long inId); - - /** - * 获得采购入库项 List - * - * @param inIds 采购入库编号数组 - * @return 采购入库项 List - */ - List getPurchaseInItemListByInIds(Collection inIds); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInServiceImpl.java deleted file mode 100644 index 5d6ad6230c..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInServiceImpl.java +++ /dev/null @@ -1,308 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.purchase; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInItemDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO; -import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseInItemMapper; -import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseInMapper; -import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum; -import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockRecordService; -import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import jakarta.annotation.Resource; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -// TODO 芋艿:记录操作日志 - -/** - * ERP 采购入库 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpPurchaseInServiceImpl implements ErpPurchaseInService { - - @Resource - private ErpPurchaseInMapper purchaseInMapper; - @Resource - private ErpPurchaseInItemMapper purchaseInItemMapper; - - @Resource - private ErpNoRedisDAO noRedisDAO; - - @Resource - private ErpProductService productService; - @Resource - @Lazy // 延迟加载,避免循环依赖 - private ErpPurchaseOrderService purchaseOrderService; - @Resource - private ErpAccountService accountService; - @Resource - private ErpStockRecordService stockRecordService; - - @Resource - private AdminUserApi adminUserApi; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createPurchaseIn(ErpPurchaseInSaveReqVO createReqVO) { - // 1.1 校验采购订单已审核 - ErpPurchaseOrderDO purchaseOrder = purchaseOrderService.validatePurchaseOrder(createReqVO.getOrderId()); - // 1.2 校验入库项的有效性 - List purchaseInItems = validatePurchaseInItems(createReqVO.getItems()); - // 1.3 校验结算账户 - accountService.validateAccount(createReqVO.getAccountId()); - // 1.4 生成入库单号,并校验唯一性 - String no = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_IN_NO_PREFIX); - if (purchaseInMapper.selectByNo(no) != null) { - throw exception(PURCHASE_IN_NO_EXISTS); - } - - // 2.1 插入入库 - ErpPurchaseInDO purchaseIn = BeanUtils.toBean(createReqVO, ErpPurchaseInDO.class, in -> in - .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus())) - .setOrderNo(purchaseOrder.getNo()).setSupplierId(purchaseOrder.getSupplierId()); - calculateTotalPrice(purchaseIn, purchaseInItems); - purchaseInMapper.insert(purchaseIn); - // 2.2 插入入库项 - purchaseInItems.forEach(o -> o.setInId(purchaseIn.getId())); - purchaseInItemMapper.insertBatch(purchaseInItems); - - // 3. 更新采购订单的入库数量 - updatePurchaseOrderInCount(createReqVO.getOrderId()); - return purchaseIn.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updatePurchaseIn(ErpPurchaseInSaveReqVO updateReqVO) { - // 1.1 校验存在 - ErpPurchaseInDO purchaseIn = validatePurchaseInExists(updateReqVO.getId()); - if (ErpAuditStatus.APPROVE.getStatus().equals(purchaseIn.getStatus())) { - throw exception(PURCHASE_IN_UPDATE_FAIL_APPROVE, purchaseIn.getNo()); - } - // 1.2 校验采购订单已审核 - ErpPurchaseOrderDO purchaseOrder = purchaseOrderService.validatePurchaseOrder(updateReqVO.getOrderId()); - // 1.3 校验结算账户 - accountService.validateAccount(updateReqVO.getAccountId()); - // 1.4 校验订单项的有效性 - List purchaseInItems = validatePurchaseInItems(updateReqVO.getItems()); - - // 2.1 更新入库 - ErpPurchaseInDO updateObj = BeanUtils.toBean(updateReqVO, ErpPurchaseInDO.class) - .setOrderNo(purchaseOrder.getNo()).setSupplierId(purchaseOrder.getSupplierId()); - calculateTotalPrice(updateObj, purchaseInItems); - purchaseInMapper.updateById(updateObj); - // 2.2 更新入库项 - updatePurchaseInItemList(updateReqVO.getId(), purchaseInItems); - - // 3.1 更新采购订单的入库数量 - updatePurchaseOrderInCount(updateObj.getOrderId()); - // 3.2 注意:如果采购订单编号变更了,需要更新“老”采购订单的入库数量 - if (ObjectUtil.notEqual(purchaseIn.getOrderId(), updateObj.getOrderId())) { - updatePurchaseOrderInCount(purchaseIn.getOrderId()); - } - } - - private void calculateTotalPrice(ErpPurchaseInDO purchaseIn, List purchaseInItems) { - purchaseIn.setTotalCount(getSumValue(purchaseInItems, ErpPurchaseInItemDO::getCount, BigDecimal::add)); - purchaseIn.setTotalProductPrice(getSumValue(purchaseInItems, ErpPurchaseInItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO)); - purchaseIn.setTotalTaxPrice(getSumValue(purchaseInItems, ErpPurchaseInItemDO::getTaxPrice, BigDecimal::add, BigDecimal.ZERO)); - purchaseIn.setTotalPrice(purchaseIn.getTotalProductPrice().add(purchaseIn.getTotalTaxPrice())); - // 计算优惠价格 - if (purchaseIn.getDiscountPercent() == null) { - purchaseIn.setDiscountPercent(BigDecimal.ZERO); - } - purchaseIn.setDiscountPrice(MoneyUtils.priceMultiplyPercent(purchaseIn.getTotalPrice(), purchaseIn.getDiscountPercent())); - purchaseIn.setTotalPrice(purchaseIn.getTotalPrice().subtract(purchaseIn.getDiscountPrice().add(purchaseIn.getOtherPrice()))); - } - - private void updatePurchaseOrderInCount(Long orderId) { - // 1.1 查询采购订单对应的采购入库单列表 - List purchaseIns = purchaseInMapper.selectListByOrderId(orderId); - // 1.2 查询对应的采购订单项的入库数量 - Map returnCountMap = purchaseInItemMapper.selectOrderItemCountSumMapByInIds( - convertList(purchaseIns, ErpPurchaseInDO::getId)); - // 2. 更新采购订单的入库数量 - purchaseOrderService.updatePurchaseOrderInCount(orderId, returnCountMap); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updatePurchaseInStatus(Long id, Integer status) { - boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status); - // 1.1 校验存在 - ErpPurchaseInDO purchaseIn = validatePurchaseInExists(id); - // 1.2 校验状态 - if (purchaseIn.getStatus().equals(status)) { - throw exception(approve ? PURCHASE_IN_APPROVE_FAIL : PURCHASE_IN_PROCESS_FAIL); - } - // 1.3 校验已付款 - if (approve && purchaseIn.getPaymentPrice().compareTo(BigDecimal.ZERO) > 0) { - throw exception(PURCHASE_IN_PROCESS_FAIL_EXISTS_PAYMENT); - } - - // 2. 更新状态 - int updateCount = purchaseInMapper.updateByIdAndStatus(id, purchaseIn.getStatus(), - new ErpPurchaseInDO().setStatus(status)); - if (updateCount == 0) { - throw exception(approve ? PURCHASE_IN_APPROVE_FAIL : PURCHASE_IN_PROCESS_FAIL); - } - - // 3. 变更库存 - List purchaseInItems = purchaseInItemMapper.selectListByInId(id); - Integer bizType = approve ? ErpStockRecordBizTypeEnum.PURCHASE_IN.getType() - : ErpStockRecordBizTypeEnum.PURCHASE_IN_CANCEL.getType(); - purchaseInItems.forEach(purchaseInItem -> { - BigDecimal count = approve ? purchaseInItem.getCount() : purchaseInItem.getCount().negate(); - stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( - purchaseInItem.getProductId(), purchaseInItem.getWarehouseId(), count, - bizType, purchaseInItem.getInId(), purchaseInItem.getId(), purchaseIn.getNo())); - }); - } - - @Override - public void updatePurchaseInPaymentPrice(Long id, BigDecimal paymentPrice) { - ErpPurchaseInDO purchaseIn = purchaseInMapper.selectById(id); - if (purchaseIn.getPaymentPrice().equals(paymentPrice)) { - return; - } - if (paymentPrice.compareTo(purchaseIn.getTotalPrice()) > 0) { - throw exception(PURCHASE_IN_FAIL_PAYMENT_PRICE_EXCEED, paymentPrice, purchaseIn.getTotalPrice()); - } - purchaseInMapper.updateById(new ErpPurchaseInDO().setId(id).setPaymentPrice(paymentPrice)); - } - - private List validatePurchaseInItems(List list) { - // 1. 校验产品存在 - List productList = productService.validProductList( - convertSet(list, ErpPurchaseInSaveReqVO.Item::getProductId)); - Map productMap = convertMap(productList, ErpProductDO::getId); - // 2. 转化为 ErpPurchaseInItemDO 列表 - return convertList(list, o -> BeanUtils.toBean(o, ErpPurchaseInItemDO.class, item -> { - item.setProductUnitId(productMap.get(item.getProductId()).getUnitId()); - item.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())); - if (item.getTotalPrice() == null) { - return; - } - if (item.getTaxPercent() != null) { - item.setTaxPrice(MoneyUtils.priceMultiplyPercent(item.getTotalPrice(), item.getTaxPercent())); - } - })); - } - - private void updatePurchaseInItemList(Long id, List newList) { - // 第一步,对比新老数据,获得添加、修改、删除的列表 - List oldList = purchaseInItemMapper.selectListByInId(id); - List> diffList = diffList(oldList, newList, // id 不同,就认为是不同的记录 - (oldVal, newVal) -> oldVal.getId().equals(newVal.getId())); - - // 第二步,批量添加、修改、删除 - if (CollUtil.isNotEmpty(diffList.get(0))) { - diffList.get(0).forEach(o -> o.setInId(id)); - purchaseInItemMapper.insertBatch(diffList.get(0)); - } - if (CollUtil.isNotEmpty(diffList.get(1))) { - purchaseInItemMapper.updateBatch(diffList.get(1)); - } - if (CollUtil.isNotEmpty(diffList.get(2))) { - purchaseInItemMapper.deleteBatchIds(convertList(diffList.get(2), ErpPurchaseInItemDO::getId)); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deletePurchaseIn(List ids) { - // 1. 校验不处于已审批 - List purchaseIns = purchaseInMapper.selectBatchIds(ids); - if (CollUtil.isEmpty(purchaseIns)) { - return; - } - purchaseIns.forEach(purchaseIn -> { - if (ErpAuditStatus.APPROVE.getStatus().equals(purchaseIn.getStatus())) { - throw exception(PURCHASE_IN_DELETE_FAIL_APPROVE, purchaseIn.getNo()); - } - }); - - // 2. 遍历删除,并记录操作日志 - purchaseIns.forEach(purchaseIn -> { - // 2.1 删除订单 - purchaseInMapper.deleteById(purchaseIn.getId()); - // 2.2 删除订单项 - purchaseInItemMapper.deleteByInId(purchaseIn.getId()); - - // 2.3 更新采购订单的入库数量 - updatePurchaseOrderInCount(purchaseIn.getOrderId()); - }); - - } - - private ErpPurchaseInDO validatePurchaseInExists(Long id) { - ErpPurchaseInDO purchaseIn = purchaseInMapper.selectById(id); - if (purchaseIn == null) { - throw exception(PURCHASE_IN_NOT_EXISTS); - } - return purchaseIn; - } - - @Override - public ErpPurchaseInDO getPurchaseIn(Long id) { - return purchaseInMapper.selectById(id); - } - - @Override - public ErpPurchaseInDO validatePurchaseIn(Long id) { - ErpPurchaseInDO purchaseIn = validatePurchaseInExists(id); - if (ObjectUtil.notEqual(purchaseIn.getStatus(), ErpAuditStatus.APPROVE.getStatus())) { - throw exception(PURCHASE_IN_NOT_APPROVE); - } - return purchaseIn; - } - - @Override - public PageResult getPurchaseInPage(ErpPurchaseInPageReqVO pageReqVO) { - return purchaseInMapper.selectPage(pageReqVO); - } - - // ==================== 采购入库项 ==================== - - @Override - public List getPurchaseInItemListByInId(Long inId) { - return purchaseInItemMapper.selectListByInId(inId); - } - - @Override - public List getPurchaseInItemListByInIds(Collection inIds) { - if (CollUtil.isEmpty(inIds)) { - return Collections.emptyList(); - } - return purchaseInItemMapper.selectListByInIds(inIds); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderService.java deleted file mode 100644 index bfea076bb4..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderService.java +++ /dev/null @@ -1,110 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.purchase; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO; -import jakarta.validation.Valid; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -/** - * ERP 采购订单 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpPurchaseOrderService { - - /** - * 创建采购订单 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createPurchaseOrder(@Valid ErpPurchaseOrderSaveReqVO createReqVO); - - /** - * 更新采购订单 - * - * @param updateReqVO 更新信息 - */ - void updatePurchaseOrder(@Valid ErpPurchaseOrderSaveReqVO updateReqVO); - - /** - * 更新采购订单的状态 - * - * @param id 编号 - * @param status 状态 - */ - void updatePurchaseOrderStatus(Long id, Integer status); - - /** - * 更新采购订单的入库数量 - * - * @param id 编号 - * @param inCountMap 入库数量 Map:key 采购订单项编号;value 入库数量 - */ - void updatePurchaseOrderInCount(Long id, Map inCountMap); - - /** - * 更新采购订单的退货数量 - * - * @param orderId 编号 - * @param returnCountMap 退货数量 Map:key 采购订单项编号;value 退货数量 - */ - void updatePurchaseOrderReturnCount(Long orderId, Map returnCountMap); - - /** - * 删除采购订单 - * - * @param ids 编号数组 - */ - void deletePurchaseOrder(List ids); - - /** - * 获得采购订单 - * - * @param id 编号 - * @return 采购订单 - */ - ErpPurchaseOrderDO getPurchaseOrder(Long id); - - /** - * 校验采购订单,已经审核通过 - * - * @param id 编号 - * @return 采购订单 - */ - ErpPurchaseOrderDO validatePurchaseOrder(Long id); - - /** - * 获得采购订单分页 - * - * @param pageReqVO 分页查询 - * @return 采购订单分页 - */ - PageResult getPurchaseOrderPage(ErpPurchaseOrderPageReqVO pageReqVO); - - // ==================== 采购订单项 ==================== - - /** - * 获得采购订单项列表 - * - * @param orderId 采购订单编号 - * @return 采购订单项列表 - */ - List getPurchaseOrderItemListByOrderId(Long orderId); - - /** - * 获得采购订单项 List - * - * @param orderIds 采购订单编号数组 - * @return 采购订单项 List - */ - List getPurchaseOrderItemListByOrderIds(Collection orderIds); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderServiceImpl.java deleted file mode 100644 index 74b5b18d22..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderServiceImpl.java +++ /dev/null @@ -1,295 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.purchase; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO; -import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderItemMapper; -import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper; -import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -// TODO 芋艿:记录操作日志 - -/** - * ERP 采购订单 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpPurchaseOrderServiceImpl implements ErpPurchaseOrderService { - - @Resource - private ErpPurchaseOrderMapper purchaseOrderMapper; - @Resource - private ErpPurchaseOrderItemMapper purchaseOrderItemMapper; - - @Resource - private ErpNoRedisDAO noRedisDAO; - - @Resource - private ErpProductService productService; - @Resource - private ErpSupplierService supplierService; - @Resource - private ErpAccountService accountService; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createPurchaseOrder(ErpPurchaseOrderSaveReqVO createReqVO) { - // 1.1 校验订单项的有效性 - List purchaseOrderItems = validatePurchaseOrderItems(createReqVO.getItems()); - // 1.2 校验供应商 - supplierService.validateSupplier(createReqVO.getSupplierId()); - // 1.3 校验结算账户 - if (createReqVO.getAccountId() != null) { - accountService.validateAccount(createReqVO.getAccountId()); - } - // 1.4 生成订单号,并校验唯一性 - String no = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_ORDER_NO_PREFIX); - if (purchaseOrderMapper.selectByNo(no) != null) { - throw exception(PURCHASE_ORDER_NO_EXISTS); - } - - // 2.1 插入订单 - ErpPurchaseOrderDO purchaseOrder = BeanUtils.toBean(createReqVO, ErpPurchaseOrderDO.class, in -> in - .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus())); - calculateTotalPrice(purchaseOrder, purchaseOrderItems); - purchaseOrderMapper.insert(purchaseOrder); - // 2.2 插入订单项 - purchaseOrderItems.forEach(o -> o.setOrderId(purchaseOrder.getId())); - purchaseOrderItemMapper.insertBatch(purchaseOrderItems); - return purchaseOrder.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updatePurchaseOrder(ErpPurchaseOrderSaveReqVO updateReqVO) { - // 1.1 校验存在 - ErpPurchaseOrderDO purchaseOrder = validatePurchaseOrderExists(updateReqVO.getId()); - if (ErpAuditStatus.APPROVE.getStatus().equals(purchaseOrder.getStatus())) { - throw exception(PURCHASE_ORDER_UPDATE_FAIL_APPROVE, purchaseOrder.getNo()); - } - // 1.2 校验供应商 - supplierService.validateSupplier(updateReqVO.getSupplierId()); - // 1.3 校验结算账户 - if (updateReqVO.getAccountId() != null) { - accountService.validateAccount(updateReqVO.getAccountId()); - } - // 1.4 校验订单项的有效性 - List purchaseOrderItems = validatePurchaseOrderItems(updateReqVO.getItems()); - - // 2.1 更新订单 - ErpPurchaseOrderDO updateObj = BeanUtils.toBean(updateReqVO, ErpPurchaseOrderDO.class); - calculateTotalPrice(updateObj, purchaseOrderItems); - purchaseOrderMapper.updateById(updateObj); - // 2.2 更新订单项 - updatePurchaseOrderItemList(updateReqVO.getId(), purchaseOrderItems); - } - - private void calculateTotalPrice(ErpPurchaseOrderDO purchaseOrder, List purchaseOrderItems) { - purchaseOrder.setTotalCount(getSumValue(purchaseOrderItems, ErpPurchaseOrderItemDO::getCount, BigDecimal::add)); - purchaseOrder.setTotalProductPrice(getSumValue(purchaseOrderItems, ErpPurchaseOrderItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO)); - purchaseOrder.setTotalTaxPrice(getSumValue(purchaseOrderItems, ErpPurchaseOrderItemDO::getTaxPrice, BigDecimal::add, BigDecimal.ZERO)); - purchaseOrder.setTotalPrice(purchaseOrder.getTotalProductPrice().add(purchaseOrder.getTotalTaxPrice())); - // 计算优惠价格 - if (purchaseOrder.getDiscountPercent() == null) { - purchaseOrder.setDiscountPercent(BigDecimal.ZERO); - } - purchaseOrder.setDiscountPrice(MoneyUtils.priceMultiplyPercent(purchaseOrder.getTotalPrice(), purchaseOrder.getDiscountPercent())); - purchaseOrder.setTotalPrice(purchaseOrder.getTotalPrice().subtract(purchaseOrder.getDiscountPrice())); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updatePurchaseOrderStatus(Long id, Integer status) { - boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status); - // 1.1 校验存在 - ErpPurchaseOrderDO purchaseOrder = validatePurchaseOrderExists(id); - // 1.2 校验状态 - if (purchaseOrder.getStatus().equals(status)) { - throw exception(approve ? PURCHASE_ORDER_APPROVE_FAIL : PURCHASE_ORDER_PROCESS_FAIL); - } - // 1.3 存在采购入单,无法反审核 - if (!approve && purchaseOrder.getInCount().compareTo(BigDecimal.ZERO) > 0) { - throw exception(PURCHASE_ORDER_PROCESS_FAIL_EXISTS_IN); - } - // 1.4 存在采购退货单,无法反审核 - if (!approve && purchaseOrder.getReturnCount().compareTo(BigDecimal.ZERO) > 0) { - throw exception(PURCHASE_ORDER_PROCESS_FAIL_EXISTS_RETURN); - } - - // 2. 更新状态 - int updateCount = purchaseOrderMapper.updateByIdAndStatus(id, purchaseOrder.getStatus(), - new ErpPurchaseOrderDO().setStatus(status)); - if (updateCount == 0) { - throw exception(approve ? PURCHASE_ORDER_APPROVE_FAIL : PURCHASE_ORDER_PROCESS_FAIL); - } - } - - private List validatePurchaseOrderItems(List list) { - // 1. 校验产品存在 - List productList = productService.validProductList( - convertSet(list, ErpPurchaseOrderSaveReqVO.Item::getProductId)); - Map productMap = convertMap(productList, ErpProductDO::getId); - // 2. 转化为 ErpPurchaseOrderItemDO 列表 - return convertList(list, o -> BeanUtils.toBean(o, ErpPurchaseOrderItemDO.class, item -> { - item.setProductUnitId(productMap.get(item.getProductId()).getUnitId()); - item.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())); - if (item.getTotalPrice() == null) { - return; - } - if (item.getTaxPercent() != null) { - item.setTaxPrice(MoneyUtils.priceMultiplyPercent(item.getTotalPrice(), item.getTaxPercent())); - } - })); - } - - private void updatePurchaseOrderItemList(Long id, List newList) { - // 第一步,对比新老数据,获得添加、修改、删除的列表 - List oldList = purchaseOrderItemMapper.selectListByOrderId(id); - List> diffList = diffList(oldList, newList, // id 不同,就认为是不同的记录 - (oldVal, newVal) -> oldVal.getId().equals(newVal.getId())); - - // 第二步,批量添加、修改、删除 - if (CollUtil.isNotEmpty(diffList.get(0))) { - diffList.get(0).forEach(o -> o.setOrderId(id)); - purchaseOrderItemMapper.insertBatch(diffList.get(0)); - } - if (CollUtil.isNotEmpty(diffList.get(1))) { - purchaseOrderItemMapper.updateBatch(diffList.get(1)); - } - if (CollUtil.isNotEmpty(diffList.get(2))) { - purchaseOrderItemMapper.deleteBatchIds(convertList(diffList.get(2), ErpPurchaseOrderItemDO::getId)); - } - } - - @Override - public void updatePurchaseOrderInCount(Long id, Map inCountMap) { - List orderItems = purchaseOrderItemMapper.selectListByOrderId(id); - // 1. 更新每个采购订单项 - orderItems.forEach(item -> { - BigDecimal inCount = inCountMap.getOrDefault(item.getId(), BigDecimal.ZERO); - if (item.getInCount().equals(inCount)) { - return; - } - if (inCount.compareTo(item.getCount()) > 0) { - throw exception(PURCHASE_ORDER_ITEM_IN_FAIL_PRODUCT_EXCEED, - productService.getProduct(item.getProductId()).getName(), item.getCount()); - } - purchaseOrderItemMapper.updateById(new ErpPurchaseOrderItemDO().setId(item.getId()).setInCount(inCount)); - }); - // 2. 更新采购订单 - BigDecimal totalInCount = getSumValue(inCountMap.values(), value -> value, BigDecimal::add, BigDecimal.ZERO); - purchaseOrderMapper.updateById(new ErpPurchaseOrderDO().setId(id).setInCount(totalInCount)); - } - - @Override - public void updatePurchaseOrderReturnCount(Long orderId, Map returnCountMap) { - List orderItems = purchaseOrderItemMapper.selectListByOrderId(orderId); - // 1. 更新每个采购订单项 - orderItems.forEach(item -> { - BigDecimal returnCount = returnCountMap.getOrDefault(item.getId(), BigDecimal.ZERO); - if (item.getReturnCount().equals(returnCount)) { - return; - } - if (returnCount.compareTo(item.getInCount()) > 0) { - throw exception(PURCHASE_ORDER_ITEM_RETURN_FAIL_IN_EXCEED, - productService.getProduct(item.getProductId()).getName(), item.getInCount()); - } - purchaseOrderItemMapper.updateById(new ErpPurchaseOrderItemDO().setId(item.getId()).setReturnCount(returnCount)); - }); - // 2. 更新采购订单 - BigDecimal totalReturnCount = getSumValue(returnCountMap.values(), value -> value, BigDecimal::add, BigDecimal.ZERO); - purchaseOrderMapper.updateById(new ErpPurchaseOrderDO().setId(orderId).setReturnCount(totalReturnCount)); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deletePurchaseOrder(List ids) { - // 1. 校验不处于已审批 - List purchaseOrders = purchaseOrderMapper.selectBatchIds(ids); - if (CollUtil.isEmpty(purchaseOrders)) { - return; - } - purchaseOrders.forEach(purchaseOrder -> { - if (ErpAuditStatus.APPROVE.getStatus().equals(purchaseOrder.getStatus())) { - throw exception(PURCHASE_ORDER_DELETE_FAIL_APPROVE, purchaseOrder.getNo()); - } - }); - - // 2. 遍历删除,并记录操作日志 - purchaseOrders.forEach(purchaseOrder -> { - // 2.1 删除订单 - purchaseOrderMapper.deleteById(purchaseOrder.getId()); - // 2.2 删除订单项 - purchaseOrderItemMapper.deleteByOrderId(purchaseOrder.getId()); - }); - } - - private ErpPurchaseOrderDO validatePurchaseOrderExists(Long id) { - ErpPurchaseOrderDO purchaseOrder = purchaseOrderMapper.selectById(id); - if (purchaseOrder == null) { - throw exception(PURCHASE_ORDER_NOT_EXISTS); - } - return purchaseOrder; - } - - @Override - public ErpPurchaseOrderDO getPurchaseOrder(Long id) { - return purchaseOrderMapper.selectById(id); - } - - @Override - public ErpPurchaseOrderDO validatePurchaseOrder(Long id) { - ErpPurchaseOrderDO purchaseOrder = validatePurchaseOrderExists(id); - if (ObjectUtil.notEqual(purchaseOrder.getStatus(), ErpAuditStatus.APPROVE.getStatus())) { - throw exception(PURCHASE_ORDER_NOT_APPROVE); - } - return purchaseOrder; - } - - @Override - public PageResult getPurchaseOrderPage(ErpPurchaseOrderPageReqVO pageReqVO) { - return purchaseOrderMapper.selectPage(pageReqVO); - } - - // ==================== 订单项 ==================== - - @Override - public List getPurchaseOrderItemListByOrderId(Long orderId) { - return purchaseOrderItemMapper.selectListByOrderId(orderId); - } - - @Override - public List getPurchaseOrderItemListByOrderIds(Collection orderIds) { - if (CollUtil.isEmpty(orderIds)) { - return Collections.emptyList(); - } - return purchaseOrderItemMapper.selectListByOrderIds(orderIds); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseReturnService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseReturnService.java deleted file mode 100644 index b6826fa889..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseReturnService.java +++ /dev/null @@ -1,101 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.purchase; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnItemDO; -import jakarta.validation.Valid; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.List; - -/** - * ERP 采购退货 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpPurchaseReturnService { - - /** - * 创建采购退货 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createPurchaseReturn(@Valid ErpPurchaseReturnSaveReqVO createReqVO); - - /** - * 更新采购退货 - * - * @param updateReqVO 更新信息 - */ - void updatePurchaseReturn(@Valid ErpPurchaseReturnSaveReqVO updateReqVO); - - /** - * 更新采购退货的状态 - * - * @param id 编号 - * @param status 状态 - */ - void updatePurchaseReturnStatus(Long id, Integer status); - - /** - * 更新采购退货的退款金额 - * - * @param id 编号 - * @param refundPrice 退款金额 - */ - void updatePurchaseReturnRefundPrice(Long id, BigDecimal refundPrice); - - /** - * 删除采购退货 - * - * @param ids 编号数组 - */ - void deletePurchaseReturn(List ids); - - /** - * 获得采购退货 - * - * @param id 编号 - * @return 采购退货 - */ - ErpPurchaseReturnDO getPurchaseReturn(Long id); - - /** - * 校验采购退货,已经审核通过 - * - * @param id 编号 - * @return 采购退货 - */ - ErpPurchaseReturnDO validatePurchaseReturn(Long id); - - /** - * 获得采购退货分页 - * - * @param pageReqVO 分页查询 - * @return 采购退货分页 - */ - PageResult getPurchaseReturnPage(ErpPurchaseReturnPageReqVO pageReqVO); - - // ==================== 采购退货项 ==================== - - /** - * 获得采购退货项列表 - * - * @param returnId 采购退货编号 - * @return 采购退货项列表 - */ - List getPurchaseReturnItemListByReturnId(Long returnId); - - /** - * 获得采购退货项 List - * - * @param returnIds 采购退货编号数组 - * @return 采购退货项 List - */ - List getPurchaseReturnItemListByReturnIds(Collection returnIds); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseReturnServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseReturnServiceImpl.java deleted file mode 100644 index 05960e896a..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseReturnServiceImpl.java +++ /dev/null @@ -1,304 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.purchase; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnItemDO; -import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseReturnItemMapper; -import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseReturnMapper; -import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum; -import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockRecordService; -import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; -import jakarta.annotation.Resource; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -// TODO 芋艿:记录操作日志 - -/** - * ERP 采购退货 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpPurchaseReturnServiceImpl implements ErpPurchaseReturnService { - - @Resource - private ErpPurchaseReturnMapper purchaseReturnMapper; - @Resource - private ErpPurchaseReturnItemMapper purchaseReturnItemMapper; - - @Resource - private ErpNoRedisDAO noRedisDAO; - - @Resource - private ErpProductService productService; - @Resource - @Lazy // 延迟加载,避免循环依赖 - private ErpPurchaseOrderService purchaseOrderService; - @Resource - private ErpAccountService accountService; - @Resource - private ErpStockRecordService stockRecordService; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createPurchaseReturn(ErpPurchaseReturnSaveReqVO createReqVO) { - // 1.1 校验采购订单已审核 - ErpPurchaseOrderDO purchaseOrder = purchaseOrderService.validatePurchaseOrder(createReqVO.getOrderId()); - // 1.2 校验退货项的有效性 - List purchaseReturnItems = validatePurchaseReturnItems(createReqVO.getItems()); - // 1.3 校验结算账户 - accountService.validateAccount(createReqVO.getAccountId()); - // 1.4 生成退货单号,并校验唯一性 - String no = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_RETURN_NO_PREFIX); - if (purchaseReturnMapper.selectByNo(no) != null) { - throw exception(PURCHASE_RETURN_NO_EXISTS); - } - - // 2.1 插入退货 - ErpPurchaseReturnDO purchaseReturn = BeanUtils.toBean(createReqVO, ErpPurchaseReturnDO.class, in -> in - .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus())) - .setOrderNo(purchaseOrder.getNo()).setSupplierId(purchaseOrder.getSupplierId()); - calculateTotalPrice(purchaseReturn, purchaseReturnItems); - purchaseReturnMapper.insert(purchaseReturn); - // 2.2 插入退货项 - purchaseReturnItems.forEach(o -> o.setReturnId(purchaseReturn.getId())); - purchaseReturnItemMapper.insertBatch(purchaseReturnItems); - - // 3. 更新采购订单的退货数量 - updatePurchaseOrderReturnCount(createReqVO.getOrderId()); - return purchaseReturn.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updatePurchaseReturn(ErpPurchaseReturnSaveReqVO updateReqVO) { - // 1.1 校验存在 - ErpPurchaseReturnDO purchaseReturn = validatePurchaseReturnExists(updateReqVO.getId()); - if (ErpAuditStatus.APPROVE.getStatus().equals(purchaseReturn.getStatus())) { - throw exception(PURCHASE_RETURN_UPDATE_FAIL_APPROVE, purchaseReturn.getNo()); - } - // 1.2 校验采购订单已审核 - ErpPurchaseOrderDO purchaseOrder = purchaseOrderService.validatePurchaseOrder(updateReqVO.getOrderId()); - // 1.3 校验结算账户 - accountService.validateAccount(updateReqVO.getAccountId()); - // 1.4 校验订单项的有效性 - List purchaseReturnItems = validatePurchaseReturnItems(updateReqVO.getItems()); - - // 2.1 更新退货 - ErpPurchaseReturnDO updateObj = BeanUtils.toBean(updateReqVO, ErpPurchaseReturnDO.class) - .setOrderNo(purchaseOrder.getNo()).setSupplierId(purchaseOrder.getSupplierId()); - calculateTotalPrice(updateObj, purchaseReturnItems); - purchaseReturnMapper.updateById(updateObj); - // 2.2 更新退货项 - updatePurchaseReturnItemList(updateReqVO.getId(), purchaseReturnItems); - - // 3.1 更新采购订单的出库数量 - updatePurchaseOrderReturnCount(updateObj.getOrderId()); - // 3.2 注意:如果采购订单编号变更了,需要更新“老”采购订单的出库数量 - if (ObjectUtil.notEqual(purchaseReturn.getOrderId(), updateObj.getOrderId())) { - updatePurchaseOrderReturnCount(purchaseReturn.getOrderId()); - } - } - - private void calculateTotalPrice(ErpPurchaseReturnDO purchaseReturn, List purchaseReturnItems) { - purchaseReturn.setTotalCount(getSumValue(purchaseReturnItems, ErpPurchaseReturnItemDO::getCount, BigDecimal::add)); - purchaseReturn.setTotalProductPrice(getSumValue(purchaseReturnItems, ErpPurchaseReturnItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO)); - purchaseReturn.setTotalTaxPrice(getSumValue(purchaseReturnItems, ErpPurchaseReturnItemDO::getTaxPrice, BigDecimal::add, BigDecimal.ZERO)); - purchaseReturn.setTotalPrice(purchaseReturn.getTotalProductPrice().add(purchaseReturn.getTotalTaxPrice())); - // 计算优惠价格 - if (purchaseReturn.getDiscountPercent() == null) { - purchaseReturn.setDiscountPercent(BigDecimal.ZERO); - } - purchaseReturn.setDiscountPrice(MoneyUtils.priceMultiplyPercent(purchaseReturn.getTotalPrice(), purchaseReturn.getDiscountPercent())); - purchaseReturn.setTotalPrice(purchaseReturn.getTotalPrice().subtract(purchaseReturn.getDiscountPrice().add(purchaseReturn.getOtherPrice()))); - } - - private void updatePurchaseOrderReturnCount(Long orderId) { - // 1.1 查询采购订单对应的采购出库单列表 - List purchaseReturns = purchaseReturnMapper.selectListByOrderId(orderId); - // 1.2 查询对应的采购订单项的退货数量 - Map returnCountMap = purchaseReturnItemMapper.selectOrderItemCountSumMapByReturnIds( - convertList(purchaseReturns, ErpPurchaseReturnDO::getId)); - // 2. 更新采购订单的出库数量 - purchaseOrderService.updatePurchaseOrderReturnCount(orderId, returnCountMap); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updatePurchaseReturnStatus(Long id, Integer status) { - boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status); - // 1.1 校验存在 - ErpPurchaseReturnDO purchaseReturn = validatePurchaseReturnExists(id); - // 1.2 校验状态 - if (purchaseReturn.getStatus().equals(status)) { - throw exception(approve ? PURCHASE_RETURN_APPROVE_FAIL : PURCHASE_RETURN_PROCESS_FAIL); - } - // 1.3 校验已退款 - if (approve && purchaseReturn.getRefundPrice().compareTo(BigDecimal.ZERO) > 0) { - throw exception(PURCHASE_RETURN_PROCESS_FAIL_EXISTS_REFUND); - } - - // 2. 更新状态 - int updateCount = purchaseReturnMapper.updateByIdAndStatus(id, purchaseReturn.getStatus(), - new ErpPurchaseReturnDO().setStatus(status)); - if (updateCount == 0) { - throw exception(approve ? PURCHASE_RETURN_APPROVE_FAIL : PURCHASE_RETURN_PROCESS_FAIL); - } - - // 3. 变更库存 - List purchaseReturnItems = purchaseReturnItemMapper.selectListByReturnId(id); - Integer bizType = approve ? ErpStockRecordBizTypeEnum.PURCHASE_RETURN.getType() - : ErpStockRecordBizTypeEnum.PURCHASE_RETURN_CANCEL.getType(); - purchaseReturnItems.forEach(purchaseReturnItem -> { - BigDecimal count = approve ? purchaseReturnItem.getCount().negate() : purchaseReturnItem.getCount(); - stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( - purchaseReturnItem.getProductId(), purchaseReturnItem.getWarehouseId(), count, - bizType, purchaseReturnItem.getReturnId(), purchaseReturnItem.getId(), purchaseReturn.getNo())); - }); - } - - @Override - public void updatePurchaseReturnRefundPrice(Long id, BigDecimal refundPrice) { - ErpPurchaseReturnDO purchaseReturn = purchaseReturnMapper.selectById(id); - if (purchaseReturn.getRefundPrice().equals(refundPrice)) { - return; - } - if (refundPrice.compareTo(purchaseReturn.getTotalPrice()) > 0) { - throw exception(PURCHASE_RETURN_FAIL_REFUND_PRICE_EXCEED, refundPrice, purchaseReturn.getTotalPrice()); - } - purchaseReturnMapper.updateById(new ErpPurchaseReturnDO().setId(id).setRefundPrice(refundPrice)); - } - - private List validatePurchaseReturnItems(List list) { - // 1. 校验产品存在 - List productList = productService.validProductList( - convertSet(list, ErpPurchaseReturnSaveReqVO.Item::getProductId)); - Map productMap = convertMap(productList, ErpProductDO::getId); - // 2. 转化为 ErpPurchaseReturnItemDO 列表 - return convertList(list, o -> BeanUtils.toBean(o, ErpPurchaseReturnItemDO.class, item -> { - item.setProductUnitId(productMap.get(item.getProductId()).getUnitId()); - item.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())); - if (item.getTotalPrice() == null) { - return; - } - if (item.getTaxPercent() != null) { - item.setTaxPrice(MoneyUtils.priceMultiplyPercent(item.getTotalPrice(), item.getTaxPercent())); - } - })); - } - - private void updatePurchaseReturnItemList(Long id, List newList) { - // 第一步,对比新老数据,获得添加、修改、删除的列表 - List oldList = purchaseReturnItemMapper.selectListByReturnId(id); - List> diffList = diffList(oldList, newList, // id 不同,就认为是不同的记录 - (oldVal, newVal) -> oldVal.getId().equals(newVal.getId())); - - // 第二步,批量添加、修改、删除 - if (CollUtil.isNotEmpty(diffList.get(0))) { - diffList.get(0).forEach(o -> o.setReturnId(id)); - purchaseReturnItemMapper.insertBatch(diffList.get(0)); - } - if (CollUtil.isNotEmpty(diffList.get(1))) { - purchaseReturnItemMapper.updateBatch(diffList.get(1)); - } - if (CollUtil.isNotEmpty(diffList.get(2))) { - purchaseReturnItemMapper.deleteBatchIds(convertList(diffList.get(2), ErpPurchaseReturnItemDO::getId)); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deletePurchaseReturn(List ids) { - // 1. 校验不处于已审批 - List purchaseReturns = purchaseReturnMapper.selectBatchIds(ids); - if (CollUtil.isEmpty(purchaseReturns)) { - return; - } - purchaseReturns.forEach(purchaseReturn -> { - if (ErpAuditStatus.APPROVE.getStatus().equals(purchaseReturn.getStatus())) { - throw exception(PURCHASE_RETURN_DELETE_FAIL_APPROVE, purchaseReturn.getNo()); - } - }); - - // 2. 遍历删除,并记录操作日志 - purchaseReturns.forEach(purchaseReturn -> { - // 2.1 删除订单 - purchaseReturnMapper.deleteById(purchaseReturn.getId()); - // 2.2 删除订单项 - purchaseReturnItemMapper.deleteByReturnId(purchaseReturn.getId()); - - // 2.3 更新采购订单的出库数量 - updatePurchaseOrderReturnCount(purchaseReturn.getOrderId()); - }); - - } - - private ErpPurchaseReturnDO validatePurchaseReturnExists(Long id) { - ErpPurchaseReturnDO purchaseReturn = purchaseReturnMapper.selectById(id); - if (purchaseReturn == null) { - throw exception(PURCHASE_RETURN_NOT_EXISTS); - } - return purchaseReturn; - } - - @Override - public ErpPurchaseReturnDO getPurchaseReturn(Long id) { - return purchaseReturnMapper.selectById(id); - } - - @Override - public ErpPurchaseReturnDO validatePurchaseReturn(Long id) { - ErpPurchaseReturnDO purchaseReturn = getPurchaseReturn(id); - if (ObjectUtil.notEqual(purchaseReturn.getStatus(), ErpAuditStatus.APPROVE.getStatus())) { - throw exception(PURCHASE_RETURN_NOT_APPROVE); - } - return purchaseReturn; - } - - @Override - public PageResult getPurchaseReturnPage(ErpPurchaseReturnPageReqVO pageReqVO) { - return purchaseReturnMapper.selectPage(pageReqVO); - } - - // ==================== 采购退货项 ==================== - - @Override - public List getPurchaseReturnItemListByReturnId(Long returnId) { - return purchaseReturnItemMapper.selectListByReturnId(returnId); - } - - @Override - public List getPurchaseReturnItemListByReturnIds(Collection returnIds) { - if (CollUtil.isEmpty(returnIds)) { - return Collections.emptyList(); - } - return purchaseReturnItemMapper.selectListByReturnIds(returnIds); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpSupplierService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpSupplierService.java deleted file mode 100644 index 495474d138..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpSupplierService.java +++ /dev/null @@ -1,94 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.purchase; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; - -/** - * ERP 供应商 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpSupplierService { - - /** - * 创建供应商 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createSupplier(@Valid ErpSupplierSaveReqVO createReqVO); - - /** - * 更新供应商 - * - * @param updateReqVO 更新信息 - */ - void updateSupplier(@Valid ErpSupplierSaveReqVO updateReqVO); - - /** - * 删除供应商 - * - * @param id 编号 - */ - void deleteSupplier(Long id); - - /** - * 获得供应商 - * - * @param id 编号 - * @return 供应商 - */ - ErpSupplierDO getSupplier(Long id); - - /** - * 校验供应商 - * - * @param id 编号 - * @return 供应商 - */ - ErpSupplierDO validateSupplier(Long id); - - /** - * 获得供应商列表 - * - * @param ids 编号列表 - * @return 供应商列表 - */ - List getSupplierList(Collection ids); - - /** - * 获得供应商 Map - * - * @param ids 编号列表 - * @return 供应商 Map - */ - default Map getSupplierMap(Collection ids) { - return convertMap(getSupplierList(ids), ErpSupplierDO::getId); - } - - /** - * 获得供应商分页 - * - * @param pageReqVO 分页查询 - * @return 供应商分页 - */ - PageResult getSupplierPage(ErpSupplierPageReqVO pageReqVO); - - /** - * 获得指定状态的供应商列表 - * - * @param status 状态 - * @return 供应商列表 - */ - List getSupplierListByStatus(Integer status); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpSupplierServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpSupplierServiceImpl.java deleted file mode 100644 index 1c90ff3f6f..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpSupplierServiceImpl.java +++ /dev/null @@ -1,94 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.purchase; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO; -import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpSupplierMapper; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import java.util.Collection; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -/** - * ERP 供应商 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpSupplierServiceImpl implements ErpSupplierService { - - @Resource - private ErpSupplierMapper supplierMapper; - - @Override - public Long createSupplier(ErpSupplierSaveReqVO createReqVO) { - ErpSupplierDO supplier = BeanUtils.toBean(createReqVO, ErpSupplierDO.class); - supplierMapper.insert(supplier); - return supplier.getId(); - } - - @Override - public void updateSupplier(ErpSupplierSaveReqVO updateReqVO) { - // 校验存在 - validateSupplierExists(updateReqVO.getId()); - // 更新 - ErpSupplierDO updateObj = BeanUtils.toBean(updateReqVO, ErpSupplierDO.class); - supplierMapper.updateById(updateObj); - } - - @Override - public void deleteSupplier(Long id) { - // 校验存在 - validateSupplierExists(id); - // 删除 - supplierMapper.deleteById(id); - } - - private void validateSupplierExists(Long id) { - if (supplierMapper.selectById(id) == null) { - throw exception(SUPPLIER_NOT_EXISTS); - } - } - - @Override - public ErpSupplierDO getSupplier(Long id) { - return supplierMapper.selectById(id); - } - - @Override - public ErpSupplierDO validateSupplier(Long id) { - ErpSupplierDO supplier = supplierMapper.selectById(id); - if (supplier == null) { - throw exception(SUPPLIER_NOT_EXISTS); - } - if (CommonStatusEnum.isDisable(supplier.getStatus())) { - throw exception(SUPPLIER_NOT_ENABLE, supplier.getName()); - } - return supplier; - } - - @Override - public List getSupplierList(Collection ids) { - return supplierMapper.selectBatchIds(ids); - } - - @Override - public PageResult getSupplierPage(ErpSupplierPageReqVO pageReqVO) { - return supplierMapper.selectPage(pageReqVO); - } - - @Override - public List getSupplierListByStatus(Integer status) { - return supplierMapper.selectListByStatus(status); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpCustomerService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpCustomerService.java deleted file mode 100644 index d047300e8f..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpCustomerService.java +++ /dev/null @@ -1,94 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.sale; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.customer.ErpCustomerPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.customer.ErpCustomerSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; - -/** - * ERP 客户 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpCustomerService { - - /** - * 创建客户 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createCustomer(@Valid ErpCustomerSaveReqVO createReqVO); - - /** - * 更新客户 - * - * @param updateReqVO 更新信息 - */ - void updateCustomer(@Valid ErpCustomerSaveReqVO updateReqVO); - - /** - * 删除客户 - * - * @param id 编号 - */ - void deleteCustomer(Long id); - - /** - * 获得客户 - * - * @param id 编号 - * @return 客户 - */ - ErpCustomerDO getCustomer(Long id); - - /** - * 校验客户 - * - * @param id 编号 - * @return 客户 - */ - ErpCustomerDO validateCustomer(Long id); - - /** - * 获得客户列表 - * - * @param ids 编号列表 - * @return 客户列表 - */ - List getCustomerList(Collection ids); - - /** - * 获得客户 Map - * - * @param ids 编号列表 - * @return 客户 Map - */ - default Map getCustomerMap(Collection ids) { - return convertMap(getCustomerList(ids), ErpCustomerDO::getId); - } - - /** - * 获得客户分页 - * - * @param pageReqVO 分页查询 - * @return 客户分页 - */ - PageResult getCustomerPage(ErpCustomerPageReqVO pageReqVO); - - /** - * 获得指定状态的客户列表 - * - * @param status 状态 - * @return 客户列表 - */ - List getCustomerListByStatus(Integer status); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpCustomerServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpCustomerServiceImpl.java deleted file mode 100644 index 73d2aa9d57..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpCustomerServiceImpl.java +++ /dev/null @@ -1,97 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.sale; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.customer.ErpCustomerPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.customer.ErpCustomerSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; -import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpCustomerMapper; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import java.util.Collection; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.CUSTOMER_NOT_ENABLE; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.CUSTOMER_NOT_EXISTS; - -/** - * ERP 客户 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpCustomerServiceImpl implements ErpCustomerService { - - @Resource - private ErpCustomerMapper customerMapper; - - @Override - public Long createCustomer(ErpCustomerSaveReqVO createReqVO) { - // 插入 - ErpCustomerDO customer = BeanUtils.toBean(createReqVO, ErpCustomerDO.class); - customerMapper.insert(customer); - // 返回 - return customer.getId(); - } - - @Override - public void updateCustomer(ErpCustomerSaveReqVO updateReqVO) { - // 校验存在 - validateCustomerExists(updateReqVO.getId()); - // 更新 - ErpCustomerDO updateObj = BeanUtils.toBean(updateReqVO, ErpCustomerDO.class); - customerMapper.updateById(updateObj); - } - - @Override - public void deleteCustomer(Long id) { - // 校验存在 - validateCustomerExists(id); - // 删除 - customerMapper.deleteById(id); - } - - private void validateCustomerExists(Long id) { - if (customerMapper.selectById(id) == null) { - throw exception(CUSTOMER_NOT_EXISTS); - } - } - - @Override - public ErpCustomerDO getCustomer(Long id) { - return customerMapper.selectById(id); - } - - @Override - public ErpCustomerDO validateCustomer(Long id) { - ErpCustomerDO customer = customerMapper.selectById(id); - if (customer == null) { - throw exception(CUSTOMER_NOT_EXISTS); - } - if (CommonStatusEnum.isDisable(customer.getStatus())) { - throw exception(CUSTOMER_NOT_ENABLE, customer.getName()); - } - return customer; - } - - @Override - public List getCustomerList(Collection ids) { - return customerMapper.selectBatchIds(ids); - } - - @Override - public PageResult getCustomerPage(ErpCustomerPageReqVO pageReqVO) { - return customerMapper.selectPage(pageReqVO); - } - - @Override - public List getCustomerListByStatus(Integer status) { - return customerMapper.selectListByStatus(status); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderService.java deleted file mode 100644 index c75f201f34..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderService.java +++ /dev/null @@ -1,110 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.sale; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderItemDO; -import jakarta.validation.Valid; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -/** - * ERP 销售订单 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpSaleOrderService { - - /** - * 创建销售订单 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createSaleOrder(@Valid ErpSaleOrderSaveReqVO createReqVO); - - /** - * 更新销售订单 - * - * @param updateReqVO 更新信息 - */ - void updateSaleOrder(@Valid ErpSaleOrderSaveReqVO updateReqVO); - - /** - * 更新销售订单的状态 - * - * @param id 编号 - * @param status 状态 - */ - void updateSaleOrderStatus(Long id, Integer status); - - /** - * 更新销售订单的出库数量 - * - * @param id 编号 - * @param outCountMap 出库数量 Map:key 销售订单项编号;value 出库数量 - */ - void updateSaleOrderOutCount(Long id, Map outCountMap); - - /** - * 更新销售订单的退货数量 - * - * @param orderId 编号 - * @param returnCountMap 退货数量 Map:key 销售订单项编号;value 退货数量 - */ - void updateSaleOrderReturnCount(Long orderId, Map returnCountMap); - - /** - * 删除销售订单 - * - * @param ids 编号数组 - */ - void deleteSaleOrder(List ids); - - /** - * 获得销售订单 - * - * @param id 编号 - * @return 销售订单 - */ - ErpSaleOrderDO getSaleOrder(Long id); - - /** - * 校验销售订单,已经审核通过 - * - * @param id 编号 - * @return 销售订单 - */ - ErpSaleOrderDO validateSaleOrder(Long id); - - /** - * 获得销售订单分页 - * - * @param pageReqVO 分页查询 - * @return 销售订单分页 - */ - PageResult getSaleOrderPage(ErpSaleOrderPageReqVO pageReqVO); - - // ==================== 销售订单项 ==================== - - /** - * 获得销售订单项列表 - * - * @param orderId 销售订单编号 - * @return 销售订单项列表 - */ - List getSaleOrderItemListByOrderId(Long orderId); - - /** - * 获得销售订单项 List - * - * @param orderIds 销售订单编号数组 - * @return 销售订单项 List - */ - List getSaleOrderItemListByOrderIds(Collection orderIds); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java deleted file mode 100644 index 592fe5fe76..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java +++ /dev/null @@ -1,307 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.sale; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderItemDO; -import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderItemMapper; -import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderMapper; -import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -// TODO 芋艿:记录操作日志 - -/** - * ERP 销售订单 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpSaleOrderServiceImpl implements ErpSaleOrderService { - - @Resource - private ErpSaleOrderMapper saleOrderMapper; - @Resource - private ErpSaleOrderItemMapper saleOrderItemMapper; - - @Resource - private ErpNoRedisDAO noRedisDAO; - - @Resource - private ErpProductService productService; - @Resource - private ErpCustomerService customerService; - @Resource - private ErpAccountService accountService; - - @Resource - private AdminUserApi adminUserApi; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createSaleOrder(ErpSaleOrderSaveReqVO createReqVO) { - // 1.1 校验订单项的有效性 - List saleOrderItems = validateSaleOrderItems(createReqVO.getItems()); - // 1.2 校验客户 - customerService.validateCustomer(createReqVO.getCustomerId()); - // 1.3 校验结算账户 - if (createReqVO.getAccountId() != null) { - accountService.validateAccount(createReqVO.getAccountId()); - } - // 1.4 校验销售人员 - if (createReqVO.getSaleUserId() != null) { - adminUserApi.validateUser(createReqVO.getSaleUserId()); - } - // 1.5 生成订单号,并校验唯一性 - String no = noRedisDAO.generate(ErpNoRedisDAO.SALE_ORDER_NO_PREFIX); - if (saleOrderMapper.selectByNo(no) != null) { - throw exception(SALE_ORDER_NO_EXISTS); - } - - // 2.1 插入订单 - ErpSaleOrderDO saleOrder = BeanUtils.toBean(createReqVO, ErpSaleOrderDO.class, in -> in - .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus())); - calculateTotalPrice(saleOrder, saleOrderItems); - saleOrderMapper.insert(saleOrder); - // 2.2 插入订单项 - saleOrderItems.forEach(o -> o.setOrderId(saleOrder.getId())); - saleOrderItemMapper.insertBatch(saleOrderItems); - return saleOrder.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateSaleOrder(ErpSaleOrderSaveReqVO updateReqVO) { - // 1.1 校验存在 - ErpSaleOrderDO saleOrder = validateSaleOrderExists(updateReqVO.getId()); - if (ErpAuditStatus.APPROVE.getStatus().equals(saleOrder.getStatus())) { - throw exception(SALE_ORDER_UPDATE_FAIL_APPROVE, saleOrder.getNo()); - } - // 1.2 校验客户 - customerService.validateCustomer(updateReqVO.getCustomerId()); - // 1.3 校验结算账户 - if (updateReqVO.getAccountId() != null) { - accountService.validateAccount(updateReqVO.getAccountId()); - } - // 1.4 校验销售人员 - if (updateReqVO.getSaleUserId() != null) { - adminUserApi.validateUser(updateReqVO.getSaleUserId()); - } - // 1.5 校验订单项的有效性 - List saleOrderItems = validateSaleOrderItems(updateReqVO.getItems()); - - // 2.1 更新订单 - ErpSaleOrderDO updateObj = BeanUtils.toBean(updateReqVO, ErpSaleOrderDO.class); - calculateTotalPrice(updateObj, saleOrderItems); - saleOrderMapper.updateById(updateObj); - // 2.2 更新订单项 - updateSaleOrderItemList(updateReqVO.getId(), saleOrderItems); - } - - private void calculateTotalPrice(ErpSaleOrderDO saleOrder, List saleOrderItems) { - saleOrder.setTotalCount(getSumValue(saleOrderItems, ErpSaleOrderItemDO::getCount, BigDecimal::add)); - saleOrder.setTotalProductPrice(getSumValue(saleOrderItems, ErpSaleOrderItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO)); - saleOrder.setTotalTaxPrice(getSumValue(saleOrderItems, ErpSaleOrderItemDO::getTaxPrice, BigDecimal::add, BigDecimal.ZERO)); - saleOrder.setTotalPrice(saleOrder.getTotalProductPrice().add(saleOrder.getTotalTaxPrice())); - // 计算优惠价格 - if (saleOrder.getDiscountPercent() == null) { - saleOrder.setDiscountPercent(BigDecimal.ZERO); - } - saleOrder.setDiscountPrice(MoneyUtils.priceMultiplyPercent(saleOrder.getTotalPrice(), saleOrder.getDiscountPercent())); - saleOrder.setTotalPrice(saleOrder.getTotalPrice().subtract(saleOrder.getDiscountPrice())); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateSaleOrderStatus(Long id, Integer status) { - boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status); - // 1.1 校验存在 - ErpSaleOrderDO saleOrder = validateSaleOrderExists(id); - // 1.2 校验状态 - if (saleOrder.getStatus().equals(status)) { - throw exception(approve ? SALE_ORDER_APPROVE_FAIL : SALE_ORDER_PROCESS_FAIL); - } - // 1.3 存在销售出库单,无法反审核 - if (!approve && saleOrder.getOutCount().compareTo(BigDecimal.ZERO) > 0) { - throw exception(SALE_ORDER_PROCESS_FAIL_EXISTS_OUT); - } - // 1.4 存在销售退货单,无法反审核 - if (!approve && saleOrder.getReturnCount().compareTo(BigDecimal.ZERO) > 0) { - throw exception(SALE_ORDER_PROCESS_FAIL_EXISTS_RETURN); - } - - // 2. 更新状态 - int updateCount = saleOrderMapper.updateByIdAndStatus(id, saleOrder.getStatus(), - new ErpSaleOrderDO().setStatus(status)); - if (updateCount == 0) { - throw exception(approve ? SALE_ORDER_APPROVE_FAIL : SALE_ORDER_PROCESS_FAIL); - } - } - - private List validateSaleOrderItems(List list) { - // 1. 校验产品存在 - List productList = productService.validProductList( - convertSet(list, ErpSaleOrderSaveReqVO.Item::getProductId)); - Map productMap = convertMap(productList, ErpProductDO::getId); - // 2. 转化为 ErpSaleOrderItemDO 列表 - return convertList(list, o -> BeanUtils.toBean(o, ErpSaleOrderItemDO.class, item -> { - item.setProductUnitId(productMap.get(item.getProductId()).getUnitId()); - item.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())); - if (item.getTotalPrice() == null) { - return; - } - if (item.getTaxPercent() != null) { - item.setTaxPrice(MoneyUtils.priceMultiplyPercent(item.getTotalPrice(), item.getTaxPercent())); - } - })); - } - - private void updateSaleOrderItemList(Long id, List newList) { - // 第一步,对比新老数据,获得添加、修改、删除的列表 - List oldList = saleOrderItemMapper.selectListByOrderId(id); - List> diffList = diffList(oldList, newList, // id 不同,就认为是不同的记录 - (oldVal, newVal) -> oldVal.getId().equals(newVal.getId())); - - // 第二步,批量添加、修改、删除 - if (CollUtil.isNotEmpty(diffList.get(0))) { - diffList.get(0).forEach(o -> o.setOrderId(id)); - saleOrderItemMapper.insertBatch(diffList.get(0)); - } - if (CollUtil.isNotEmpty(diffList.get(1))) { - saleOrderItemMapper.updateBatch(diffList.get(1)); - } - if (CollUtil.isNotEmpty(diffList.get(2))) { - saleOrderItemMapper.deleteBatchIds(convertList(diffList.get(2), ErpSaleOrderItemDO::getId)); - } - } - - @Override - public void updateSaleOrderOutCount(Long id, Map outCountMap) { - List orderItems = saleOrderItemMapper.selectListByOrderId(id); - // 1. 更新每个销售订单项 - orderItems.forEach(item -> { - BigDecimal outCount = outCountMap.getOrDefault(item.getId(), BigDecimal.ZERO); - if (item.getOutCount().equals(outCount)) { - return; - } - if (outCount.compareTo(item.getCount()) > 0) { - throw exception(SALE_ORDER_ITEM_OUT_FAIL_PRODUCT_EXCEED, - productService.getProduct(item.getProductId()).getName(), item.getCount()); - } - saleOrderItemMapper.updateById(new ErpSaleOrderItemDO().setId(item.getId()).setOutCount(outCount)); - }); - // 2. 更新销售订单 - BigDecimal totalOutCount = getSumValue(outCountMap.values(), value -> value, BigDecimal::add, BigDecimal.ZERO); - saleOrderMapper.updateById(new ErpSaleOrderDO().setId(id).setOutCount(totalOutCount)); - } - - @Override - public void updateSaleOrderReturnCount(Long orderId, Map returnCountMap) { - List orderItems = saleOrderItemMapper.selectListByOrderId(orderId); - // 1. 更新每个销售订单项 - orderItems.forEach(item -> { - BigDecimal returnCount = returnCountMap.getOrDefault(item.getId(), BigDecimal.ZERO); - if (item.getReturnCount().equals(returnCount)) { - return; - } - if (returnCount.compareTo(item.getOutCount()) > 0) { - throw exception(SALE_ORDER_ITEM_RETURN_FAIL_OUT_EXCEED, - productService.getProduct(item.getProductId()).getName(), item.getOutCount()); - } - saleOrderItemMapper.updateById(new ErpSaleOrderItemDO().setId(item.getId()).setReturnCount(returnCount)); - }); - // 2. 更新销售订单 - BigDecimal totalReturnCount = getSumValue(returnCountMap.values(), value -> value, BigDecimal::add, BigDecimal.ZERO); - saleOrderMapper.updateById(new ErpSaleOrderDO().setId(orderId).setReturnCount(totalReturnCount)); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteSaleOrder(List ids) { - // 1. 校验不处于已审批 - List saleOrders = saleOrderMapper.selectBatchIds(ids); - if (CollUtil.isEmpty(saleOrders)) { - return; - } - saleOrders.forEach(saleOrder -> { - if (ErpAuditStatus.APPROVE.getStatus().equals(saleOrder.getStatus())) { - throw exception(SALE_ORDER_DELETE_FAIL_APPROVE, saleOrder.getNo()); - } - }); - - // 2. 遍历删除,并记录操作日志 - saleOrders.forEach(saleOrder -> { - // 2.1 删除订单 - saleOrderMapper.deleteById(saleOrder.getId()); - // 2.2 删除订单项 - saleOrderItemMapper.deleteByOrderId(saleOrder.getId()); - }); - } - - private ErpSaleOrderDO validateSaleOrderExists(Long id) { - ErpSaleOrderDO saleOrder = saleOrderMapper.selectById(id); - if (saleOrder == null) { - throw exception(SALE_ORDER_NOT_EXISTS); - } - return saleOrder; - } - - @Override - public ErpSaleOrderDO getSaleOrder(Long id) { - return saleOrderMapper.selectById(id); - } - - @Override - public ErpSaleOrderDO validateSaleOrder(Long id) { - ErpSaleOrderDO saleOrder = validateSaleOrderExists(id); - if (ObjectUtil.notEqual(saleOrder.getStatus(), ErpAuditStatus.APPROVE.getStatus())) { - throw exception(SALE_ORDER_NOT_APPROVE); - } - return saleOrder; - } - - @Override - public PageResult getSaleOrderPage(ErpSaleOrderPageReqVO pageReqVO) { - return saleOrderMapper.selectPage(pageReqVO); - } - - // ==================== 订单项 ==================== - - @Override - public List getSaleOrderItemListByOrderId(Long orderId) { - return saleOrderItemMapper.selectListByOrderId(orderId); - } - - @Override - public List getSaleOrderItemListByOrderIds(Collection orderIds) { - if (CollUtil.isEmpty(orderIds)) { - return Collections.emptyList(); - } - return saleOrderItemMapper.selectListByOrderIds(orderIds); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOutService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOutService.java deleted file mode 100644 index 616f77837f..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOutService.java +++ /dev/null @@ -1,102 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.sale; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutItemDO; -import jakarta.validation.Valid; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.List; - -/** - * ERP 销售出库 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpSaleOutService { - - /** - * 创建销售出库 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createSaleOut(@Valid ErpSaleOutSaveReqVO createReqVO); - - /** - * 更新销售出库 - * - * @param updateReqVO 更新信息 - */ - void updateSaleOut(@Valid ErpSaleOutSaveReqVO updateReqVO); - - /** - * 更新销售出库的状态 - * - * @param id 编号 - * @param status 状态 - */ - void updateSaleOutStatus(Long id, Integer status); - - /** - * 更新销售出库的收款金额 - * - * @param id 编号 - * @param receiptPrice 收款金额 - */ - void updateSaleInReceiptPrice(Long id, BigDecimal receiptPrice); - - /** - * 删除销售出库 - * - * @param ids 编号数组 - */ - void deleteSaleOut(List ids); - - /** - * 获得销售出库 - * - * @param id 编号 - * @return 销售出库 - */ - ErpSaleOutDO getSaleOut(Long id); - - /** - * 校验销售出库,已经审核通过 - * - * @param id 编号 - * @return 销售出库 - */ - ErpSaleOutDO validateSaleOut(Long id); - - /** - * 获得销售出库分页 - * - * @param pageReqVO 分页查询 - * @return 销售出库分页 - */ - PageResult getSaleOutPage(ErpSaleOutPageReqVO pageReqVO); - - // ==================== 销售出库项 ==================== - - /** - * 获得销售出库项列表 - * - * @param outId 销售出库编号 - * @return 销售出库项列表 - */ - List getSaleOutItemListByOutId(Long outId); - - /** - * 获得销售出库项 List - * - * @param outIds 销售出库编号数组 - * @return 销售出库项 List - */ - List getSaleOutItemListByOutIds(Collection outIds); - - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOutServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOutServiceImpl.java deleted file mode 100644 index d930c16bf4..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOutServiceImpl.java +++ /dev/null @@ -1,316 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.sale; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutItemDO; -import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOutItemMapper; -import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOutMapper; -import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum; -import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockRecordService; -import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import jakarta.annotation.Resource; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -// TODO 芋艿:记录操作日志 - -/** - * ERP 销售出库 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpSaleOutServiceImpl implements ErpSaleOutService { - - @Resource - private ErpSaleOutMapper saleOutMapper; - @Resource - private ErpSaleOutItemMapper saleOutItemMapper; - - @Resource - private ErpNoRedisDAO noRedisDAO; - - @Resource - private ErpProductService productService; - @Resource - @Lazy // 延迟加载,避免循环依赖 - private ErpSaleOrderService saleOrderService; - @Resource - private ErpAccountService accountService; - @Resource - private ErpStockRecordService stockRecordService; - - @Resource - private AdminUserApi adminUserApi; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createSaleOut(ErpSaleOutSaveReqVO createReqVO) { - // 1.1 校验销售订单已审核 - ErpSaleOrderDO saleOrder = saleOrderService.validateSaleOrder(createReqVO.getOrderId()); - // 1.2 校验出库项的有效性 - List saleOutItems = validateSaleOutItems(createReqVO.getItems()); - // 1.3 校验结算账户 - accountService.validateAccount(createReqVO.getAccountId()); - // 1.4 校验销售人员 - if (createReqVO.getSaleUserId() != null) { - adminUserApi.validateUser(createReqVO.getSaleUserId()); - } - // 1.5 生成出库单号,并校验唯一性 - String no = noRedisDAO.generate(ErpNoRedisDAO.SALE_OUT_NO_PREFIX); - if (saleOutMapper.selectByNo(no) != null) { - throw exception(SALE_OUT_NO_EXISTS); - } - - // 2.1 插入出库 - ErpSaleOutDO saleOut = BeanUtils.toBean(createReqVO, ErpSaleOutDO.class, in -> in - .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus())) - .setOrderNo(saleOrder.getNo()).setCustomerId(saleOrder.getCustomerId()); - calculateTotalPrice(saleOut, saleOutItems); - saleOutMapper.insert(saleOut); - // 2.2 插入出库项 - saleOutItems.forEach(o -> o.setOutId(saleOut.getId())); - saleOutItemMapper.insertBatch(saleOutItems); - - // 3. 更新销售订单的出库数量 - updateSaleOrderOutCount(createReqVO.getOrderId()); - return saleOut.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateSaleOut(ErpSaleOutSaveReqVO updateReqVO) { - // 1.1 校验存在 - ErpSaleOutDO saleOut = validateSaleOutExists(updateReqVO.getId()); - if (ErpAuditStatus.APPROVE.getStatus().equals(saleOut.getStatus())) { - throw exception(SALE_OUT_UPDATE_FAIL_APPROVE, saleOut.getNo()); - } - // 1.2 校验销售订单已审核 - ErpSaleOrderDO saleOrder = saleOrderService.validateSaleOrder(updateReqVO.getOrderId()); - // 1.3 校验结算账户 - accountService.validateAccount(updateReqVO.getAccountId()); - // 1.4 校验销售人员 - if (updateReqVO.getSaleUserId() != null) { - adminUserApi.validateUser(updateReqVO.getSaleUserId()); - } - // 1.5 校验订单项的有效性 - List saleOutItems = validateSaleOutItems(updateReqVO.getItems()); - - // 2.1 更新出库 - ErpSaleOutDO updateObj = BeanUtils.toBean(updateReqVO, ErpSaleOutDO.class) - .setOrderNo(saleOrder.getNo()).setCustomerId(saleOrder.getCustomerId()); - calculateTotalPrice(updateObj, saleOutItems); - saleOutMapper.updateById(updateObj); - // 2.2 更新出库项 - updateSaleOutItemList(updateReqVO.getId(), saleOutItems); - - // 3.1 更新销售订单的出库数量 - updateSaleOrderOutCount(updateObj.getOrderId()); - // 3.2 注意:如果销售订单编号变更了,需要更新“老”销售订单的出库数量 - if (ObjectUtil.notEqual(saleOut.getOrderId(), updateObj.getOrderId())) { - updateSaleOrderOutCount(saleOut.getOrderId()); - } - } - - private void calculateTotalPrice(ErpSaleOutDO saleOut, List saleOutItems) { - saleOut.setTotalCount(getSumValue(saleOutItems, ErpSaleOutItemDO::getCount, BigDecimal::add)); - saleOut.setTotalProductPrice(getSumValue(saleOutItems, ErpSaleOutItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO)); - saleOut.setTotalTaxPrice(getSumValue(saleOutItems, ErpSaleOutItemDO::getTaxPrice, BigDecimal::add, BigDecimal.ZERO)); - saleOut.setTotalPrice(saleOut.getTotalProductPrice().add(saleOut.getTotalTaxPrice())); - // 计算优惠价格 - if (saleOut.getDiscountPercent() == null) { - saleOut.setDiscountPercent(BigDecimal.ZERO); - } - saleOut.setDiscountPrice(MoneyUtils.priceMultiplyPercent(saleOut.getTotalPrice(), saleOut.getDiscountPercent())); - saleOut.setTotalPrice(saleOut.getTotalPrice().subtract(saleOut.getDiscountPrice().add(saleOut.getOtherPrice()))); - } - - private void updateSaleOrderOutCount(Long orderId) { - // 1.1 查询销售订单对应的销售出库单列表 - List saleOuts = saleOutMapper.selectListByOrderId(orderId); - // 1.2 查询对应的销售订单项的出库数量 - Map returnCountMap = saleOutItemMapper.selectOrderItemCountSumMapByOutIds( - convertList(saleOuts, ErpSaleOutDO::getId)); - // 2. 更新销售订单的出库数量 - saleOrderService.updateSaleOrderOutCount(orderId, returnCountMap); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateSaleOutStatus(Long id, Integer status) { - boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status); - // 1.1 校验存在 - ErpSaleOutDO saleOut = validateSaleOutExists(id); - // 1.2 校验状态 - if (saleOut.getStatus().equals(status)) { - throw exception(approve ? SALE_OUT_APPROVE_FAIL : SALE_OUT_PROCESS_FAIL); - } - // 1.3 校验已退款 - if (approve && saleOut.getReceiptPrice().compareTo(BigDecimal.ZERO) > 0) { - throw exception(SALE_OUT_PROCESS_FAIL_EXISTS_RECEIPT); - } - - // 2. 更新状态 - int updateCount = saleOutMapper.updateByIdAndStatus(id, saleOut.getStatus(), - new ErpSaleOutDO().setStatus(status)); - if (updateCount == 0) { - throw exception(approve ? SALE_OUT_APPROVE_FAIL : SALE_OUT_PROCESS_FAIL); - } - - // 3. 变更库存 - List saleOutItems = saleOutItemMapper.selectListByOutId(id); - Integer bizType = approve ? ErpStockRecordBizTypeEnum.SALE_OUT.getType() - : ErpStockRecordBizTypeEnum.SALE_OUT_CANCEL.getType(); - saleOutItems.forEach(saleOutItem -> { - BigDecimal count = approve ? saleOutItem.getCount().negate() : saleOutItem.getCount(); - stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( - saleOutItem.getProductId(), saleOutItem.getWarehouseId(), count, - bizType, saleOutItem.getOutId(), saleOutItem.getId(), saleOut.getNo())); - }); - } - - @Override - public void updateSaleInReceiptPrice(Long id, BigDecimal receiptPrice) { - ErpSaleOutDO saleOut = saleOutMapper.selectById(id); - if (saleOut.getReceiptPrice().equals(receiptPrice)) { - return; - } - if (receiptPrice.compareTo(saleOut.getTotalPrice()) > 0) { - throw exception(SALE_OUT_FAIL_RECEIPT_PRICE_EXCEED, receiptPrice, saleOut.getTotalPrice()); - } - saleOutMapper.updateById(new ErpSaleOutDO().setId(id).setReceiptPrice(receiptPrice)); - } - - private List validateSaleOutItems(List list) { - // 1. 校验产品存在 - List productList = productService.validProductList( - convertSet(list, ErpSaleOutSaveReqVO.Item::getProductId)); - Map productMap = convertMap(productList, ErpProductDO::getId); - // 2. 转化为 ErpSaleOutItemDO 列表 - return convertList(list, o -> BeanUtils.toBean(o, ErpSaleOutItemDO.class, item -> { - item.setProductUnitId(productMap.get(item.getProductId()).getUnitId()); - item.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())); - if (item.getTotalPrice() == null) { - return; - } - if (item.getTaxPercent() != null) { - item.setTaxPrice(MoneyUtils.priceMultiplyPercent(item.getTotalPrice(), item.getTaxPercent())); - } - })); - } - - private void updateSaleOutItemList(Long id, List newList) { - // 第一步,对比新老数据,获得添加、修改、删除的列表 - List oldList = saleOutItemMapper.selectListByOutId(id); - List> diffList = diffList(oldList, newList, // id 不同,就认为是不同的记录 - (oldVal, newVal) -> oldVal.getId().equals(newVal.getId())); - - // 第二步,批量添加、修改、删除 - if (CollUtil.isNotEmpty(diffList.get(0))) { - diffList.get(0).forEach(o -> o.setOutId(id)); - saleOutItemMapper.insertBatch(diffList.get(0)); - } - if (CollUtil.isNotEmpty(diffList.get(1))) { - saleOutItemMapper.updateBatch(diffList.get(1)); - } - if (CollUtil.isNotEmpty(diffList.get(2))) { - saleOutItemMapper.deleteBatchIds(convertList(diffList.get(2), ErpSaleOutItemDO::getId)); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteSaleOut(List ids) { - // 1. 校验不处于已审批 - List saleOuts = saleOutMapper.selectBatchIds(ids); - if (CollUtil.isEmpty(saleOuts)) { - return; - } - saleOuts.forEach(saleOut -> { - if (ErpAuditStatus.APPROVE.getStatus().equals(saleOut.getStatus())) { - throw exception(SALE_OUT_DELETE_FAIL_APPROVE, saleOut.getNo()); - } - }); - - // 2. 遍历删除,并记录操作日志 - saleOuts.forEach(saleOut -> { - // 2.1 删除订单 - saleOutMapper.deleteById(saleOut.getId()); - // 2.2 删除订单项 - saleOutItemMapper.deleteByOutId(saleOut.getId()); - - // 2.3 更新销售订单的出库数量 - updateSaleOrderOutCount(saleOut.getOrderId()); - }); - - } - - private ErpSaleOutDO validateSaleOutExists(Long id) { - ErpSaleOutDO saleOut = saleOutMapper.selectById(id); - if (saleOut == null) { - throw exception(SALE_OUT_NOT_EXISTS); - } - return saleOut; - } - - @Override - public ErpSaleOutDO getSaleOut(Long id) { - return saleOutMapper.selectById(id); - } - - @Override - public ErpSaleOutDO validateSaleOut(Long id) { - ErpSaleOutDO saleOut = validateSaleOutExists(id); - if (ObjectUtil.notEqual(saleOut.getStatus(), ErpAuditStatus.APPROVE.getStatus())) { - throw exception(SALE_OUT_NOT_APPROVE); - } - return saleOut; - } - - @Override - public PageResult getSaleOutPage(ErpSaleOutPageReqVO pageReqVO) { - return saleOutMapper.selectPage(pageReqVO); - } - - // ==================== 销售出库项 ==================== - - @Override - public List getSaleOutItemListByOutId(Long outId) { - return saleOutItemMapper.selectListByOutId(outId); - } - - @Override - public List getSaleOutItemListByOutIds(Collection outIds) { - if (CollUtil.isEmpty(outIds)) { - return Collections.emptyList(); - } - return saleOutItemMapper.selectListByOutIds(outIds); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleReturnService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleReturnService.java deleted file mode 100644 index bc192a17ce..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleReturnService.java +++ /dev/null @@ -1,101 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.sale; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnItemDO; -import jakarta.validation.Valid; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.List; - -/** - * ERP 销售退货 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpSaleReturnService { - - /** - * 创建销售退货 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createSaleReturn(@Valid ErpSaleReturnSaveReqVO createReqVO); - - /** - * 更新销售退货 - * - * @param updateReqVO 更新信息 - */ - void updateSaleReturn(@Valid ErpSaleReturnSaveReqVO updateReqVO); - - /** - * 更新销售退货的状态 - * - * @param id 编号 - * @param status 状态 - */ - void updateSaleReturnStatus(Long id, Integer status); - - /** - * 更新销售退货的退款金额 - * - * @param id 编号 - * @param refundPrice 退款金额 - */ - void updateSaleReturnRefundPrice(Long id, BigDecimal refundPrice); - - /** - * 删除销售退货 - * - * @param ids 编号数组 - */ - void deleteSaleReturn(List ids); - - /** - * 获得销售退货 - * - * @param id 编号 - * @return 销售退货 - */ - ErpSaleReturnDO getSaleReturn(Long id); - - /** - * 校验销售退货,已经审核通过 - * - * @param id 编号 - * @return 销售退货 - */ - ErpSaleReturnDO validateSaleReturn(Long id); - - /** - * 获得销售退货分页 - * - * @param pageReqVO 分页查询 - * @return 销售退货分页 - */ - PageResult getSaleReturnPage(ErpSaleReturnPageReqVO pageReqVO); - - // ==================== 销售退货项 ==================== - - /** - * 获得销售退货项列表 - * - * @param returnId 销售退货编号 - * @return 销售退货项列表 - */ - List getSaleReturnItemListByReturnId(Long returnId); - - /** - * 获得销售退货项 List - * - * @param returnIds 销售退货编号数组 - * @return 销售退货项 List - */ - List getSaleReturnItemListByReturnIds(Collection returnIds); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleReturnServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleReturnServiceImpl.java deleted file mode 100644 index 85d798e728..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleReturnServiceImpl.java +++ /dev/null @@ -1,316 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.sale; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnItemDO; -import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleReturnItemMapper; -import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleReturnMapper; -import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum; -import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.stock.ErpStockRecordService; -import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import jakarta.annotation.Resource; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -// TODO 芋艿:记录操作日志 - -/** - * ERP 销售退货 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpSaleReturnServiceImpl implements ErpSaleReturnService { - - @Resource - private ErpSaleReturnMapper saleReturnMapper; - @Resource - private ErpSaleReturnItemMapper saleReturnItemMapper; - - @Resource - private ErpNoRedisDAO noRedisDAO; - - @Resource - private ErpProductService productService; - @Resource - @Lazy // 延迟加载,避免循环依赖 - private ErpSaleOrderService saleOrderService; - @Resource - private ErpAccountService accountService; - @Resource - private ErpStockRecordService stockRecordService; - - @Resource - private AdminUserApi adminUserApi; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createSaleReturn(ErpSaleReturnSaveReqVO createReqVO) { - // 1.1 校验销售订单已审核 - ErpSaleOrderDO saleOrder = saleOrderService.validateSaleOrder(createReqVO.getOrderId()); - // 1.2 校验退货项的有效性 - List saleReturnItems = validateSaleReturnItems(createReqVO.getItems()); - // 1.3 校验结算账户 - accountService.validateAccount(createReqVO.getAccountId()); - // 1.4 校验销售人员 - if (createReqVO.getSaleUserId() != null) { - adminUserApi.validateUser(createReqVO.getSaleUserId()); - } - // 1.5 生成退货单号,并校验唯一性 - String no = noRedisDAO.generate(ErpNoRedisDAO.SALE_RETURN_NO_PREFIX); - if (saleReturnMapper.selectByNo(no) != null) { - throw exception(SALE_RETURN_NO_EXISTS); - } - - // 2.1 插入退货 - ErpSaleReturnDO saleReturn = BeanUtils.toBean(createReqVO, ErpSaleReturnDO.class, in -> in - .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus())) - .setOrderNo(saleOrder.getNo()).setCustomerId(saleOrder.getCustomerId()); - calculateTotalPrice(saleReturn, saleReturnItems); - saleReturnMapper.insert(saleReturn); - // 2.2 插入退货项 - saleReturnItems.forEach(o -> o.setReturnId(saleReturn.getId())); - saleReturnItemMapper.insertBatch(saleReturnItems); - - // 3. 更新销售订单的退货数量 - updateSaleOrderReturnCount(createReqVO.getOrderId()); - return saleReturn.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateSaleReturn(ErpSaleReturnSaveReqVO updateReqVO) { - // 1.1 校验存在 - ErpSaleReturnDO saleReturn = validateSaleReturnExists(updateReqVO.getId()); - if (ErpAuditStatus.APPROVE.getStatus().equals(saleReturn.getStatus())) { - throw exception(SALE_RETURN_UPDATE_FAIL_APPROVE, saleReturn.getNo()); - } - // 1.2 校验销售订单已审核 - ErpSaleOrderDO saleOrder = saleOrderService.validateSaleOrder(updateReqVO.getOrderId()); - // 1.3 校验结算账户 - accountService.validateAccount(updateReqVO.getAccountId()); - // 1.4 校验销售人员 - if (updateReqVO.getSaleUserId() != null) { - adminUserApi.validateUser(updateReqVO.getSaleUserId()); - } - // 1.5 校验订单项的有效性 - List saleReturnItems = validateSaleReturnItems(updateReqVO.getItems()); - - // 2.1 更新退货 - ErpSaleReturnDO updateObj = BeanUtils.toBean(updateReqVO, ErpSaleReturnDO.class) - .setOrderNo(saleOrder.getNo()).setCustomerId(saleOrder.getCustomerId()); - calculateTotalPrice(updateObj, saleReturnItems); - saleReturnMapper.updateById(updateObj); - // 2.2 更新退货项 - updateSaleReturnItemList(updateReqVO.getId(), saleReturnItems); - - // 3.1 更新销售订单的出库数量 - updateSaleOrderReturnCount(updateObj.getOrderId()); - // 3.2 注意:如果销售订单编号变更了,需要更新“老”销售订单的出库数量 - if (ObjectUtil.notEqual(saleReturn.getOrderId(), updateObj.getOrderId())) { - updateSaleOrderReturnCount(saleReturn.getOrderId()); - } - } - - private void calculateTotalPrice(ErpSaleReturnDO saleReturn, List saleReturnItems) { - saleReturn.setTotalCount(getSumValue(saleReturnItems, ErpSaleReturnItemDO::getCount, BigDecimal::add)); - saleReturn.setTotalProductPrice(getSumValue(saleReturnItems, ErpSaleReturnItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO)); - saleReturn.setTotalTaxPrice(getSumValue(saleReturnItems, ErpSaleReturnItemDO::getTaxPrice, BigDecimal::add, BigDecimal.ZERO)); - saleReturn.setTotalPrice(saleReturn.getTotalProductPrice().add(saleReturn.getTotalTaxPrice())); - // 计算优惠价格 - if (saleReturn.getDiscountPercent() == null) { - saleReturn.setDiscountPercent(BigDecimal.ZERO); - } - saleReturn.setDiscountPrice(MoneyUtils.priceMultiplyPercent(saleReturn.getTotalPrice(), saleReturn.getDiscountPercent())); - saleReturn.setTotalPrice(saleReturn.getTotalPrice().subtract(saleReturn.getDiscountPrice().add(saleReturn.getOtherPrice()))); - } - - private void updateSaleOrderReturnCount(Long orderId) { - // 1.1 查询销售订单对应的销售出库单列表 - List saleReturns = saleReturnMapper.selectListByOrderId(orderId); - // 1.2 查询对应的销售订单项的退货数量 - Map returnCountMap = saleReturnItemMapper.selectOrderItemCountSumMapByReturnIds( - convertList(saleReturns, ErpSaleReturnDO::getId)); - // 2. 更新销售订单的出库数量 - saleOrderService.updateSaleOrderReturnCount(orderId, returnCountMap); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateSaleReturnStatus(Long id, Integer status) { - boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status); - // 1.1 校验存在 - ErpSaleReturnDO saleReturn = validateSaleReturnExists(id); - // 1.2 校验状态 - if (saleReturn.getStatus().equals(status)) { - throw exception(approve ? SALE_RETURN_APPROVE_FAIL : SALE_RETURN_PROCESS_FAIL); - } - // 1.3 校验已退款 - if (approve && saleReturn.getRefundPrice().compareTo(BigDecimal.ZERO) > 0) { - throw exception(SALE_RETURN_PROCESS_FAIL_EXISTS_REFUND); - } - - // 2. 更新状态 - int updateCount = saleReturnMapper.updateByIdAndStatus(id, saleReturn.getStatus(), - new ErpSaleReturnDO().setStatus(status)); - if (updateCount == 0) { - throw exception(approve ? SALE_RETURN_APPROVE_FAIL : SALE_RETURN_PROCESS_FAIL); - } - - // 3. 变更库存 - List saleReturnItems = saleReturnItemMapper.selectListByReturnId(id); - Integer bizType = approve ? ErpStockRecordBizTypeEnum.SALE_RETURN.getType() - : ErpStockRecordBizTypeEnum.SALE_RETURN_CANCEL.getType(); - saleReturnItems.forEach(saleReturnItem -> { - BigDecimal count = approve ? saleReturnItem.getCount() : saleReturnItem.getCount().negate(); - stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( - saleReturnItem.getProductId(), saleReturnItem.getWarehouseId(), count, - bizType, saleReturnItem.getReturnId(), saleReturnItem.getId(), saleReturn.getNo())); - }); - } - - @Override - public void updateSaleReturnRefundPrice(Long id, BigDecimal refundPrice) { - ErpSaleReturnDO saleReturn = saleReturnMapper.selectById(id); - if (saleReturn.getRefundPrice().equals(refundPrice)) { - return; - } - if (refundPrice.compareTo(saleReturn.getTotalPrice()) > 0) { - throw exception(SALE_RETURN_FAIL_REFUND_PRICE_EXCEED, refundPrice, saleReturn.getTotalPrice()); - } - saleReturnMapper.updateById(new ErpSaleReturnDO().setId(id).setRefundPrice(refundPrice)); - } - - private List validateSaleReturnItems(List list) { - // 1. 校验产品存在 - List productList = productService.validProductList( - convertSet(list, ErpSaleReturnSaveReqVO.Item::getProductId)); - Map productMap = convertMap(productList, ErpProductDO::getId); - // 2. 转化为 ErpSaleReturnItemDO 列表 - return convertList(list, o -> BeanUtils.toBean(o, ErpSaleReturnItemDO.class, item -> { - item.setProductUnitId(productMap.get(item.getProductId()).getUnitId()); - item.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())); - if (item.getTotalPrice() == null) { - return; - } - if (item.getTaxPercent() != null) { - item.setTaxPrice(MoneyUtils.priceMultiplyPercent(item.getTotalPrice(), item.getTaxPercent())); - } - })); - } - - private void updateSaleReturnItemList(Long id, List newList) { - // 第一步,对比新老数据,获得添加、修改、删除的列表 - List oldList = saleReturnItemMapper.selectListByReturnId(id); - List> diffList = diffList(oldList, newList, // id 不同,就认为是不同的记录 - (oldVal, newVal) -> oldVal.getId().equals(newVal.getId())); - - // 第二步,批量添加、修改、删除 - if (CollUtil.isNotEmpty(diffList.get(0))) { - diffList.get(0).forEach(o -> o.setReturnId(id)); - saleReturnItemMapper.insertBatch(diffList.get(0)); - } - if (CollUtil.isNotEmpty(diffList.get(1))) { - saleReturnItemMapper.updateBatch(diffList.get(1)); - } - if (CollUtil.isNotEmpty(diffList.get(2))) { - saleReturnItemMapper.deleteBatchIds(convertList(diffList.get(2), ErpSaleReturnItemDO::getId)); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteSaleReturn(List ids) { - // 1. 校验不处于已审批 - List saleReturns = saleReturnMapper.selectBatchIds(ids); - if (CollUtil.isEmpty(saleReturns)) { - return; - } - saleReturns.forEach(saleReturn -> { - if (ErpAuditStatus.APPROVE.getStatus().equals(saleReturn.getStatus())) { - throw exception(SALE_RETURN_DELETE_FAIL_APPROVE, saleReturn.getNo()); - } - }); - - // 2. 遍历删除,并记录操作日志 - saleReturns.forEach(saleReturn -> { - // 2.1 删除订单 - saleReturnMapper.deleteById(saleReturn.getId()); - // 2.2 删除订单项 - saleReturnItemMapper.deleteByReturnId(saleReturn.getId()); - - // 2.3 更新销售订单的出库数量 - updateSaleOrderReturnCount(saleReturn.getOrderId()); - }); - - } - - private ErpSaleReturnDO validateSaleReturnExists(Long id) { - ErpSaleReturnDO saleReturn = saleReturnMapper.selectById(id); - if (saleReturn == null) { - throw exception(SALE_RETURN_NOT_EXISTS); - } - return saleReturn; - } - - @Override - public ErpSaleReturnDO getSaleReturn(Long id) { - return saleReturnMapper.selectById(id); - } - - @Override - public ErpSaleReturnDO validateSaleReturn(Long id) { - ErpSaleReturnDO saleReturn = validateSaleReturnExists(id); - if (ObjectUtil.notEqual(saleReturn.getStatus(), ErpAuditStatus.APPROVE.getStatus())) { - throw exception(SALE_RETURN_NOT_APPROVE); - } - return saleReturn; - } - - @Override - public PageResult getSaleReturnPage(ErpSaleReturnPageReqVO pageReqVO) { - return saleReturnMapper.selectPage(pageReqVO); - } - - // ==================== 销售退货项 ==================== - - @Override - public List getSaleReturnItemListByReturnId(Long returnId) { - return saleReturnItemMapper.selectListByReturnId(returnId); - } - - @Override - public List getSaleReturnItemListByReturnIds(Collection returnIds) { - if (CollUtil.isEmpty(returnIds)) { - return Collections.emptyList(); - } - return saleReturnItemMapper.selectListByReturnIds(returnIds); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockCheckService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockCheckService.java deleted file mode 100644 index 2f8a0f9eef..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockCheckService.java +++ /dev/null @@ -1,84 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckItemDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; - -/** - * ERP 库存盘点单 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpStockCheckService { - - /** - * 创建库存盘点单 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createStockCheck(@Valid ErpStockCheckSaveReqVO createReqVO); - - /** - * 更新库存盘点单 - * - * @param updateReqVO 更新信息 - */ - void updateStockCheck(@Valid ErpStockCheckSaveReqVO updateReqVO); - - /** - * 更新库存盘点单的状态 - * - * @param id 编号 - * @param status 状态 - */ - void updateStockCheckStatus(Long id, Integer status); - - /** - * 删除库存盘点单 - * - * @param ids 编号数组 - */ - void deleteStockCheck(List ids); - - /** - * 获得库存盘点单 - * - * @param id 编号 - * @return 库存盘点单 - */ - ErpStockCheckDO getStockCheck(Long id); - - /** - * 获得库存盘点单分页 - * - * @param pageReqVO 分页查询 - * @return 库存盘点单分页 - */ - PageResult getStockCheckPage(ErpStockCheckPageReqVO pageReqVO); - - // ==================== 盘点项 ==================== - - /** - * 获得库存盘点单项列表 - * - * @param checkId 盘点编号 - * @return 库存盘点单项列表 - */ - List getStockCheckItemListByCheckId(Long checkId); - - /** - * 获得库存盘点单项 List - * - * @param checkIds 盘点编号数组 - * @return 库存盘点单项 List - */ - List getStockCheckItemListByCheckIds(Collection checkIds); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockCheckServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockCheckServiceImpl.java deleted file mode 100644 index 49aca94d38..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockCheckServiceImpl.java +++ /dev/null @@ -1,232 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckItemDO; -import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockCheckItemMapper; -import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockCheckMapper; -import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -// TODO 芋艿:记录操作日志 - -/** - * ERP 库存盘点单 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpStockCheckServiceImpl implements ErpStockCheckService { - - @Resource - private ErpStockCheckMapper stockCheckMapper; - @Resource - private ErpStockCheckItemMapper stockCheckItemMapper; - - @Resource - private ErpNoRedisDAO noRedisDAO; - - @Resource - private ErpProductService productService; - @Resource - private ErpWarehouseService warehouseService; - @Resource - private ErpStockRecordService stockRecordService; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createStockCheck(ErpStockCheckSaveReqVO createReqVO) { - // 1.1 校验盘点项的有效性 - List stockCheckItems = validateStockCheckItems(createReqVO.getItems()); - // 1.2 生成盘点单号,并校验唯一性 - String no = noRedisDAO.generate(ErpNoRedisDAO.STOCK_CHECK_NO_PREFIX); - if (stockCheckMapper.selectByNo(no) != null) { - throw exception(STOCK_CHECK_NO_EXISTS); - } - - // 2.1 插入盘点单 - ErpStockCheckDO stockCheck = BeanUtils.toBean(createReqVO, ErpStockCheckDO.class, in -> in - .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus()) - .setTotalCount(getSumValue(stockCheckItems, ErpStockCheckItemDO::getCount, BigDecimal::add)) - .setTotalPrice(getSumValue(stockCheckItems, ErpStockCheckItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO))); - stockCheckMapper.insert(stockCheck); - // 2.2 插入盘点单项 - stockCheckItems.forEach(o -> o.setCheckId(stockCheck.getId())); - stockCheckItemMapper.insertBatch(stockCheckItems); - return stockCheck.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateStockCheck(ErpStockCheckSaveReqVO updateReqVO) { - // 1.1 校验存在 - ErpStockCheckDO stockCheck = validateStockCheckExists(updateReqVO.getId()); - if (ErpAuditStatus.APPROVE.getStatus().equals(stockCheck.getStatus())) { - throw exception(STOCK_CHECK_UPDATE_FAIL_APPROVE, stockCheck.getNo()); - } - // 1.2 校验盘点项的有效性 - List stockCheckItems = validateStockCheckItems(updateReqVO.getItems()); - - // 2.1 更新盘点单 - ErpStockCheckDO updateObj = BeanUtils.toBean(updateReqVO, ErpStockCheckDO.class, in -> in - .setTotalCount(getSumValue(stockCheckItems, ErpStockCheckItemDO::getCount, BigDecimal::add)) - .setTotalPrice(getSumValue(stockCheckItems, ErpStockCheckItemDO::getTotalPrice, BigDecimal::add))); - stockCheckMapper.updateById(updateObj); - // 2.2 更新盘点单项 - updateStockCheckItemList(updateReqVO.getId(), stockCheckItems); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateStockCheckStatus(Long id, Integer status) { - boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status); - // 1.1 校验存在 - ErpStockCheckDO stockCheck = validateStockCheckExists(id); - // 1.2 校验状态 - if (stockCheck.getStatus().equals(status)) { - throw exception(approve ? STOCK_CHECK_APPROVE_FAIL : STOCK_CHECK_PROCESS_FAIL); - } - - // 2. 更新状态 - int updateCount = stockCheckMapper.updateByIdAndStatus(id, stockCheck.getStatus(), - new ErpStockCheckDO().setStatus(status)); - if (updateCount == 0) { - throw exception(approve ? STOCK_CHECK_APPROVE_FAIL : STOCK_CHECK_PROCESS_FAIL); - } - - // 3. 变更库存 - List stockCheckItems = stockCheckItemMapper.selectListByCheckId(id); - stockCheckItems.forEach(stockCheckItem -> { - // 没有盈亏,不用出入库 - if (stockCheckItem.getCount().compareTo(BigDecimal.ZERO) == 0) { - return; - } - // 10;12;-2() - BigDecimal count = approve ? stockCheckItem.getCount(): stockCheckItem.getCount().negate(); - Integer bizType; - if (approve) { - bizType = count.compareTo(BigDecimal.ZERO) > 0 ? ErpStockRecordBizTypeEnum.CHECK_MORE_IN.getType() - : ErpStockRecordBizTypeEnum.CHECK_LESS_OUT.getType(); - } else { - bizType = count.compareTo(BigDecimal.ZERO) > 0 ? ErpStockRecordBizTypeEnum.CHECK_MORE_IN_CANCEL.getType() - : ErpStockRecordBizTypeEnum.CHECK_LESS_OUT_CANCEL.getType(); - } - stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( - stockCheckItem.getProductId(), stockCheckItem.getWarehouseId(), count, - bizType, stockCheckItem.getCheckId(), stockCheckItem.getId(), stockCheck.getNo())); - }); - } - - private List validateStockCheckItems(List list) { - // 1.1 校验产品存在 - List productList = productService.validProductList( - convertSet(list, ErpStockCheckSaveReqVO.Item::getProductId)); - Map productMap = convertMap(productList, ErpProductDO::getId); - // 1.2 校验仓库存在 - warehouseService.validWarehouseList(convertSet(list, ErpStockCheckSaveReqVO.Item::getWarehouseId)); - // 2. 转化为 ErpStockCheckItemDO 列表 - return convertList(list, o -> BeanUtils.toBean(o, ErpStockCheckItemDO.class, item -> item - .setProductUnitId(productMap.get(item.getProductId()).getUnitId()) - .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())))); - } - - private void updateStockCheckItemList(Long id, List newList) { - // 第一步,对比新老数据,获得添加、修改、删除的列表 - List oldList = stockCheckItemMapper.selectListByCheckId(id); - List> diffList = diffList(oldList, newList, // id 不同,就认为是不同的记录 - (oldVal, newVal) -> oldVal.getId().equals(newVal.getId())); - - // 第二步,批量添加、修改、删除 - if (CollUtil.isNotEmpty(diffList.get(0))) { - diffList.get(0).forEach(o -> o.setCheckId(id)); - stockCheckItemMapper.insertBatch(diffList.get(0)); - } - if (CollUtil.isNotEmpty(diffList.get(1))) { - stockCheckItemMapper.updateBatch(diffList.get(1)); - } - if (CollUtil.isNotEmpty(diffList.get(2))) { - stockCheckItemMapper.deleteBatchIds(convertList(diffList.get(2), ErpStockCheckItemDO::getId)); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteStockCheck(List ids) { - // 1. 校验不处于已审批 - List stockChecks = stockCheckMapper.selectBatchIds(ids); - if (CollUtil.isEmpty(stockChecks)) { - return; - } - stockChecks.forEach(stockCheck -> { - if (ErpAuditStatus.APPROVE.getStatus().equals(stockCheck.getStatus())) { - throw exception(STOCK_CHECK_DELETE_FAIL_APPROVE, stockCheck.getNo()); - } - }); - - // 2. 遍历删除,并记录操作日志 - stockChecks.forEach(stockCheck -> { - // 2.1 删除盘点单 - stockCheckMapper.deleteById(stockCheck.getId()); - // 2.2 删除盘点单项 - stockCheckItemMapper.deleteByCheckId(stockCheck.getId()); - }); - } - - private ErpStockCheckDO validateStockCheckExists(Long id) { - ErpStockCheckDO stockCheck = stockCheckMapper.selectById(id); - if (stockCheck == null) { - throw exception(STOCK_CHECK_NOT_EXISTS); - } - return stockCheck; - } - - @Override - public ErpStockCheckDO getStockCheck(Long id) { - return stockCheckMapper.selectById(id); - } - - @Override - public PageResult getStockCheckPage(ErpStockCheckPageReqVO pageReqVO) { - return stockCheckMapper.selectPage(pageReqVO); - } - - // ==================== 盘点项 ==================== - - @Override - public List getStockCheckItemListByCheckId(Long checkId) { - return stockCheckItemMapper.selectListByCheckId(checkId); - } - - @Override - public List getStockCheckItemListByCheckIds(Collection checkIds) { - if (CollUtil.isEmpty(checkIds)) { - return Collections.emptyList(); - } - return stockCheckItemMapper.selectListByCheckIds(checkIds); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInService.java deleted file mode 100644 index 4e51545e4b..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInService.java +++ /dev/null @@ -1,84 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; - -/** - * ERP 其它入库单 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpStockInService { - - /** - * 创建其它入库单 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createStockIn(@Valid ErpStockInSaveReqVO createReqVO); - - /** - * 更新其它入库单 - * - * @param updateReqVO 更新信息 - */ - void updateStockIn(@Valid ErpStockInSaveReqVO updateReqVO); - - /** - * 更新其它入库单的状态 - * - * @param id 编号 - * @param status 状态 - */ - void updateStockInStatus(Long id, Integer status); - - /** - * 删除其它入库单 - * - * @param ids 编号数组 - */ - void deleteStockIn(List ids); - - /** - * 获得其它入库单 - * - * @param id 编号 - * @return 其它入库单 - */ - ErpStockInDO getStockIn(Long id); - - /** - * 获得其它入库单分页 - * - * @param pageReqVO 分页查询 - * @return 其它入库单分页 - */ - PageResult getStockInPage(ErpStockInPageReqVO pageReqVO); - - // ==================== 入库项 ==================== - - /** - * 获得其它入库单项列表 - * - * @param inId 入库编号 - * @return 其它入库单项列表 - */ - List getStockInItemListByInId(Long inId); - - /** - * 获得其它入库单项 List - * - * @param inIds 入库编号数组 - * @return 其它入库单项 List - */ - List getStockInItemListByInIds(Collection inIds); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java deleted file mode 100644 index 213fca8b8f..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java +++ /dev/null @@ -1,228 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO; -import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockInItemMapper; -import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockInMapper; -import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService; -import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -// TODO 芋艿:记录操作日志 -/** - * ERP 其它入库单 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpStockInServiceImpl implements ErpStockInService { - - @Resource - private ErpStockInMapper stockInMapper; - @Resource - private ErpStockInItemMapper stockInItemMapper; - - @Resource - private ErpNoRedisDAO noRedisDAO; - - @Resource - private ErpProductService productService; - @Resource - private ErpWarehouseService warehouseService; - @Resource - private ErpSupplierService supplierService; - @Resource - private ErpStockRecordService stockRecordService; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createStockIn(ErpStockInSaveReqVO createReqVO) { - // 1.1 校验入库项的有效性 - List stockInItems = validateStockInItems(createReqVO.getItems()); - // 1.2 校验供应商 - supplierService.validateSupplier(createReqVO.getSupplierId()); - // 1.3 生成入库单号,并校验唯一性 - String no = noRedisDAO.generate(ErpNoRedisDAO.STOCK_IN_NO_PREFIX); - if (stockInMapper.selectByNo(no) != null) { - throw exception(STOCK_IN_NO_EXISTS); - } - - // 2.1 插入入库单 - ErpStockInDO stockIn = BeanUtils.toBean(createReqVO, ErpStockInDO.class, in -> in - .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus()) - .setTotalCount(getSumValue(stockInItems, ErpStockInItemDO::getCount, BigDecimal::add)) - .setTotalPrice(getSumValue(stockInItems, ErpStockInItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO))); - stockInMapper.insert(stockIn); - // 2.2 插入入库单项 - stockInItems.forEach(o -> o.setInId(stockIn.getId())); - stockInItemMapper.insertBatch(stockInItems); - return stockIn.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateStockIn(ErpStockInSaveReqVO updateReqVO) { - // 1.1 校验存在 - ErpStockInDO stockIn = validateStockInExists(updateReqVO.getId()); - if (ErpAuditStatus.APPROVE.getStatus().equals(stockIn.getStatus())) { - throw exception(STOCK_IN_UPDATE_FAIL_APPROVE, stockIn.getNo()); - } - // 1.2 校验供应商 - supplierService.validateSupplier(updateReqVO.getSupplierId()); - // 1.3 校验入库项的有效性 - List stockInItems = validateStockInItems(updateReqVO.getItems()); - - // 2.1 更新入库单 - ErpStockInDO updateObj = BeanUtils.toBean(updateReqVO, ErpStockInDO.class, in -> in - .setTotalCount(getSumValue(stockInItems, ErpStockInItemDO::getCount, BigDecimal::add)) - .setTotalPrice(getSumValue(stockInItems, ErpStockInItemDO::getTotalPrice, BigDecimal::add))); - stockInMapper.updateById(updateObj); - // 2.2 更新入库单项 - updateStockInItemList(updateReqVO.getId(), stockInItems); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateStockInStatus(Long id, Integer status) { - boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status); - // 1.1 校验存在 - ErpStockInDO stockIn = validateStockInExists(id); - // 1.2 校验状态 - if (stockIn.getStatus().equals(status)) { - throw exception(approve ? STOCK_IN_APPROVE_FAIL : STOCK_IN_PROCESS_FAIL); - } - - // 2. 更新状态 - int updateCount = stockInMapper.updateByIdAndStatus(id, stockIn.getStatus(), - new ErpStockInDO().setStatus(status)); - if (updateCount == 0) { - throw exception(approve ? STOCK_IN_APPROVE_FAIL : STOCK_IN_PROCESS_FAIL); - } - - // 3. 变更库存 - List stockInItems = stockInItemMapper.selectListByInId(id); - Integer bizType = approve ? ErpStockRecordBizTypeEnum.OTHER_IN.getType() - : ErpStockRecordBizTypeEnum.OTHER_IN_CANCEL.getType(); - stockInItems.forEach(stockInItem -> { - BigDecimal count = approve ? stockInItem.getCount() : stockInItem.getCount().negate(); - stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( - stockInItem.getProductId(), stockInItem.getWarehouseId(), count, - bizType, stockInItem.getInId(), stockInItem.getId(), stockIn.getNo())); - }); - } - - private List validateStockInItems(List list) { - // 1.1 校验产品存在 - List productList = productService.validProductList( - convertSet(list, ErpStockInSaveReqVO.Item::getProductId)); - Map productMap = convertMap(productList, ErpProductDO::getId); - // 1.2 校验仓库存在 - warehouseService.validWarehouseList(convertSet( - list, ErpStockInSaveReqVO.Item::getWarehouseId)); - // 2. 转化为 ErpStockInItemDO 列表 - return convertList(list, o -> BeanUtils.toBean(o, ErpStockInItemDO.class, item -> item - .setProductUnitId(productMap.get(item.getProductId()).getUnitId()) - .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())))); - } - - private void updateStockInItemList(Long id, List newList) { - // 第一步,对比新老数据,获得添加、修改、删除的列表 - List oldList = stockInItemMapper.selectListByInId(id); - List> diffList = diffList(oldList, newList, // id 不同,就认为是不同的记录 - (oldVal, newVal) -> oldVal.getId().equals(newVal.getId())); - - // 第二步,批量添加、修改、删除 - if (CollUtil.isNotEmpty(diffList.get(0))) { - diffList.get(0).forEach(o -> o.setInId(id)); - stockInItemMapper.insertBatch(diffList.get(0)); - } - if (CollUtil.isNotEmpty(diffList.get(1))) { - stockInItemMapper.updateBatch(diffList.get(1)); - } - if (CollUtil.isNotEmpty(diffList.get(2))) { - stockInItemMapper.deleteBatchIds(convertList(diffList.get(2), ErpStockInItemDO::getId)); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteStockIn(List ids) { - // 1. 校验不处于已审批 - List stockIns = stockInMapper.selectBatchIds(ids); - if (CollUtil.isEmpty(stockIns)) { - return; - } - stockIns.forEach(stockIn -> { - if (ErpAuditStatus.APPROVE.getStatus().equals(stockIn.getStatus())) { - throw exception(STOCK_IN_DELETE_FAIL_APPROVE, stockIn.getNo()); - } - }); - - // 2. 遍历删除,并记录操作日志 - stockIns.forEach(stockIn -> { - // 2.1 删除入库单 - stockInMapper.deleteById(stockIn.getId()); - // 2.2 删除入库单项 - stockInItemMapper.deleteByInId(stockIn.getId()); - }); - } - - private ErpStockInDO validateStockInExists(Long id) { - ErpStockInDO stockIn = stockInMapper.selectById(id); - if (stockIn == null) { - throw exception(STOCK_IN_NOT_EXISTS); - } - return stockIn; - } - - @Override - public ErpStockInDO getStockIn(Long id) { - return stockInMapper.selectById(id); - } - - @Override - public PageResult getStockInPage(ErpStockInPageReqVO pageReqVO) { - return stockInMapper.selectPage(pageReqVO); - } - - // ==================== 入库项 ==================== - - @Override - public List getStockInItemListByInId(Long inId) { - return stockInItemMapper.selectListByInId(inId); - } - - @Override - public List getStockInItemListByInIds(Collection inIds) { - if (CollUtil.isEmpty(inIds)) { - return Collections.emptyList(); - } - return stockInItemMapper.selectListByInIds(inIds); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveService.java deleted file mode 100644 index 8af13a6391..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveService.java +++ /dev/null @@ -1,84 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMovePageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMoveSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveItemDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; - -/** - * ERP 库存调拨单 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpStockMoveService { - - /** - * 创建库存调拨单 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createStockMove(@Valid ErpStockMoveSaveReqVO createReqVO); - - /** - * 更新库存调拨单 - * - * @param updateReqVO 更新信息 - */ - void updateStockMove(@Valid ErpStockMoveSaveReqVO updateReqVO); - - /** - * 更新库存调拨单的状态 - * - * @param id 编号 - * @param status 状态 - */ - void updateStockMoveStatus(Long id, Integer status); - - /** - * 删除库存调拨单 - * - * @param ids 编号数组 - */ - void deleteStockMove(List ids); - - /** - * 获得库存调拨单 - * - * @param id 编号 - * @return 库存调拨单 - */ - ErpStockMoveDO getStockMove(Long id); - - /** - * 获得库存调拨单分页 - * - * @param pageReqVO 分页查询 - * @return 库存调拨单分页 - */ - PageResult getStockMovePage(ErpStockMovePageReqVO pageReqVO); - - // ==================== 调拨项 ==================== - - /** - * 获得库存调拨单项列表 - * - * @param moveId 调拨编号 - * @return 库存调拨单项列表 - */ - List getStockMoveItemListByMoveId(Long moveId); - - /** - * 获得库存调拨单项 List - * - * @param moveIds 调拨编号数组 - * @return 库存调拨单项 List - */ - List getStockMoveItemListByMoveIds(Collection moveIds); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveServiceImpl.java deleted file mode 100644 index a0d8f79d4e..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveServiceImpl.java +++ /dev/null @@ -1,229 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMovePageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMoveSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveItemDO; -import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockMoveItemMapper; -import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockMoveMapper; -import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.stream.Stream; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -// TODO 芋艿:记录操作日志 - -/** - * ERP 库存调拨单 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpStockMoveServiceImpl implements ErpStockMoveService { - - @Resource - private ErpStockMoveMapper stockMoveMapper; - @Resource - private ErpStockMoveItemMapper stockMoveItemMapper; - - @Resource - private ErpNoRedisDAO noRedisDAO; - - @Resource - private ErpProductService productService; - @Resource - private ErpWarehouseService warehouseService; - @Resource - private ErpStockRecordService stockRecordService; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createStockMove(ErpStockMoveSaveReqVO createReqVO) { - // 1.1 校验出库项的有效性 - List stockMoveItems = validateStockMoveItems(createReqVO.getItems()); - // 1.2 生成调拨单号,并校验唯一性 - String no = noRedisDAO.generate(ErpNoRedisDAO.STOCK_MOVE_NO_PREFIX); - if (stockMoveMapper.selectByNo(no) != null) { - throw exception(STOCK_MOVE_NO_EXISTS); - } - - // 2.1 插入出库单 - ErpStockMoveDO stockMove = BeanUtils.toBean(createReqVO, ErpStockMoveDO.class, in -> in - .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus()) - .setTotalCount(getSumValue(stockMoveItems, ErpStockMoveItemDO::getCount, BigDecimal::add)) - .setTotalPrice(getSumValue(stockMoveItems, ErpStockMoveItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO))); - stockMoveMapper.insert(stockMove); - // 2.2 插入出库单项 - stockMoveItems.forEach(o -> o.setMoveId(stockMove.getId())); - stockMoveItemMapper.insertBatch(stockMoveItems); - return stockMove.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateStockMove(ErpStockMoveSaveReqVO updateReqVO) { - // 1.1 校验存在 - ErpStockMoveDO stockMove = validateStockMoveExists(updateReqVO.getId()); - if (ErpAuditStatus.APPROVE.getStatus().equals(stockMove.getStatus())) { - throw exception(STOCK_MOVE_UPDATE_FAIL_APPROVE, stockMove.getNo()); - } - // 1.2 校验出库项的有效性 - List stockMoveItems = validateStockMoveItems(updateReqVO.getItems()); - - // 2.1 更新出库单 - ErpStockMoveDO updateObj = BeanUtils.toBean(updateReqVO, ErpStockMoveDO.class, in -> in - .setTotalCount(getSumValue(stockMoveItems, ErpStockMoveItemDO::getCount, BigDecimal::add)) - .setTotalPrice(getSumValue(stockMoveItems, ErpStockMoveItemDO::getTotalPrice, BigDecimal::add))); - stockMoveMapper.updateById(updateObj); - // 2.2 更新出库单项 - updateStockMoveItemList(updateReqVO.getId(), stockMoveItems); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateStockMoveStatus(Long id, Integer status) { - boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status); - // 1.1 校验存在 - ErpStockMoveDO stockMove = validateStockMoveExists(id); - // 1.2 校验状态 - if (stockMove.getStatus().equals(status)) { - throw exception(approve ? STOCK_MOVE_APPROVE_FAIL : STOCK_MOVE_PROCESS_FAIL); - } - - // 2. 更新状态 - int updateCount = stockMoveMapper.updateByIdAndStatus(id, stockMove.getStatus(), - new ErpStockMoveDO().setStatus(status)); - if (updateCount == 0) { - throw exception(approve ? STOCK_MOVE_APPROVE_FAIL : STOCK_MOVE_PROCESS_FAIL); - } - - // 3. 变更库存 - List stockMoveItems = stockMoveItemMapper.selectListByMoveId(id); - Integer fromBizType = approve ? ErpStockRecordBizTypeEnum.MOVE_OUT.getType() - : ErpStockRecordBizTypeEnum.MOVE_OUT_CANCEL.getType(); - Integer toBizType = approve ? ErpStockRecordBizTypeEnum.MOVE_IN.getType() - : ErpStockRecordBizTypeEnum.MOVE_IN_CANCEL.getType(); - stockMoveItems.forEach(stockMoveItem -> { - BigDecimal fromCount = approve ? stockMoveItem.getCount().negate() : stockMoveItem.getCount(); - BigDecimal toCount = approve ? stockMoveItem.getCount() : stockMoveItem.getCount().negate(); - stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( - stockMoveItem.getProductId(), stockMoveItem.getFromWarehouseId(), fromCount, - fromBizType, stockMoveItem.getMoveId(), stockMoveItem.getId(), stockMove.getNo())); - stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( - stockMoveItem.getProductId(), stockMoveItem.getToWarehouseId(), toCount, - toBizType, stockMoveItem.getMoveId(), stockMoveItem.getId(), stockMove.getNo())); - }); - } - - private List validateStockMoveItems(List list) { - // 1.1 校验产品存在 - List productList = productService.validProductList( - convertSet(list, ErpStockMoveSaveReqVO.Item::getProductId)); - Map productMap = convertMap(productList, ErpProductDO::getId); - // 1.2 校验仓库存在 - warehouseService.validWarehouseList(convertSetByFlatMap(list, - item -> Stream.of(item.getFromWarehouseId(), item.getToWarehouseId()))); - // 2. 转化为 ErpStockMoveItemDO 列表 - return convertList(list, o -> BeanUtils.toBean(o, ErpStockMoveItemDO.class, item -> item - .setProductUnitId(productMap.get(item.getProductId()).getUnitId()) - .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())))); - } - - private void updateStockMoveItemList(Long id, List newList) { - // 第一步,对比新老数据,获得添加、修改、删除的列表 - List oldList = stockMoveItemMapper.selectListByMoveId(id); - List> diffList = diffList(oldList, newList, // id 不同,就认为是不同的记录 - (oldVal, newVal) -> oldVal.getId().equals(newVal.getId())); - - // 第二步,批量添加、修改、删除 - if (CollUtil.isNotEmpty(diffList.get(0))) { - diffList.get(0).forEach(o -> o.setMoveId(id)); - stockMoveItemMapper.insertBatch(diffList.get(0)); - } - if (CollUtil.isNotEmpty(diffList.get(1))) { - stockMoveItemMapper.updateBatch(diffList.get(1)); - } - if (CollUtil.isNotEmpty(diffList.get(2))) { - stockMoveItemMapper.deleteBatchIds(convertList(diffList.get(2), ErpStockMoveItemDO::getId)); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteStockMove(List ids) { - // 1. 校验不处于已审批 - List stockMoves = stockMoveMapper.selectBatchIds(ids); - if (CollUtil.isEmpty(stockMoves)) { - return; - } - stockMoves.forEach(stockMove -> { - if (ErpAuditStatus.APPROVE.getStatus().equals(stockMove.getStatus())) { - throw exception(STOCK_MOVE_DELETE_FAIL_APPROVE, stockMove.getNo()); - } - }); - - // 2. 遍历删除,并记录操作日志 - stockMoves.forEach(stockMove -> { - // 2.1 删除出库单 - stockMoveMapper.deleteById(stockMove.getId()); - // 2.2 删除出库单项 - stockMoveItemMapper.deleteByMoveId(stockMove.getId()); - }); - } - - private ErpStockMoveDO validateStockMoveExists(Long id) { - ErpStockMoveDO stockMove = stockMoveMapper.selectById(id); - if (stockMove == null) { - throw exception(STOCK_MOVE_NOT_EXISTS); - } - return stockMove; - } - - @Override - public ErpStockMoveDO getStockMove(Long id) { - return stockMoveMapper.selectById(id); - } - - @Override - public PageResult getStockMovePage(ErpStockMovePageReqVO pageReqVO) { - return stockMoveMapper.selectPage(pageReqVO); - } - - // ==================== 出库项 ==================== - - @Override - public List getStockMoveItemListByMoveId(Long moveId) { - return stockMoveItemMapper.selectListByMoveId(moveId); - } - - @Override - public List getStockMoveItemListByMoveIds(Collection moveIds) { - if (CollUtil.isEmpty(moveIds)) { - return Collections.emptyList(); - } - return stockMoveItemMapper.selectListByMoveIds(moveIds); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutService.java deleted file mode 100644 index 558fb69488..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutService.java +++ /dev/null @@ -1,84 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; - -/** - * ERP 其它出库单 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpStockOutService { - - /** - * 创建其它出库单 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createStockOut(@Valid ErpStockOutSaveReqVO createReqVO); - - /** - * 更新其它出库单 - * - * @param updateReqVO 更新信息 - */ - void updateStockOut(@Valid ErpStockOutSaveReqVO updateReqVO); - - /** - * 更新其它出库单的状态 - * - * @param id 编号 - * @param status 状态 - */ - void updateStockOutStatus(Long id, Integer status); - - /** - * 删除其它出库单 - * - * @param ids 编号数组 - */ - void deleteStockOut(List ids); - - /** - * 获得其它出库单 - * - * @param id 编号 - * @return 其它出库单 - */ - ErpStockOutDO getStockOut(Long id); - - /** - * 获得其它出库单分页 - * - * @param pageReqVO 分页查询 - * @return 其它出库单分页 - */ - PageResult getStockOutPage(ErpStockOutPageReqVO pageReqVO); - - // ==================== 出库项 ==================== - - /** - * 获得其它出库单项列表 - * - * @param outId 出库编号 - * @return 其它出库单项列表 - */ - List getStockOutItemListByOutId(Long outId); - - /** - * 获得其它出库单项 List - * - * @param outIds 出库编号数组 - * @return 其它出库单项 List - */ - List getStockOutItemListByOutIds(Collection outIds); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java deleted file mode 100644 index 9fa1924656..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java +++ /dev/null @@ -1,228 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; -import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockOutItemMapper; -import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockOutMapper; -import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; -import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; -import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService; -import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -// TODO 芋艿:记录操作日志 - -/** - * ERP 其它出库单 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpStockOutServiceImpl implements ErpStockOutService { - - @Resource - private ErpStockOutMapper stockOutMapper; - @Resource - private ErpStockOutItemMapper stockOutItemMapper; - - @Resource - private ErpNoRedisDAO noRedisDAO; - - @Resource - private ErpProductService productService; - @Resource - private ErpWarehouseService warehouseService; - @Resource - private ErpCustomerService customerService; - @Resource - private ErpStockRecordService stockRecordService; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createStockOut(ErpStockOutSaveReqVO createReqVO) { - // 1.1 校验出库项的有效性 - List stockOutItems = validateStockOutItems(createReqVO.getItems()); - // 1.2 校验客户 - customerService.validateCustomer(createReqVO.getCustomerId()); - // 1.3 生成出库单号,并校验唯一性 - String no = noRedisDAO.generate(ErpNoRedisDAO.STOCK_OUT_NO_PREFIX); - if (stockOutMapper.selectByNo(no) != null) { - throw exception(STOCK_OUT_NO_EXISTS); - } - - // 2.1 插入出库单 - ErpStockOutDO stockOut = BeanUtils.toBean(createReqVO, ErpStockOutDO.class, in -> in - .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus()) - .setTotalCount(getSumValue(stockOutItems, ErpStockOutItemDO::getCount, BigDecimal::add)) - .setTotalPrice(getSumValue(stockOutItems, ErpStockOutItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO))); - stockOutMapper.insert(stockOut); - // 2.2 插入出库单项 - stockOutItems.forEach(o -> o.setOutId(stockOut.getId())); - stockOutItemMapper.insertBatch(stockOutItems); - return stockOut.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateStockOut(ErpStockOutSaveReqVO updateReqVO) { - // 1.1 校验存在 - ErpStockOutDO stockOut = validateStockOutExists(updateReqVO.getId()); - if (ErpAuditStatus.APPROVE.getStatus().equals(stockOut.getStatus())) { - throw exception(STOCK_OUT_UPDATE_FAIL_APPROVE, stockOut.getNo()); - } - // 1.2 校验客户 - customerService.validateCustomer(updateReqVO.getCustomerId()); - // 1.3 校验出库项的有效性 - List stockOutItems = validateStockOutItems(updateReqVO.getItems()); - - // 2.1 更新出库单 - ErpStockOutDO updateObj = BeanUtils.toBean(updateReqVO, ErpStockOutDO.class, in -> in - .setTotalCount(getSumValue(stockOutItems, ErpStockOutItemDO::getCount, BigDecimal::add)) - .setTotalPrice(getSumValue(stockOutItems, ErpStockOutItemDO::getTotalPrice, BigDecimal::add))); - stockOutMapper.updateById(updateObj); - // 2.2 更新出库单项 - updateStockOutItemList(updateReqVO.getId(), stockOutItems); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateStockOutStatus(Long id, Integer status) { - boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status); - // 1.1 校验存在 - ErpStockOutDO stockOut = validateStockOutExists(id); - // 1.2 校验状态 - if (stockOut.getStatus().equals(status)) { - throw exception(approve ? STOCK_OUT_APPROVE_FAIL : STOCK_OUT_PROCESS_FAIL); - } - - // 2. 更新状态 - int updateCount = stockOutMapper.updateByIdAndStatus(id, stockOut.getStatus(), - new ErpStockOutDO().setStatus(status)); - if (updateCount == 0) { - throw exception(approve ? STOCK_OUT_APPROVE_FAIL : STOCK_OUT_PROCESS_FAIL); - } - - // 3. 变更库存 - List stockOutItems = stockOutItemMapper.selectListByOutId(id); - Integer bizType = approve ? ErpStockRecordBizTypeEnum.OTHER_OUT.getType() - : ErpStockRecordBizTypeEnum.OTHER_OUT_CANCEL.getType(); - stockOutItems.forEach(stockOutItem -> { - BigDecimal count = approve ? stockOutItem.getCount().negate() : stockOutItem.getCount(); - stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( - stockOutItem.getProductId(), stockOutItem.getWarehouseId(), count, - bizType, stockOutItem.getOutId(), stockOutItem.getId(), stockOut.getNo())); - }); - } - - private List validateStockOutItems(List list) { - // 1.1 校验产品存在 - List productList = productService.validProductList( - convertSet(list, ErpStockOutSaveReqVO.Item::getProductId)); - Map productMap = convertMap(productList, ErpProductDO::getId); - // 1.2 校验仓库存在 - warehouseService.validWarehouseList(convertSet(list, ErpStockOutSaveReqVO.Item::getWarehouseId)); - // 2. 转化为 ErpStockOutItemDO 列表 - return convertList(list, o -> BeanUtils.toBean(o, ErpStockOutItemDO.class, item -> item - .setProductUnitId(productMap.get(item.getProductId()).getUnitId()) - .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())))); - } - - private void updateStockOutItemList(Long id, List newList) { - // 第一步,对比新老数据,获得添加、修改、删除的列表 - List oldList = stockOutItemMapper.selectListByOutId(id); - List> diffList = diffList(oldList, newList, // id 不同,就认为是不同的记录 - (oldVal, newVal) -> oldVal.getId().equals(newVal.getId())); - - // 第二步,批量添加、修改、删除 - if (CollUtil.isNotEmpty(diffList.get(0))) { - diffList.get(0).forEach(o -> o.setOutId(id)); - stockOutItemMapper.insertBatch(diffList.get(0)); - } - if (CollUtil.isNotEmpty(diffList.get(1))) { - stockOutItemMapper.updateBatch(diffList.get(1)); - } - if (CollUtil.isNotEmpty(diffList.get(2))) { - stockOutItemMapper.deleteBatchIds(convertList(diffList.get(2), ErpStockOutItemDO::getId)); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteStockOut(List ids) { - // 1. 校验不处于已审批 - List stockOuts = stockOutMapper.selectBatchIds(ids); - if (CollUtil.isEmpty(stockOuts)) { - return; - } - stockOuts.forEach(stockOut -> { - if (ErpAuditStatus.APPROVE.getStatus().equals(stockOut.getStatus())) { - throw exception(STOCK_OUT_DELETE_FAIL_APPROVE, stockOut.getNo()); - } - }); - - // 2. 遍历删除,并记录操作日志 - stockOuts.forEach(stockOut -> { - // 2.1 删除出库单 - stockOutMapper.deleteById(stockOut.getId()); - // 2.2 删除出库单项 - stockOutItemMapper.deleteByOutId(stockOut.getId()); - }); - } - - private ErpStockOutDO validateStockOutExists(Long id) { - ErpStockOutDO stockOut = stockOutMapper.selectById(id); - if (stockOut == null) { - throw exception(STOCK_OUT_NOT_EXISTS); - } - return stockOut; - } - - @Override - public ErpStockOutDO getStockOut(Long id) { - return stockOutMapper.selectById(id); - } - - @Override - public PageResult getStockOutPage(ErpStockOutPageReqVO pageReqVO) { - return stockOutMapper.selectPage(pageReqVO); - } - - // ==================== 出库项 ==================== - - @Override - public List getStockOutItemListByOutId(Long outId) { - return stockOutItemMapper.selectListByOutId(outId); - } - - @Override - public List getStockOutItemListByOutIds(Collection outIds) { - if (CollUtil.isEmpty(outIds)) { - return Collections.emptyList(); - } - return stockOutItemMapper.selectListByOutIds(outIds); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordService.java deleted file mode 100644 index 506b992a46..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordService.java +++ /dev/null @@ -1,39 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockRecordDO; -import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; -import jakarta.validation.Valid; - -/** - * ERP 产品库存明细 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpStockRecordService { - - /** - * 获得产品库存明细 - * - * @param id 编号 - * @return 产品库存明细 - */ - ErpStockRecordDO getStockRecord(Long id); - - /** - * 获得产品库存明细分页 - * - * @param pageReqVO 分页查询 - * @return 产品库存明细分页 - */ - PageResult getStockRecordPage(ErpStockRecordPageReqVO pageReqVO); - - /** - * 创建库存明细 - * - * @param createReqBO 创建库存明细 BO - */ - void createStockRecord(@Valid ErpStockRecordCreateReqBO createReqBO); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordServiceImpl.java deleted file mode 100644 index d84951c281..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordServiceImpl.java +++ /dev/null @@ -1,53 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockRecordDO; -import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockRecordMapper; -import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; - -/** - * ERP 产品库存明细 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpStockRecordServiceImpl implements ErpStockRecordService { - - @Resource - private ErpStockRecordMapper stockRecordMapper; - - @Resource - private ErpStockService stockService; - - @Override - public ErpStockRecordDO getStockRecord(Long id) { - return stockRecordMapper.selectById(id); - } - - @Override - public PageResult getStockRecordPage(ErpStockRecordPageReqVO pageReqVO) { - return stockRecordMapper.selectPage(pageReqVO); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void createStockRecord(ErpStockRecordCreateReqBO createReqBO) { - // 1. 更新库存 - BigDecimal totalCount = stockService.updateStockCountIncrement( - createReqBO.getProductId(), createReqBO.getWarehouseId(), createReqBO.getCount()); - // 2. 创建库存明细 - ErpStockRecordDO stockRecord = BeanUtils.toBean(createReqBO, ErpStockRecordDO.class) - .setTotalCount(totalCount); - stockRecordMapper.insert(stockRecord); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockService.java deleted file mode 100644 index 63ad5fefa3..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockService.java +++ /dev/null @@ -1,61 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock.ErpStockPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; - -import java.math.BigDecimal; - -/** - * ERP 产品库存 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpStockService { - - /** - * 获得产品库存 - * - * @param id 编号 - * @return 库存 - */ - ErpStockDO getStock(Long id); - - /** - * 基于产品 + 仓库,获得产品库存 - * - * @param productId 产品编号 - * @param warehouseId 仓库编号 - * @return 产品库存 - */ - ErpStockDO getStock(Long productId, Long warehouseId); - - /** - * 获得产品库存数量 - * - * 如果不存在库存记录,则返回 0 - * - * @param productId 产品编号 - * @return 产品库存数量 - */ - BigDecimal getStockCount(Long productId); - - /** - * 获得产品库存分页 - * - * @param pageReqVO 分页查询 - * @return 库存分页 - */ - PageResult getStockPage(ErpStockPageReqVO pageReqVO); - - /** - * 增量更新产品库存数量 - * - * @param productId 产品编号 - * @param warehouseId 仓库编号 - * @param count 增量数量:正数,表示增加;负数,表示减少 - * @return 更新后的库存 - */ - BigDecimal updateStockCountIncrement(Long productId, Long warehouseId, BigDecimal count); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockServiceImpl.java deleted file mode 100644 index 6541170471..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockServiceImpl.java +++ /dev/null @@ -1,89 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock.ErpStockPageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; -import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockMapper; -import cn.iocoder.yudao.module.erp.service.product.ErpProductService; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.STOCK_COUNT_NEGATIVE; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.STOCK_COUNT_NEGATIVE2; - -/** - * ERP 产品库存 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpStockServiceImpl implements ErpStockService { - - /** - * 允许库存为负数 - * - * TODO 芋艿:后续做成 db 配置 - */ - private static final Boolean NEGATIVE_STOCK_COUNT_ENABLE = false; - - @Resource - private ErpProductService productService; - @Resource - private ErpWarehouseService warehouseService; - - @Resource - private ErpStockMapper stockMapper; - - @Override - public ErpStockDO getStock(Long id) { - return stockMapper.selectById(id); - } - - @Override - public ErpStockDO getStock(Long productId, Long warehouseId) { - return stockMapper.selectByProductIdAndWarehouseId(productId, warehouseId); - } - - @Override - public BigDecimal getStockCount(Long productId) { - BigDecimal count = stockMapper.selectSumByProductId(productId); - return count != null ? count : BigDecimal.ZERO; - } - - @Override - public PageResult getStockPage(ErpStockPageReqVO pageReqVO) { - return stockMapper.selectPage(pageReqVO); - } - - @Override - public BigDecimal updateStockCountIncrement(Long productId, Long warehouseId, BigDecimal count) { - // 1.1 查询当前库存 - ErpStockDO stock = stockMapper.selectByProductIdAndWarehouseId(productId, warehouseId); - if (stock == null) { - stock = new ErpStockDO().setProductId(productId).setWarehouseId(warehouseId).setCount(BigDecimal.ZERO); - stockMapper.insert(stock); - } - // 1.2 校验库存是否充足 - if (!NEGATIVE_STOCK_COUNT_ENABLE && stock.getCount().add(count).compareTo(BigDecimal.ZERO) < 0) { - throw exception(STOCK_COUNT_NEGATIVE, productService.getProduct(productId).getName(), - warehouseService.getWarehouse(warehouseId).getName(), stock.getCount(), count); - } - - // 2. 库存变更 - int updateCount = stockMapper.updateCountIncrement(stock.getId(), count, NEGATIVE_STOCK_COUNT_ENABLE); - if (updateCount == 0) { - // 此时不好去查询最新库存,所以直接抛出该提示,不提供具体库存数字 - throw exception(STOCK_COUNT_NEGATIVE2, productService.getProduct(productId).getName(), - warehouseService.getWarehouse(warehouseId).getName()); - } - - // 3. 返回最新库存 - return stock.getCount().add(count); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseService.java deleted file mode 100644 index 872a698de8..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseService.java +++ /dev/null @@ -1,102 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.ErpWarehouseSaveReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehousePageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; -import jakarta.validation.Valid; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; - -/** - * ERP 仓库 Service 接口 - * - * @author 芋道源码 - */ -public interface ErpWarehouseService { - - /** - * 创建仓库 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createWarehouse(@Valid ErpWarehouseSaveReqVO createReqVO); - - /** - * 更新ERP 仓库 - * - * @param updateReqVO 更新信息 - */ - void updateWarehouse(@Valid ErpWarehouseSaveReqVO updateReqVO); - - /** - * 更新仓库默认状态 - * - * @param id 编号 - * @param defaultStatus 默认状态 - */ - void updateWarehouseDefaultStatus(Long id, Boolean defaultStatus); - - /** - * 删除仓库 - * - * @param id 编号 - */ - void deleteWarehouse(Long id); - - /** - * 获得仓库 - * - * @param id 编号 - * @return 仓库 - */ - ErpWarehouseDO getWarehouse(Long id); - - /** - * 校验仓库列表的有效性 - * - * @param ids 编号数组 - * @return 仓库列表 - */ - List validWarehouseList(Collection ids); - - /** - * 获得指定状态的仓库列表 - * - * @param status 状态 - * @return 仓库列表 - */ - List getWarehouseListByStatus(Integer status); - - /** - * 获得仓库列表 - * - * @param ids 编号数组 - * @return 仓库列表 - */ - List getWarehouseList(Collection ids); - - /** - * 获得仓库 Map - * - * @param ids 编号数组 - * @return 仓库 Map - */ - default Map getWarehouseMap(Collection ids) { - return convertMap(getWarehouseList(ids), ErpWarehouseDO::getId); - } - - /** - * 获得仓库分页 - * - * @param pageReqVO 分页查询 - * @return 仓库分页 - */ - PageResult getWarehousePage(ErpWarehousePageReqVO pageReqVO); - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseServiceImpl.java deleted file mode 100644 index fb4829146b..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseServiceImpl.java +++ /dev/null @@ -1,126 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.ErpWarehouseSaveReqVO; -import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehousePageReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; -import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpWarehouseMapper; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; -import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; - -/** - * ERP 仓库 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ErpWarehouseServiceImpl implements ErpWarehouseService { - - @Resource - private ErpWarehouseMapper warehouseMapper; - - @Override - public Long createWarehouse(ErpWarehouseSaveReqVO createReqVO) { - // 插入 - ErpWarehouseDO warehouse = BeanUtils.toBean(createReqVO, ErpWarehouseDO.class); - warehouseMapper.insert(warehouse); - // 返回 - return warehouse.getId(); - } - - @Override - public void updateWarehouse(ErpWarehouseSaveReqVO updateReqVO) { - // 校验存在 - validateWarehouseExists(updateReqVO.getId()); - // 更新 - ErpWarehouseDO updateObj = BeanUtils.toBean(updateReqVO, ErpWarehouseDO.class); - warehouseMapper.updateById(updateObj); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateWarehouseDefaultStatus(Long id, Boolean defaultStatus) { - // 1. 校验存在 - validateWarehouseExists(id); - - // 2.1 如果开启,则需要关闭所有其它的默认 - if (defaultStatus) { - ErpWarehouseDO warehouse = warehouseMapper.selectByDefaultStatus(); - if (warehouse != null) { - warehouseMapper.updateById(new ErpWarehouseDO().setId(warehouse.getId()).setDefaultStatus(false)); - } - } - // 2.2 更新对应的默认状态 - warehouseMapper.updateById(new ErpWarehouseDO().setId(id).setDefaultStatus(defaultStatus)); - } - - @Override - public void deleteWarehouse(Long id) { - // 校验存在 - validateWarehouseExists(id); - // 删除 - warehouseMapper.deleteById(id); - } - - private void validateWarehouseExists(Long id) { - if (warehouseMapper.selectById(id) == null) { - throw exception(WAREHOUSE_NOT_EXISTS); - } - } - - @Override - public ErpWarehouseDO getWarehouse(Long id) { - return warehouseMapper.selectById(id); - } - - @Override - public List validWarehouseList(Collection ids) { - if (CollUtil.isEmpty(ids)) { - return Collections.emptyList(); - } - List list = warehouseMapper.selectBatchIds(ids); - Map warehouseMap = convertMap(list, ErpWarehouseDO::getId); - for (Long id : ids) { - ErpWarehouseDO warehouse = warehouseMap.get(id); - if (warehouseMap.get(id) == null) { - throw exception(WAREHOUSE_NOT_EXISTS); - } - if (CommonStatusEnum.isDisable(warehouse.getStatus())) { - throw exception(WAREHOUSE_NOT_ENABLE, warehouse.getName()); - } - } - return list; - } - - @Override - public List getWarehouseListByStatus(Integer status) { - return warehouseMapper.selectListByStatus(status); - } - - @Override - public List getWarehouseList(Collection ids) { - return warehouseMapper.selectBatchIds(ids); - } - - @Override - public PageResult getWarehousePage(ErpWarehousePageReqVO pageReqVO) { - return warehouseMapper.selectPage(pageReqVO); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/bo/ErpStockRecordCreateReqBO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/bo/ErpStockRecordCreateReqBO.java deleted file mode 100644 index 7006f10b5f..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/bo/ErpStockRecordCreateReqBO.java +++ /dev/null @@ -1,59 +0,0 @@ -package cn.iocoder.yudao.module.erp.service.stock.bo; - -import jakarta.validation.constraints.NotNull; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.math.BigDecimal; - -/** - * 库存明细的创建 Request BO - * - * @author 芋道源码 - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class ErpStockRecordCreateReqBO { - - /** - * 产品编号 - */ - @NotNull(message = "产品编号不能为空") - private Long productId; - /** - * 仓库编号 - */ - @NotNull(message = "仓库编号不能为空") - private Long warehouseId; - /** - * 出入库数量 - * - * 正数,表示入库;负数,表示出库 - */ - @NotNull(message = "出入库数量不能为空") - private BigDecimal count; - - /** - * 业务类型 - */ - @NotNull(message = "业务类型不能为空") - private Integer bizType; - /** - * 业务编号 - */ - @NotNull(message = "业务编号不能为空") - private Long bizId; - /** - * 业务项编号 - */ - @NotNull(message = "业务项编号不能为空") - private Long bizItemId; - /** - * 业务单号 - */ - @NotNull(message = "业务单号不能为空") - private String bizNo; - -} diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/finance/ErpAccountMapper.xml b/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/finance/ErpAccountMapper.xml deleted file mode 100644 index a3cf6877b6..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/finance/ErpAccountMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/product/ErpProductUnitMapper.xml b/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/product/ErpProductUnitMapper.xml deleted file mode 100644 index 4666e48d42..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/product/ErpProductUnitMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/sale/ErpCustomerMapper.xml b/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/sale/ErpCustomerMapper.xml deleted file mode 100644 index c012f4467c..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/sale/ErpCustomerMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/stock/ErpWarehouseMapper.xml b/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/stock/ErpWarehouseMapper.xml deleted file mode 100644 index be2bc61cb6..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/stock/ErpWarehouseMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/supplier/ErpSupplierMapper.xml b/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/supplier/ErpSupplierMapper.xml deleted file mode 100644 index 54849af3f2..0000000000 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/supplier/ErpSupplierMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file