From 381ab35acb9d4434a8eea3fffadeb3ed12d5ab71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=96=E5=BC=BA?= Date: Wed, 20 Sep 2023 10:11:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=8F=E4=BD=9C=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/product/ProductController.java | 102 ++ .../admin/product/vo/ProductBaseVO.java | 96 ++ .../admin/product/vo/ProductCreateReqVO.java | 14 + .../admin/product/vo/ProductExcelVO.java | 100 ++ .../admin/product/vo/ProductExportReqVO.java | 83 ++ .../admin/product/vo/ProductPageReqVO.java | 86 ++ .../admin/product/vo/ProductRespVO.java | 19 + .../admin/product/vo/ProductUpdateReqVO.java | 18 + .../ProductCategoryController.java | 102 ++ .../vo/ProductCategoryBaseVO.java | 34 + .../vo/ProductCategoryCreateReqVO.java | 14 + .../vo/ProductCategoryExcelVO.java | 40 + .../vo/ProductCategoryExportReqVO.java | 23 + .../vo/ProductCategoryPageReqVO.java | 25 + .../vo/ProductCategoryRespVO.java | 19 + .../vo/ProductCategoryUpdateReqVO.java | 18 + .../productclass/ProductClassController.java | 102 ++ .../productclass/vo/ProductClassBaseVO.java | 31 + .../vo/ProductClassCreateReqVO.java | 14 + .../productclass/vo/ProductClassExcelVO.java | 41 + .../vo/ProductClassExportReqVO.java | 26 + .../vo/ProductClassPageReqVO.java | 28 + .../productclass/vo/ProductClassRespVO.java | 19 + .../vo/ProductClassUpdateReqVO.java | 18 + .../producttype/ProductTypeController.java | 102 ++ .../producttype/vo/ProductTypeBaseVO.java | 38 + .../vo/ProductTypeCreateReqVO.java | 14 + .../producttype/vo/ProductTypeExcelVO.java | 44 + .../vo/ProductTypeExportReqVO.java | 35 + .../producttype/vo/ProductTypePageReqVO.java | 40 + .../producttype/vo/ProductTypeRespVO.java | 19 + .../vo/ProductTypeUpdateReqVO.java | 18 + .../taskmanage/TaskManageController.java | 102 ++ .../admin/taskmanage/vo/TaskManageBaseVO.java | 71 + .../taskmanage/vo/TaskManageCreateReqVO.java | 14 + .../taskmanage/vo/TaskManageExcelVO.java | 69 + .../taskmanage/vo/TaskManageExportReqVO.java | 58 + .../taskmanage/vo/TaskManagePageReqVO.java | 60 + .../admin/taskmanage/vo/TaskManageRespVO.java | 19 + .../taskmanage/vo/TaskManageUpdateReqVO.java | 18 + .../teammanage/TeamManageController.java | 102 ++ .../admin/teammanage/vo/TeamManageBaseVO.java | 36 + .../teammanage/vo/TeamManageCreateReqVO.java | 14 + .../teammanage/vo/TeamManageExcelVO.java | 40 + .../teammanage/vo/TeamManageExportReqVO.java | 35 + .../teammanage/vo/TeamManagePageReqVO.java | 37 + .../admin/teammanage/vo/TeamManageRespVO.java | 19 + .../teammanage/vo/TeamManageUpdateReqVO.java | 18 + .../workreport/WorkReportController.java | 102 ++ .../admin/workreport/vo/WorkReportBaseVO.java | 66 + .../workreport/vo/WorkReportCreateReqVO.java | 14 + .../workreport/vo/WorkReportExcelVO.java | 64 + .../workreport/vo/WorkReportExportReqVO.java | 55 + .../workreport/vo/WorkReportPageReqVO.java | 57 + .../admin/workreport/vo/WorkReportRespVO.java | 19 + .../workreport/vo/WorkReportUpdateReqVO.java | 18 + .../xxjj/convert/product/ProductConvert.java | 34 + .../ProductCategoryConvert.java | 34 + .../productclass/ProductClassConvert.java | 34 + .../producttype/ProductTypeConvert.java | 34 + .../convert/taskmanage/TaskManageConvert.java | 34 + .../convert/teammanage/TeamManageConvert.java | 34 + .../convert/workreport/WorkReportConvert.java | 34 + .../dal/dataobject/product/ProductDO.java | 134 ++ .../productcategory/ProductCategoryDO.java | 51 + .../productclass/ProductClassDO.java | 49 + .../dataobject/producttype/ProductTypeDO.java | 56 + .../dataobject/taskmanage/TaskManageDO.java | 87 ++ .../dataobject/teammanage/TeamManageDO.java | 51 + .../dataobject/workreport/WorkReportDO.java | 79 ++ .../xxjj/dal/mysql/product/ProductMapper.java | 72 + .../ProductCategoryMapper.java | 34 + .../productclass/ProductClassMapper.java | 36 + .../mysql/producttype/ProductTypeMapper.java | 48 + .../mysql/taskmanage/TaskManageMapper.java | 56 + .../mysql/teammanage/TeamManageMapper.java | 42 + .../mysql/workreport/WorkReportMapper.java | 54 + .../module/xxjj/enums/ErrorCodeConstants.java | 14 + .../xxjj/service/product/ProductService.java | 70 + .../service/product/ProductServiceImpl.java | 120 ++ .../ProductCategoryService.java | 70 + .../ProductCategoryServiceImpl.java | 82 ++ .../productclass/ProductClassService.java | 70 + .../productclass/ProductClassServiceImpl.java | 82 ++ .../producttype/ProductTypeService.java | 70 + .../producttype/ProductTypeServiceImpl.java | 93 ++ .../service/taskmanage/TaskManageService.java | 70 + .../taskmanage/TaskManageServiceImpl.java | 82 ++ .../service/teammanage/TeamManageService.java | 70 + .../teammanage/TeamManageServiceImpl.java | 82 ++ .../service/workreport/WorkReportService.java | 70 + .../workreport/WorkReportServiceImpl.java | 82 ++ .../mapper/product/ProductMapper.xml | 12 + .../productcategory/ProductCategoryMapper.xml | 12 + .../productclass/ProductClassMapper.xml | 12 + .../mapper/producttype/ProductTypeMapper.xml | 24 + .../mapper/taskmanage/TaskManageMapper.xml | 12 + .../mapper/teammanage/TeamManageMapper.xml | 12 + .../mapper/workreport/WorkReportMapper.xml | 12 + .../product/ProductServiceImplTest.java | 311 ++++ .../ProductCategoryServiceImplTest.java | 159 +++ .../ProductClassServiceImplTest.java | 167 +++ .../ProductTypeServiceImplTest.java | 191 +++ .../taskmanage/TaskManageServiceImplTest.java | 247 ++++ .../teammanage/TeamManageServiceImplTest.java | 191 +++ .../workreport/WorkReportServiceImplTest.java | 239 ++++ yunxi-ui-admin/src/api/xxjj/product.js | 54 + .../src/api/xxjj/productCategory.js | 62 + yunxi-ui-admin/src/api/xxjj/productClass.js | 54 + yunxi-ui-admin/src/api/xxjj/productType.js | 54 + yunxi-ui-admin/src/api/xxjj/taskManage.js | 54 + yunxi-ui-admin/src/api/xxjj/teamManage.js | 54 + yunxi-ui-admin/src/api/xxjj/workReport.js | 54 + yunxi-ui-admin/src/utils/dict.js | 26 +- .../src/views/xxjj/material/index.vue | 724 +++++++--- .../src/views/xxjj/product/index.vue | 1252 ++++++----------- .../src/views/xxjj/productAudit/index.vue | 733 ++++++++++ .../src/views/xxjj/productCategory/index.vue | 339 +++-- .../src/views/xxjj/productClass/index.vue | 352 +++++ .../src/views/xxjj/productType/index.vue | 451 ++++++ .../src/views/xxjj/taskManage/index.vue | 355 +++++ .../src/views/xxjj/teamManage/index.vue | 357 +++++ .../src/views/xxjj/workReport/index.vue | 526 +++++++ 123 files changed, 10662 insertions(+), 1143 deletions(-) create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/ProductController.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductBaseVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductCreateReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExcelVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExportReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductPageReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductRespVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductUpdateReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/ProductCategoryController.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryBaseVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryCreateReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryExcelVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryExportReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryPageReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryRespVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryUpdateReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/ProductClassController.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassBaseVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassCreateReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassExcelVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassExportReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassPageReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassRespVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassUpdateReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/ProductTypeController.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeBaseVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeCreateReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeExcelVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeExportReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypePageReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeRespVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeUpdateReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/TaskManageController.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageBaseVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageCreateReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageExcelVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageExportReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManagePageReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageRespVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageUpdateReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/TeamManageController.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageBaseVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageCreateReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageExcelVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageExportReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManagePageReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageRespVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageUpdateReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/WorkReportController.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportBaseVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportCreateReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportExcelVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportExportReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportPageReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportRespVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportUpdateReqVO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/product/ProductConvert.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/productcategory/ProductCategoryConvert.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/productclass/ProductClassConvert.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/producttype/ProductTypeConvert.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/taskmanage/TaskManageConvert.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/teammanage/TeamManageConvert.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/workreport/WorkReportConvert.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/product/ProductDO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/productcategory/ProductCategoryDO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/productclass/ProductClassDO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/producttype/ProductTypeDO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/taskmanage/TaskManageDO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/teammanage/TeamManageDO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/workreport/WorkReportDO.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/product/ProductMapper.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/productcategory/ProductCategoryMapper.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/productclass/ProductClassMapper.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/producttype/ProductTypeMapper.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/taskmanage/TaskManageMapper.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/teammanage/TeamManageMapper.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/workreport/WorkReportMapper.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductService.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductServiceImpl.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productcategory/ProductCategoryService.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productcategory/ProductCategoryServiceImpl.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productclass/ProductClassService.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productclass/ProductClassServiceImpl.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/producttype/ProductTypeService.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/producttype/ProductTypeServiceImpl.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/taskmanage/TaskManageService.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/taskmanage/TaskManageServiceImpl.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/teammanage/TeamManageService.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/teammanage/TeamManageServiceImpl.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/workreport/WorkReportService.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/workreport/WorkReportServiceImpl.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/product/ProductMapper.xml create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/productcategory/ProductCategoryMapper.xml create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/productclass/ProductClassMapper.xml create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/producttype/ProductTypeMapper.xml create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/taskmanage/TaskManageMapper.xml create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/teammanage/TeamManageMapper.xml create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/workreport/WorkReportMapper.xml create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/product/ProductServiceImplTest.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/productcategory/ProductCategoryServiceImplTest.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/productclass/ProductClassServiceImplTest.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/producttype/ProductTypeServiceImplTest.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/taskmanage/TaskManageServiceImplTest.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/teammanage/TeamManageServiceImplTest.java create mode 100644 yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/workreport/WorkReportServiceImplTest.java create mode 100644 yunxi-ui-admin/src/api/xxjj/product.js create mode 100644 yunxi-ui-admin/src/api/xxjj/productCategory.js create mode 100644 yunxi-ui-admin/src/api/xxjj/productClass.js create mode 100644 yunxi-ui-admin/src/api/xxjj/productType.js create mode 100644 yunxi-ui-admin/src/api/xxjj/taskManage.js create mode 100644 yunxi-ui-admin/src/api/xxjj/teamManage.js create mode 100644 yunxi-ui-admin/src/api/xxjj/workReport.js create mode 100644 yunxi-ui-admin/src/views/xxjj/productAudit/index.vue create mode 100644 yunxi-ui-admin/src/views/xxjj/productClass/index.vue create mode 100644 yunxi-ui-admin/src/views/xxjj/productType/index.vue create mode 100644 yunxi-ui-admin/src/views/xxjj/taskManage/index.vue create mode 100644 yunxi-ui-admin/src/views/xxjj/teamManage/index.vue create mode 100644 yunxi-ui-admin/src/views/xxjj/workReport/index.vue diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/ProductController.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/ProductController.java new file mode 100644 index 0000000..071f834 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/ProductController.java @@ -0,0 +1,102 @@ +package com.yunxi.scm.module.xxjj.controller.admin.product; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.common.pojo.CommonResult; +import static com.yunxi.scm.framework.common.pojo.CommonResult.success; + +import com.yunxi.scm.framework.excel.core.util.ExcelUtils; + +import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog; +import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.yunxi.scm.module.xxjj.controller.admin.product.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.product.ProductDO; +import com.yunxi.scm.module.xxjj.convert.product.ProductConvert; +import com.yunxi.scm.module.xxjj.service.product.ProductService; + +@Tag(name = "管理后台 - 产品") +@RestController +@RequestMapping("/xxjj/product") +@Validated +public class ProductController { + + @Resource + private ProductService productService; + + @PostMapping("/create") + @Operation(summary = "创建产品") + @PreAuthorize("@ss.hasPermission('xxjj:product:create')") + public CommonResult createProduct(@Valid @RequestBody ProductCreateReqVO createReqVO) { + return success(productService.createProduct(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新产品") + @PreAuthorize("@ss.hasPermission('xxjj:product:update')") + public CommonResult updateProduct(@Valid @RequestBody ProductUpdateReqVO updateReqVO) { + productService.updateProduct(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除产品") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('xxjj: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('xxjj:product:query')") + public CommonResult getProduct(@RequestParam("id") Long id) { + ProductDO product = productService.getProduct(id); + return success(ProductConvert.INSTANCE.convert(product)); + } + + @GetMapping("/list") + @Operation(summary = "获得产品列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('xxjj:product:query')") + public CommonResult> getProductList(@RequestParam("ids") Collection ids) { + List list = productService.getProductList(ids); + return success(ProductConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得产品分页") + @PreAuthorize("@ss.hasPermission('xxjj:product:query')") + public CommonResult> getProductPage(@Valid ProductPageReqVO pageVO) { + PageResult pageResult = productService.getProductPage(pageVO); + return success(ProductConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出产品 Excel") + @PreAuthorize("@ss.hasPermission('xxjj:product:export')") + @OperateLog(type = EXPORT) + public void exportProductExcel(@Valid ProductExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = productService.getProductList(exportReqVO); + // 导出 Excel + List datas = ProductConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "产品.xls", "数据", ProductExcelVO.class, datas); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductBaseVO.java new file mode 100644 index 0000000..927dbfb --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductBaseVO.java @@ -0,0 +1,96 @@ +package com.yunxi.scm.module.xxjj.controller.admin.product.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import javax.validation.constraints.*; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * 产品 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class ProductBaseVO { + + @Schema(description = "产品编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "产品编码不能为空") + private String productCode; + + @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotNull(message = "产品名称不能为空") + private String productName; + + @Schema(description = "产品图片", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotNull(message = "产品图片不能为空") + private String productPicture; + + @Schema(description = "产品类别", requiredMode = Schema.RequiredMode.REQUIRED, example = "28952") + @NotNull(message = "产品类别不能为空") + private String classId; + + @Schema(description = "产品类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "4846") + @NotNull(message = "产品类型不能为空") + private String typeId; + + @Schema(description = "产品分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "30850") + @NotNull(message = "产品分类不能为空") + private Long categoryId; + + @Schema(description = "产品规格") + private String spec; + + @Schema(description = "标准单价", requiredMode = Schema.RequiredMode.REQUIRED, example = "19894") + @NotNull(message = "标准单价不能为空") + private BigDecimal singlePrice; + + @Schema(description = "首选供应商", example = "2309") + private Long supplyId; + + @Schema(description = "采购模式", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "采购模式不能为空") + private String purchaseWay; + + @Schema(description = "存货类型", example = "2") + private String saveType; + + @Schema(description = "产品品牌", example = "29464") + private Long brandId; + + @Schema(description = "产地") + private String productAddress; + + @Schema(description = "配送方式") + private String deliveryWay; + + @Schema(description = "产品来源") + private String productSource; + + @Schema(description = "产品状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "产品状态不能为空") + private String productStatus; + + @Schema(description = "销售状态", example = "2") + private String saleStatus; + + @Schema(description = "生命周期") + private String lifeCycle; + + @Schema(description = "预计上市时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime ipoDate; + + @Schema(description = "审核状态") + private String auditStatus; + + @TableField(exist = false) + private String categoryName; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductCreateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductCreateReqVO.java new file mode 100644 index 0000000..226f9b0 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductCreateReqVO.java @@ -0,0 +1,14 @@ +package com.yunxi.scm.module.xxjj.controller.admin.product.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 产品创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductCreateReqVO extends ProductBaseVO { + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExcelVO.java new file mode 100644 index 0000000..2d0a440 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExcelVO.java @@ -0,0 +1,100 @@ +package com.yunxi.scm.module.xxjj.controller.admin.product.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.yunxi.scm.framework.excel.core.annotations.DictFormat; +import com.yunxi.scm.framework.excel.core.convert.DictConvert; + + +/** + * 产品 Excel VO + * + * @author 长江云息 + */ +@Data +public class ProductExcelVO { + + @ExcelProperty("自增主键") + private Long id; + + @ExcelProperty("产品编码") + private String productCode; + + @ExcelProperty("产品名称") + private String productName; + + @ExcelProperty("产品图片") + private String productPicture; + + @ExcelProperty(value = "产品类别", converter = DictConvert.class) + @DictFormat("product_class") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String classId; + + @ExcelProperty(value = "产品类型", converter = DictConvert.class) + @DictFormat("product_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String typeId; + + @ExcelProperty("产品分类") + private Long categoryId; + + @ExcelProperty("产品规格") + private String spec; + + @ExcelProperty("标准单价") + private BigDecimal singlePrice; + + @ExcelProperty("首选供应商") + private Long supplyId; + + @ExcelProperty(value = "采购模式", converter = DictConvert.class) + @DictFormat("purchase_way") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String purchaseWay; + + @ExcelProperty(value = "存货类型", converter = DictConvert.class) + @DictFormat("save_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String saveType; + + @ExcelProperty("产品品牌") + private Long brandId; + + @ExcelProperty("产地") + private String productAddress; + + @ExcelProperty(value = "配送方式", converter = DictConvert.class) + @DictFormat("delivery_way") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String deliveryWay; + + @ExcelProperty(value = "产品来源", converter = DictConvert.class) + @DictFormat("product_source") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String productSource; + + @ExcelProperty(value = "产品状态", converter = DictConvert.class) + @DictFormat("product_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String productStatus; + + @ExcelProperty(value = "销售状态", converter = DictConvert.class) + @DictFormat("sale_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String saleStatus; + + @ExcelProperty(value = "生命周期", converter = DictConvert.class) + @DictFormat("life_cycle") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String lifeCycle; + + @ExcelProperty("预计上市时间") + private LocalDateTime ipoDate; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @ExcelProperty(value = "审核状态", converter = DictConvert.class) + @DictFormat("audit_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String auditStatus; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExportReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExportReqVO.java new file mode 100644 index 0000000..a222e23 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductExportReqVO.java @@ -0,0 +1,83 @@ +package com.yunxi.scm.module.xxjj.controller.admin.product.vo; + +import lombok.*; + +import java.math.BigDecimal; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import java.time.LocalDateTime; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 产品 Excel 导出 Request VO,参数和 ProductPageReqVO 是一致的") +@Data +public class ProductExportReqVO { + + @Schema(description = "产品编码") + private String productCode; + + @Schema(description = "产品名称", example = "芋艿") + private String productName; + + @Schema(description = "产品图片", example = "芋艿") + private String productPicture; + + @Schema(description = "产品类别", example = "28952") + private String classId; + + @Schema(description = "产品类型", example = "4846") + private String typeId; + + @Schema(description = "产品分类", example = "30850") + private Long categoryId; + + @Schema(description = "产品规格") + private String spec; + + @Schema(description = "标准单价", example = "19894") + private BigDecimal singlePrice; + + @Schema(description = "首选供应商", example = "2309") + private Long supplyId; + + @Schema(description = "采购模式") + private String purchaseWay; + + @Schema(description = "存货类型", example = "2") + private String saveType; + + @Schema(description = "产品品牌", example = "29464") + private Long brandId; + + @Schema(description = "产地") + private String productAddress; + + @Schema(description = "配送方式") + private String deliveryWay; + + @Schema(description = "产品来源") + private String productSource; + + @Schema(description = "产品状态", example = "2") + private String productStatus; + + @Schema(description = "销售状态", example = "2") + private String saleStatus; + + @Schema(description = "生命周期") + private String lifeCycle; + + @Schema(description = "预计上市时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] ipoDate; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "审核状态", example = "2") + private String auditStatus; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductPageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductPageReqVO.java new file mode 100644 index 0000000..c18a20e --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductPageReqVO.java @@ -0,0 +1,86 @@ +package com.yunxi.scm.module.xxjj.controller.admin.product.vo; + +import lombok.*; + +import java.math.BigDecimal; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 产品分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductPageReqVO extends PageParam { + + @Schema(description = "产品编码") + private String productCode; + + @Schema(description = "产品名称", example = "芋艿") + private String productName; + + @Schema(description = "产品图片", example = "芋艿") + private String productPicture; + + + @Schema(description = "产品类别", example = "28952") + private String classId; + + @Schema(description = "产品类型", example = "4846") + private String typeId; + + @Schema(description = "产品分类", example = "30850") + private Long categoryId; + + @Schema(description = "产品规格") + private String spec; + + @Schema(description = "标准单价", example = "19894") + private BigDecimal singlePrice; + + @Schema(description = "首选供应商", example = "2309") + private Long supplyId; + + @Schema(description = "采购模式") + private String purchaseWay; + + @Schema(description = "存货类型", example = "2") + private String saveType; + + @Schema(description = "产品品牌", example = "29464") + private Long brandId; + + @Schema(description = "产地") + private String productAddress; + + @Schema(description = "配送方式") + private String deliveryWay; + + @Schema(description = "产品来源") + private String productSource; + + @Schema(description = "产品状态", example = "2") + private String productStatus; + + @Schema(description = "销售状态", example = "2") + private String saleStatus; + + @Schema(description = "生命周期") + private String lifeCycle; + + @Schema(description = "预计上市时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] ipoDate; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "审核状态", example = "2") + private String auditStatus; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductRespVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductRespVO.java new file mode 100644 index 0000000..064b624 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductRespVO.java @@ -0,0 +1,19 @@ +package com.yunxi.scm.module.xxjj.controller.admin.product.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 产品 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductRespVO extends ProductBaseVO { + + @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "7034") + private Long id; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductUpdateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductUpdateReqVO.java new file mode 100644 index 0000000..f1b7228 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/product/vo/ProductUpdateReqVO.java @@ -0,0 +1,18 @@ +package com.yunxi.scm.module.xxjj.controller.admin.product.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 产品更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductUpdateReqVO extends ProductBaseVO { + + @Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "7034") + @NotNull(message = "自增主键不能为空") + private Long id; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/ProductCategoryController.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/ProductCategoryController.java new file mode 100644 index 0000000..64f3f75 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/ProductCategoryController.java @@ -0,0 +1,102 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productcategory; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.common.pojo.CommonResult; +import static com.yunxi.scm.framework.common.pojo.CommonResult.success; + +import com.yunxi.scm.framework.excel.core.util.ExcelUtils; + +import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog; +import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.yunxi.scm.module.xxjj.controller.admin.productcategory.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productcategory.ProductCategoryDO; +import com.yunxi.scm.module.xxjj.convert.productcategory.ProductCategoryConvert; +import com.yunxi.scm.module.xxjj.service.productcategory.ProductCategoryService; + +@Tag(name = "管理后台 - 产品分类") +@RestController +@RequestMapping("/xxjj/product-category") +@Validated +public class ProductCategoryController { + + @Resource + private ProductCategoryService productCategoryService; + + @PostMapping("/create") + @Operation(summary = "创建产品分类") + @PreAuthorize("@ss.hasPermission('xxjj:product-category:create')") + public CommonResult createProductCategory(@Valid @RequestBody ProductCategoryCreateReqVO createReqVO) { + return success(productCategoryService.createProductCategory(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新产品分类") + @PreAuthorize("@ss.hasPermission('xxjj:product-category:update')") + public CommonResult updateProductCategory(@Valid @RequestBody ProductCategoryUpdateReqVO updateReqVO) { + productCategoryService.updateProductCategory(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除产品分类") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('xxjj: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('xxjj:product-category:query')") + public CommonResult getProductCategory(@RequestParam("id") Long id) { + ProductCategoryDO productCategory = productCategoryService.getProductCategory(id); + return success(ProductCategoryConvert.INSTANCE.convert(productCategory)); + } + + @GetMapping("/list") + @Operation(summary = "获得产品分类列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('xxjj:product-category:query')") + public CommonResult> getProductCategoryList(@RequestParam("ids") Collection ids) { + List list = productCategoryService.getProductCategoryList(ids); + return success(ProductCategoryConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得产品分类分页") + @PreAuthorize("@ss.hasPermission('xxjj:product-category:query')") + public CommonResult> getProductCategoryPage(@Valid ProductCategoryPageReqVO pageVO) { + PageResult pageResult = productCategoryService.getProductCategoryPage(pageVO); + return success(ProductCategoryConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出产品分类 Excel") + @PreAuthorize("@ss.hasPermission('xxjj:product-category:export')") + @OperateLog(type = EXPORT) + public void exportProductCategoryExcel(@Valid ProductCategoryExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = productCategoryService.getProductCategoryList(exportReqVO); + // 导出 Excel + List datas = ProductCategoryConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "产品分类.xls", "数据", ProductCategoryExcelVO.class, datas); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryBaseVO.java new file mode 100644 index 0000000..aae6511 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryBaseVO.java @@ -0,0 +1,34 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productcategory.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import javax.validation.constraints.*; + +/** + * 产品分类 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class ProductCategoryBaseVO { + + @Schema(description = "分类编码") + private String code; + + @Schema(description = "分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotNull(message = "分类名称不能为空") + private String name; + + @Schema(description = "父分类id", example = "6365") + private Long parentId; + + @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "显示顺序不能为空") + private Integer sort; + + @Schema(description = "分类描述", example = "你说的对") + private String description; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryCreateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryCreateReqVO.java new file mode 100644 index 0000000..fe96539 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryCreateReqVO.java @@ -0,0 +1,14 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productcategory.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 产品分类创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductCategoryCreateReqVO extends ProductCategoryBaseVO { + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryExcelVO.java new file mode 100644 index 0000000..5e33fb2 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryExcelVO.java @@ -0,0 +1,40 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productcategory.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; + +import com.alibaba.excel.annotation.ExcelProperty; + +/** + * 产品分类 Excel VO + * + * @author 长江云息 + */ +@Data +public class ProductCategoryExcelVO { + + @ExcelProperty("分类id") + private Long id; + + @ExcelProperty("分类编码") + private String code; + + @ExcelProperty("分类名称") + private String name; + + @ExcelProperty("父分类id") + private Long parentId; + + @ExcelProperty("显示顺序") + private Integer sort; + + @ExcelProperty("分类描述") + private String description; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryExportReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryExportReqVO.java new file mode 100644 index 0000000..4108ffd --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryExportReqVO.java @@ -0,0 +1,23 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productcategory.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import java.time.LocalDateTime; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 产品分类 Excel 导出 Request VO,参数和 ProductCategoryPageReqVO 是一致的") +@Data +public class ProductCategoryExportReqVO { + + @Schema(description = "分类名称", example = "张三") + private String name; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryPageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryPageReqVO.java new file mode 100644 index 0000000..78a77b2 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryPageReqVO.java @@ -0,0 +1,25 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productcategory.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 产品分类分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductCategoryPageReqVO extends PageParam { + + @Schema(description = "分类名称", example = "张三") + private String name; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryRespVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryRespVO.java new file mode 100644 index 0000000..3ec71f3 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryRespVO.java @@ -0,0 +1,19 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productcategory.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 产品分类 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductCategoryRespVO extends ProductCategoryBaseVO { + + @Schema(description = "分类id", requiredMode = Schema.RequiredMode.REQUIRED, example = "32020") + private Long id; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryUpdateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryUpdateReqVO.java new file mode 100644 index 0000000..e497b69 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productcategory/vo/ProductCategoryUpdateReqVO.java @@ -0,0 +1,18 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productcategory.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 产品分类更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductCategoryUpdateReqVO extends ProductCategoryBaseVO { + + @Schema(description = "分类id", requiredMode = Schema.RequiredMode.REQUIRED, example = "32020") + @NotNull(message = "分类id不能为空") + private Long id; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/ProductClassController.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/ProductClassController.java new file mode 100644 index 0000000..9fdc0bb --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/ProductClassController.java @@ -0,0 +1,102 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productclass; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.common.pojo.CommonResult; +import static com.yunxi.scm.framework.common.pojo.CommonResult.success; + +import com.yunxi.scm.framework.excel.core.util.ExcelUtils; + +import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog; +import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.yunxi.scm.module.xxjj.controller.admin.productclass.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productclass.ProductClassDO; +import com.yunxi.scm.module.xxjj.convert.productclass.ProductClassConvert; +import com.yunxi.scm.module.xxjj.service.productclass.ProductClassService; + +@Tag(name = "管理后台 - 产品类别") +@RestController +@RequestMapping("/xxjj/product-class") +@Validated +public class ProductClassController { + + @Resource + private ProductClassService productClassService; + + @PostMapping("/create") + @Operation(summary = "创建产品类别") + @PreAuthorize("@ss.hasPermission('xxjj:product-class:create')") + public CommonResult createProductClass(@Valid @RequestBody ProductClassCreateReqVO createReqVO) { + return success(productClassService.createProductClass(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新产品类别") + @PreAuthorize("@ss.hasPermission('xxjj:product-class:update')") + public CommonResult updateProductClass(@Valid @RequestBody ProductClassUpdateReqVO updateReqVO) { + productClassService.updateProductClass(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除产品类别") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('xxjj:product-class:delete')") + public CommonResult deleteProductClass(@RequestParam("id") Long id) { + productClassService.deleteProductClass(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得产品类别") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('xxjj:product-class:query')") + public CommonResult getProductClass(@RequestParam("id") Long id) { + ProductClassDO productClass = productClassService.getProductClass(id); + return success(ProductClassConvert.INSTANCE.convert(productClass)); + } + + @GetMapping("/list") + @Operation(summary = "获得产品类别列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('xxjj:product-class:query')") + public CommonResult> getProductClassList(@RequestParam("ids") Collection ids) { + List list = productClassService.getProductClassList(ids); + return success(ProductClassConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得产品类别分页") + @PreAuthorize("@ss.hasPermission('xxjj:product-class:query')") + public CommonResult> getProductClassPage(@Valid ProductClassPageReqVO pageVO) { + PageResult pageResult = productClassService.getProductClassPage(pageVO); + return success(ProductClassConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出产品类别 Excel") + @PreAuthorize("@ss.hasPermission('xxjj:product-class:export')") + @OperateLog(type = EXPORT) + public void exportProductClassExcel(@Valid ProductClassExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = productClassService.getProductClassList(exportReqVO); + // 导出 Excel + List datas = ProductClassConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "产品类别.xls", "数据", ProductClassExcelVO.class, datas); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassBaseVO.java new file mode 100644 index 0000000..122e14f --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassBaseVO.java @@ -0,0 +1,31 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productclass.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import javax.validation.constraints.*; + +/** + * 产品类别 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class ProductClassBaseVO { + + @Schema(description = "类别名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotNull(message = "类别名称不能为空") + private String name; + + @Schema(description = "状态(0:启用,1:禁用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "状态(0:启用,1:禁用)不能为空") + private String status; + + @Schema(description = "商品数量") + private Integer num; + + @Schema(description = "类别描述", example = "随便") + private String description; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassCreateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassCreateReqVO.java new file mode 100644 index 0000000..0b7ca92 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassCreateReqVO.java @@ -0,0 +1,14 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productclass.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 产品类别创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductClassCreateReqVO extends ProductClassBaseVO { + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassExcelVO.java new file mode 100644 index 0000000..82c8aa0 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassExcelVO.java @@ -0,0 +1,41 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productclass.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.yunxi.scm.framework.excel.core.annotations.DictFormat; +import com.yunxi.scm.framework.excel.core.convert.DictConvert; + + +/** + * 产品类别 Excel VO + * + * @author 长江云息 + */ +@Data +public class ProductClassExcelVO { + + @ExcelProperty("id") + private Long id; + + @ExcelProperty("类别名称") + private String name; + + @ExcelProperty(value = "状态(0:启用,1:禁用)", converter = DictConvert.class) + @DictFormat("class_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String status; + + @ExcelProperty("商品数量") + private Integer num; + + @ExcelProperty("类别描述") + private String description; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassExportReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassExportReqVO.java new file mode 100644 index 0000000..747ee85 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassExportReqVO.java @@ -0,0 +1,26 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productclass.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import java.time.LocalDateTime; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 产品类别 Excel 导出 Request VO,参数和 ProductClassPageReqVO 是一致的") +@Data +public class ProductClassExportReqVO { + + @Schema(description = "类别名称", example = "王五") + private String name; + + @Schema(description = "状态(0:启用,1:禁用)", example = "1") + private String status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassPageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassPageReqVO.java new file mode 100644 index 0000000..2a4d8c0 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassPageReqVO.java @@ -0,0 +1,28 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productclass.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 产品类别分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductClassPageReqVO extends PageParam { + + @Schema(description = "类别名称", example = "王五") + private String name; + + @Schema(description = "状态(0:启用,1:禁用)", example = "1") + private String status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassRespVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassRespVO.java new file mode 100644 index 0000000..46adefc --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassRespVO.java @@ -0,0 +1,19 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productclass.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 产品类别 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductClassRespVO extends ProductClassBaseVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26864") + private Long id; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassUpdateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassUpdateReqVO.java new file mode 100644 index 0000000..09927c7 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/productclass/vo/ProductClassUpdateReqVO.java @@ -0,0 +1,18 @@ +package com.yunxi.scm.module.xxjj.controller.admin.productclass.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 产品类别更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductClassUpdateReqVO extends ProductClassBaseVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26864") + @NotNull(message = "id不能为空") + private Long id; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/ProductTypeController.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/ProductTypeController.java new file mode 100644 index 0000000..9531faf --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/ProductTypeController.java @@ -0,0 +1,102 @@ +package com.yunxi.scm.module.xxjj.controller.admin.producttype; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.common.pojo.CommonResult; +import static com.yunxi.scm.framework.common.pojo.CommonResult.success; + +import com.yunxi.scm.framework.excel.core.util.ExcelUtils; + +import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog; +import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.yunxi.scm.module.xxjj.controller.admin.producttype.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.producttype.ProductTypeDO; +import com.yunxi.scm.module.xxjj.convert.producttype.ProductTypeConvert; +import com.yunxi.scm.module.xxjj.service.producttype.ProductTypeService; + +@Tag(name = "管理后台 - 产品类型") +@RestController +@RequestMapping("/xxjj/product-type") +@Validated +public class ProductTypeController { + + @Resource + private ProductTypeService productTypeService; + + @PostMapping("/create") + @Operation(summary = "创建产品类型") + @PreAuthorize("@ss.hasPermission('xxjj:product-type:create')") + public CommonResult createProductType(@Valid @RequestBody ProductTypeCreateReqVO createReqVO) { + return success(productTypeService.createProductType(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新产品类型") + @PreAuthorize("@ss.hasPermission('xxjj:product-type:update')") + public CommonResult updateProductType(@Valid @RequestBody ProductTypeUpdateReqVO updateReqVO) { + productTypeService.updateProductType(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除产品类型") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('xxjj:product-type:delete')") + public CommonResult deleteProductType(@RequestParam("id") Long id) { + productTypeService.deleteProductType(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得产品类型") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('xxjj:product-type:query')") + public CommonResult getProductType(@RequestParam("id") Long id) { + ProductTypeDO productType = productTypeService.getProductType(id); + return success(ProductTypeConvert.INSTANCE.convert(productType)); + } + + @GetMapping("/list") + @Operation(summary = "获得产品类型列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('xxjj:product-type:query')") + public CommonResult> getProductTypeList(@RequestParam("ids") Collection ids) { + List list = productTypeService.getProductTypeList(ids); + return success(ProductTypeConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得产品类型分页") + @PreAuthorize("@ss.hasPermission('xxjj:product-type:query')") + public CommonResult> getProductTypePage(@Valid ProductTypePageReqVO pageVO) { + PageResult pageResult = productTypeService.getProductTypePage(pageVO); + return success(ProductTypeConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出产品类型 Excel") + @PreAuthorize("@ss.hasPermission('xxjj:product-type:export')") + @OperateLog(type = EXPORT) + public void exportProductTypeExcel(@Valid ProductTypeExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = productTypeService.getProductTypeList(exportReqVO); + // 导出 Excel + List datas = ProductTypeConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "产品类型.xls", "数据", ProductTypeExcelVO.class, datas); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeBaseVO.java new file mode 100644 index 0000000..37f6c5c --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeBaseVO.java @@ -0,0 +1,38 @@ +package com.yunxi.scm.module.xxjj.controller.admin.producttype.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import javax.validation.constraints.*; + +/** + * 产品类型 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class ProductTypeBaseVO { + + @Schema(description = "类别id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23579") + @NotNull(message = "类别id不能为空") + private Long classId; + + @Schema(description = "类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotNull(message = "类型名称不能为空") + private String name; + + @Schema(description = "状态(0:启用,1:禁用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "状态(0:启用,1:禁用)不能为空") + private String status; + + @Schema(description = "商品数量") + private Integer num; + + @Schema(description = "类型描述", example = "你猜") + private String description; + + @Schema(description = "类别名称") + private String className; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeCreateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeCreateReqVO.java new file mode 100644 index 0000000..6385ed7 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeCreateReqVO.java @@ -0,0 +1,14 @@ +package com.yunxi.scm.module.xxjj.controller.admin.producttype.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 产品类型创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductTypeCreateReqVO extends ProductTypeBaseVO { + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeExcelVO.java new file mode 100644 index 0000000..08c6f5d --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeExcelVO.java @@ -0,0 +1,44 @@ +package com.yunxi.scm.module.xxjj.controller.admin.producttype.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.yunxi.scm.framework.excel.core.annotations.DictFormat; +import com.yunxi.scm.framework.excel.core.convert.DictConvert; + + +/** + * 产品类型 Excel VO + * + * @author 长江云息 + */ +@Data +public class ProductTypeExcelVO { + + @ExcelProperty("id") + private Long id; + + @ExcelProperty("类别id") + private Long classId; + + @ExcelProperty("类型名称") + private String name; + + @ExcelProperty(value = "状态(0:启用,1:禁用)", converter = DictConvert.class) + @DictFormat("class_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String status; + + @ExcelProperty("商品数量") + private Integer num; + + @ExcelProperty("类型描述") + private String description; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeExportReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeExportReqVO.java new file mode 100644 index 0000000..75ce459 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeExportReqVO.java @@ -0,0 +1,35 @@ +package com.yunxi.scm.module.xxjj.controller.admin.producttype.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import java.time.LocalDateTime; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 产品类型 Excel 导出 Request VO,参数和 ProductTypePageReqVO 是一致的") +@Data +public class ProductTypeExportReqVO { + + @Schema(description = "类别id", example = "23579") + private Long classId; + + @Schema(description = "类型名称", example = "芋艿") + private String name; + + @Schema(description = "状态(0:启用,1:禁用)", example = "1") + private String status; + + @Schema(description = "商品数量") + private Integer num; + + @Schema(description = "类型描述", example = "你猜") + private String description; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypePageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypePageReqVO.java new file mode 100644 index 0000000..df200bc --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypePageReqVO.java @@ -0,0 +1,40 @@ +package com.yunxi.scm.module.xxjj.controller.admin.producttype.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 产品类型分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductTypePageReqVO extends PageParam { + + @Schema(description = "类别id", example = "23579") + private Long classId; + + @Schema(description = "类型名称", example = "芋艿") + private String name; + + @Schema(description = "状态(0:启用,1:禁用)", example = "1") + private String status; + + @Schema(description = "商品数量") + private Integer num; + + @Schema(description = "类型描述", example = "你猜") + private String description; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "类别名称") + private String className; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeRespVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeRespVO.java new file mode 100644 index 0000000..1792d7c --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeRespVO.java @@ -0,0 +1,19 @@ +package com.yunxi.scm.module.xxjj.controller.admin.producttype.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 产品类型 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductTypeRespVO extends ProductTypeBaseVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8651") + private Long id; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeUpdateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeUpdateReqVO.java new file mode 100644 index 0000000..f2b6640 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/producttype/vo/ProductTypeUpdateReqVO.java @@ -0,0 +1,18 @@ +package com.yunxi.scm.module.xxjj.controller.admin.producttype.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 产品类型更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductTypeUpdateReqVO extends ProductTypeBaseVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8651") + @NotNull(message = "id不能为空") + private Long id; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/TaskManageController.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/TaskManageController.java new file mode 100644 index 0000000..a18093b --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/TaskManageController.java @@ -0,0 +1,102 @@ +package com.yunxi.scm.module.xxjj.controller.admin.taskmanage; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.common.pojo.CommonResult; +import static com.yunxi.scm.framework.common.pojo.CommonResult.success; + +import com.yunxi.scm.framework.excel.core.util.ExcelUtils; + +import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog; +import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.yunxi.scm.module.xxjj.controller.admin.taskmanage.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.taskmanage.TaskManageDO; +import com.yunxi.scm.module.xxjj.convert.taskmanage.TaskManageConvert; +import com.yunxi.scm.module.xxjj.service.taskmanage.TaskManageService; + +@Tag(name = "管理后台 - 任务管理") +@RestController +@RequestMapping("/xxjj/task-manage") +@Validated +public class TaskManageController { + + @Resource + private TaskManageService taskManageService; + + @PostMapping("/create") + @Operation(summary = "创建任务管理") + @PreAuthorize("@ss.hasPermission('xxjj:task-manage:create')") + public CommonResult createTaskManage(@Valid @RequestBody TaskManageCreateReqVO createReqVO) { + return success(taskManageService.createTaskManage(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新任务管理") + @PreAuthorize("@ss.hasPermission('xxjj:task-manage:update')") + public CommonResult updateTaskManage(@Valid @RequestBody TaskManageUpdateReqVO updateReqVO) { + taskManageService.updateTaskManage(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除任务管理") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('xxjj:task-manage:delete')") + public CommonResult deleteTaskManage(@RequestParam("id") Long id) { + taskManageService.deleteTaskManage(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得任务管理") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('xxjj:task-manage:query')") + public CommonResult getTaskManage(@RequestParam("id") Long id) { + TaskManageDO taskManage = taskManageService.getTaskManage(id); + return success(TaskManageConvert.INSTANCE.convert(taskManage)); + } + + @GetMapping("/list") + @Operation(summary = "获得任务管理列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('xxjj:task-manage:query')") + public CommonResult> getTaskManageList(@RequestParam("ids") Collection ids) { + List list = taskManageService.getTaskManageList(ids); + return success(TaskManageConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得任务管理分页") + @PreAuthorize("@ss.hasPermission('xxjj:task-manage:query')") + public CommonResult> getTaskManagePage(@Valid TaskManagePageReqVO pageVO) { + PageResult pageResult = taskManageService.getTaskManagePage(pageVO); + return success(TaskManageConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出任务管理 Excel") + @PreAuthorize("@ss.hasPermission('xxjj:task-manage:export')") + @OperateLog(type = EXPORT) + public void exportTaskManageExcel(@Valid TaskManageExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = taskManageService.getTaskManageList(exportReqVO); + // 导出 Excel + List datas = TaskManageConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "任务管理.xls", "数据", TaskManageExcelVO.class, datas); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageBaseVO.java new file mode 100644 index 0000000..65e1f5b --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageBaseVO.java @@ -0,0 +1,71 @@ +package com.yunxi.scm.module.xxjj.controller.admin.taskmanage.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import javax.validation.constraints.*; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * 任务管理 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class TaskManageBaseVO { + + @Schema(description = "任务标题", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "任务标题不能为空") + private String title; + + @Schema(description = "开始时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "开始时间不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime startTime; + + @Schema(description = "结束时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime endTime; + + @Schema(description = "关联项目", requiredMode = Schema.RequiredMode.REQUIRED, example = "26681") + @NotNull(message = "关联项目不能为空") + private Long projectId; + + @Schema(description = "负责人员", requiredMode = Schema.RequiredMode.REQUIRED, example = "1064") + @NotNull(message = "负责人员不能为空") + private Long chargeId; + + @Schema(description = "参与人员", requiredMode = Schema.RequiredMode.REQUIRED, example = "4368") + @NotNull(message = "参与人员不能为空") + private Long joinId; + + @Schema(description = "任务标记", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "任务标记不能为空") + private String taskMark; + + @Schema(description = "紧要程度", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "紧要程度不能为空") + private String urgentLevel; + + @Schema(description = "任务提醒", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "任务提醒不能为空") + private String taskRemind; + + @Schema(description = "提醒方式", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "提醒方式不能为空") + private String remindWay; + + @Schema(description = "任务描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "随便") + @NotNull(message = "任务描述不能为空") + private String taskDescription; + + @Schema(description = "上传附件", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "上传附件不能为空") + private String uploadAnnex; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageCreateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageCreateReqVO.java new file mode 100644 index 0000000..7ab97ad --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageCreateReqVO.java @@ -0,0 +1,14 @@ +package com.yunxi.scm.module.xxjj.controller.admin.taskmanage.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 任务管理创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class TaskManageCreateReqVO extends TaskManageBaseVO { + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageExcelVO.java new file mode 100644 index 0000000..dd1e751 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageExcelVO.java @@ -0,0 +1,69 @@ +package com.yunxi.scm.module.xxjj.controller.admin.taskmanage.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.yunxi.scm.framework.excel.core.annotations.DictFormat; +import com.yunxi.scm.framework.excel.core.convert.DictConvert; + + +/** + * 任务管理 Excel VO + * + * @author 长江云息 + */ +@Data +public class TaskManageExcelVO { + + @ExcelProperty("id") + private Long id; + + @ExcelProperty("任务标题") + private String title; + + @ExcelProperty("开始时间") + private LocalDateTime startTime; + + @ExcelProperty("结束时间") + private LocalDateTime endTime; + + @ExcelProperty("关联项目") + private Long projectId; + + @ExcelProperty("负责人员") + private Long chargeId; + + @ExcelProperty("参与人员") + private Long joinId; + + @ExcelProperty("任务标记") + private String taskMark; + + @ExcelProperty(value = "紧要程度", converter = DictConvert.class) + @DictFormat("urgent_level") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String urgentLevel; + + @ExcelProperty(value = "任务提醒", converter = DictConvert.class) + @DictFormat("task_remind") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String taskRemind; + + @ExcelProperty(value = "提醒方式", converter = DictConvert.class) + @DictFormat("remind_way") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String remindWay; + + @ExcelProperty("任务描述") + private String taskDescription; + + @ExcelProperty("上传附件") + private String uploadAnnex; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageExportReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageExportReqVO.java new file mode 100644 index 0000000..f4dc231 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageExportReqVO.java @@ -0,0 +1,58 @@ +package com.yunxi.scm.module.xxjj.controller.admin.taskmanage.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import java.time.LocalDateTime; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 任务管理 Excel 导出 Request VO,参数和 TaskManagePageReqVO 是一致的") +@Data +public class TaskManageExportReqVO { + + @Schema(description = "任务标题") + private String title; + + @Schema(description = "开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] startTime; + + @Schema(description = "结束时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endTime; + + @Schema(description = "关联项目", example = "26681") + private Long projectId; + + @Schema(description = "负责人员", example = "1064") + private Long chargeId; + + @Schema(description = "参与人员", example = "4368") + private Long joinId; + + @Schema(description = "任务标记") + private String taskMark; + + @Schema(description = "紧要程度") + private String urgentLevel; + + @Schema(description = "任务提醒") + private String taskRemind; + + @Schema(description = "提醒方式") + private String remindWay; + + @Schema(description = "任务描述", example = "随便") + private String taskDescription; + + @Schema(description = "上传附件") + private String uploadAnnex; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManagePageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManagePageReqVO.java new file mode 100644 index 0000000..f83fbe4 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManagePageReqVO.java @@ -0,0 +1,60 @@ +package com.yunxi.scm.module.xxjj.controller.admin.taskmanage.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 任务管理分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class TaskManagePageReqVO extends PageParam { + + @Schema(description = "任务标题") + private String title; + + @Schema(description = "开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] startTime; + + @Schema(description = "结束时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endTime; + + @Schema(description = "关联项目", example = "26681") + private Long projectId; + + @Schema(description = "负责人员", example = "1064") + private Long chargeId; + + @Schema(description = "参与人员", example = "4368") + private Long joinId; + + @Schema(description = "任务标记") + private String taskMark; + + @Schema(description = "紧要程度") + private String urgentLevel; + + @Schema(description = "任务提醒") + private String taskRemind; + + @Schema(description = "提醒方式") + private String remindWay; + + @Schema(description = "任务描述", example = "随便") + private String taskDescription; + + @Schema(description = "上传附件") + private String uploadAnnex; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageRespVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageRespVO.java new file mode 100644 index 0000000..a363610 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageRespVO.java @@ -0,0 +1,19 @@ +package com.yunxi.scm.module.xxjj.controller.admin.taskmanage.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 任务管理 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class TaskManageRespVO extends TaskManageBaseVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25465") + private Long id; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageUpdateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageUpdateReqVO.java new file mode 100644 index 0000000..968413f --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/taskmanage/vo/TaskManageUpdateReqVO.java @@ -0,0 +1,18 @@ +package com.yunxi.scm.module.xxjj.controller.admin.taskmanage.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 任务管理更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class TaskManageUpdateReqVO extends TaskManageBaseVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25465") + @NotNull(message = "id不能为空") + private Long id; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/TeamManageController.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/TeamManageController.java new file mode 100644 index 0000000..1c433c5 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/TeamManageController.java @@ -0,0 +1,102 @@ +package com.yunxi.scm.module.xxjj.controller.admin.teammanage; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.common.pojo.CommonResult; +import static com.yunxi.scm.framework.common.pojo.CommonResult.success; + +import com.yunxi.scm.framework.excel.core.util.ExcelUtils; + +import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog; +import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.yunxi.scm.module.xxjj.controller.admin.teammanage.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.teammanage.TeamManageDO; +import com.yunxi.scm.module.xxjj.convert.teammanage.TeamManageConvert; +import com.yunxi.scm.module.xxjj.service.teammanage.TeamManageService; + +@Tag(name = "管理后台 - 团队管理") +@RestController +@RequestMapping("/xxjj/team-manage") +@Validated +public class TeamManageController { + + @Resource + private TeamManageService teamManageService; + + @PostMapping("/create") + @Operation(summary = "创建团队管理") + @PreAuthorize("@ss.hasPermission('xxjj:team-manage:create')") + public CommonResult createTeamManage(@Valid @RequestBody TeamManageCreateReqVO createReqVO) { + return success(teamManageService.createTeamManage(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新团队管理") + @PreAuthorize("@ss.hasPermission('xxjj:team-manage:update')") + public CommonResult updateTeamManage(@Valid @RequestBody TeamManageUpdateReqVO updateReqVO) { + teamManageService.updateTeamManage(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除团队管理") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('xxjj:team-manage:delete')") + public CommonResult deleteTeamManage(@RequestParam("id") Long id) { + teamManageService.deleteTeamManage(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得团队管理") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('xxjj:team-manage:query')") + public CommonResult getTeamManage(@RequestParam("id") Long id) { + TeamManageDO teamManage = teamManageService.getTeamManage(id); + return success(TeamManageConvert.INSTANCE.convert(teamManage)); + } + + @GetMapping("/list") + @Operation(summary = "获得团队管理列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('xxjj:team-manage:query')") + public CommonResult> getTeamManageList(@RequestParam("ids") Collection ids) { + List list = teamManageService.getTeamManageList(ids); + return success(TeamManageConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得团队管理分页") + @PreAuthorize("@ss.hasPermission('xxjj:team-manage:query')") + public CommonResult> getTeamManagePage(@Valid TeamManagePageReqVO pageVO) { + PageResult pageResult = teamManageService.getTeamManagePage(pageVO); + return success(TeamManageConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出团队管理 Excel") + @PreAuthorize("@ss.hasPermission('xxjj:team-manage:export')") + @OperateLog(type = EXPORT) + public void exportTeamManageExcel(@Valid TeamManageExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = teamManageService.getTeamManageList(exportReqVO); + // 导出 Excel + List datas = TeamManageConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "团队管理.xls", "数据", TeamManageExcelVO.class, datas); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageBaseVO.java new file mode 100644 index 0000000..a93cdf9 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageBaseVO.java @@ -0,0 +1,36 @@ +package com.yunxi.scm.module.xxjj.controller.admin.teammanage.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import javax.validation.constraints.*; + +/** + * 团队管理 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class TeamManageBaseVO { + + @Schema(description = "团队名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotNull(message = "团队名称不能为空") + private String name; + + @Schema(description = "团队图片", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "团队图片不能为空") + private String picture; + + @Schema(description = "负责人员", requiredMode = Schema.RequiredMode.REQUIRED, example = "3934") + @NotNull(message = "负责人员不能为空") + private Long chargeId; + + @Schema(description = "团队成员", requiredMode = Schema.RequiredMode.REQUIRED, example = "169") + @NotNull(message = "团队成员不能为空") + private Long teamId; + + @Schema(description = "团队描述", example = "你猜") + private String teamDescription; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageCreateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageCreateReqVO.java new file mode 100644 index 0000000..ab3db88 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageCreateReqVO.java @@ -0,0 +1,14 @@ +package com.yunxi.scm.module.xxjj.controller.admin.teammanage.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 团队管理创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class TeamManageCreateReqVO extends TeamManageBaseVO { + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageExcelVO.java new file mode 100644 index 0000000..d55fdda --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageExcelVO.java @@ -0,0 +1,40 @@ +package com.yunxi.scm.module.xxjj.controller.admin.teammanage.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; + +import com.alibaba.excel.annotation.ExcelProperty; + +/** + * 团队管理 Excel VO + * + * @author 长江云息 + */ +@Data +public class TeamManageExcelVO { + + @ExcelProperty("id") + private Long id; + + @ExcelProperty("团队名称") + private String name; + + @ExcelProperty("团队图片") + private String picture; + + @ExcelProperty("负责人员") + private Long chargeId; + + @ExcelProperty("团队成员") + private Long teamId; + + @ExcelProperty("团队描述") + private String teamDescription; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageExportReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageExportReqVO.java new file mode 100644 index 0000000..c4cc3fd --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageExportReqVO.java @@ -0,0 +1,35 @@ +package com.yunxi.scm.module.xxjj.controller.admin.teammanage.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import java.time.LocalDateTime; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 团队管理 Excel 导出 Request VO,参数和 TeamManagePageReqVO 是一致的") +@Data +public class TeamManageExportReqVO { + + @Schema(description = "团队名称", example = "芋艿") + private String name; + + @Schema(description = "团队图片") + private String picture; + + @Schema(description = "负责人员", example = "3934") + private Long chargeId; + + @Schema(description = "团队成员", example = "169") + private Long teamId; + + @Schema(description = "团队描述", example = "你猜") + private String teamDescription; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManagePageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManagePageReqVO.java new file mode 100644 index 0000000..9063438 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManagePageReqVO.java @@ -0,0 +1,37 @@ +package com.yunxi.scm.module.xxjj.controller.admin.teammanage.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 团队管理分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class TeamManagePageReqVO extends PageParam { + + @Schema(description = "团队名称", example = "芋艿") + private String name; + + @Schema(description = "团队图片") + private String picture; + + @Schema(description = "负责人员", example = "3934") + private Long chargeId; + + @Schema(description = "团队成员", example = "169") + private Long teamId; + + @Schema(description = "团队描述", example = "你猜") + private String teamDescription; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageRespVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageRespVO.java new file mode 100644 index 0000000..c1cc175 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageRespVO.java @@ -0,0 +1,19 @@ +package com.yunxi.scm.module.xxjj.controller.admin.teammanage.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 团队管理 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class TeamManageRespVO extends TeamManageBaseVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9591") + private Long id; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageUpdateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageUpdateReqVO.java new file mode 100644 index 0000000..55dd4ea --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/teammanage/vo/TeamManageUpdateReqVO.java @@ -0,0 +1,18 @@ +package com.yunxi.scm.module.xxjj.controller.admin.teammanage.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 团队管理更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class TeamManageUpdateReqVO extends TeamManageBaseVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9591") + @NotNull(message = "id不能为空") + private Long id; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/WorkReportController.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/WorkReportController.java new file mode 100644 index 0000000..00e6dea --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/WorkReportController.java @@ -0,0 +1,102 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workreport; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.common.pojo.CommonResult; +import static com.yunxi.scm.framework.common.pojo.CommonResult.success; + +import com.yunxi.scm.framework.excel.core.util.ExcelUtils; + +import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog; +import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.yunxi.scm.module.xxjj.controller.admin.workreport.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.workreport.WorkReportDO; +import com.yunxi.scm.module.xxjj.convert.workreport.WorkReportConvert; +import com.yunxi.scm.module.xxjj.service.workreport.WorkReportService; + +@Tag(name = "管理后台 - 工作报告") +@RestController +@RequestMapping("/xxjj/work-report") +@Validated +public class WorkReportController { + + @Resource + private WorkReportService workReportService; + + @PostMapping("/create") + @Operation(summary = "创建工作报告") + @PreAuthorize("@ss.hasPermission('xxjj:work-report:create')") + public CommonResult createWorkReport(@Valid @RequestBody WorkReportCreateReqVO createReqVO) { + return success(workReportService.createWorkReport(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工作报告") + @PreAuthorize("@ss.hasPermission('xxjj:work-report:update')") + public CommonResult updateWorkReport(@Valid @RequestBody WorkReportUpdateReqVO updateReqVO) { + workReportService.updateWorkReport(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工作报告") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('xxjj:work-report:delete')") + public CommonResult deleteWorkReport(@RequestParam("id") Long id) { + workReportService.deleteWorkReport(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工作报告") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('xxjj:work-report:query')") + public CommonResult getWorkReport(@RequestParam("id") Long id) { + WorkReportDO workReport = workReportService.getWorkReport(id); + return success(WorkReportConvert.INSTANCE.convert(workReport)); + } + + @GetMapping("/list") + @Operation(summary = "获得工作报告列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('xxjj:work-report:query')") + public CommonResult> getWorkReportList(@RequestParam("ids") Collection ids) { + List list = workReportService.getWorkReportList(ids); + return success(WorkReportConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得工作报告分页") + @PreAuthorize("@ss.hasPermission('xxjj:work-report:query')") + public CommonResult> getWorkReportPage(@Valid WorkReportPageReqVO pageVO) { + PageResult pageResult = workReportService.getWorkReportPage(pageVO); + return success(WorkReportConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工作报告 Excel") + @PreAuthorize("@ss.hasPermission('xxjj:work-report:export')") + @OperateLog(type = EXPORT) + public void exportWorkReportExcel(@Valid WorkReportExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = workReportService.getWorkReportList(exportReqVO); + // 导出 Excel + List datas = WorkReportConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "工作报告.xls", "数据", WorkReportExcelVO.class, datas); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportBaseVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportBaseVO.java new file mode 100644 index 0000000..bf6c4eb --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportBaseVO.java @@ -0,0 +1,66 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workreport.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import javax.validation.constraints.*; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * 工作报告 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class WorkReportBaseVO { + + @Schema(description = "报告标题", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "报告标题不能为空") + private String title; + + @Schema(description = "报告类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "报告类型不能为空") + private String type; + + @Schema(description = "报告日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "报告日期不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime reportDate; + + @Schema(description = "工作总结", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工作总结不能为空") + private String workSummary; + + @Schema(description = "上传附件") + private String uploadFile; + + @Schema(description = "所属部门", requiredMode = Schema.RequiredMode.REQUIRED, example = "27438") + @NotNull(message = "所属部门不能为空") + private Long departmentId; + + @Schema(description = "批阅状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "批阅状态不能为空") + private String approvalStatus; + + @Schema(description = "提交人员", requiredMode = Schema.RequiredMode.REQUIRED, example = "25615") + @NotNull(message = "提交人员不能为空") + private Long commitId; + + @Schema(description = "提交日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "提交日期不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime commitDate; + + @Schema(description = "批阅人员", requiredMode = Schema.RequiredMode.REQUIRED, example = "32183") + @NotNull(message = "批阅人员不能为空") + private Long approvalId; + + @Schema(description = "抄送人员", example = "20683") + private Long copyId; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportCreateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportCreateReqVO.java new file mode 100644 index 0000000..9c80f7a --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportCreateReqVO.java @@ -0,0 +1,14 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workreport.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 工作报告创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class WorkReportCreateReqVO extends WorkReportBaseVO { + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportExcelVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportExcelVO.java new file mode 100644 index 0000000..96c6b98 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportExcelVO.java @@ -0,0 +1,64 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workreport.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.yunxi.scm.framework.excel.core.annotations.DictFormat; +import com.yunxi.scm.framework.excel.core.convert.DictConvert; + + +/** + * 工作报告 Excel VO + * + * @author 长江云息 + */ +@Data +public class WorkReportExcelVO { + + @ExcelProperty("id") + private Long id; + + @ExcelProperty("报告标题") + private String title; + + @ExcelProperty("报告类型") + private String type; + + @ExcelProperty("报告日期") + private LocalDateTime reportDate; + + @ExcelProperty("工作总结") + private String workSummary; + + @ExcelProperty("上传附件") + private String uploadFile; + + @ExcelProperty("所属部门") + private Long departmentId; + + @ExcelProperty(value = "批阅状态", converter = DictConvert.class) + @DictFormat("quality_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String approvalStatus; + + @ExcelProperty("提交人员") + private Long commitId; + + @ExcelProperty("提交日期") + private LocalDateTime commitDate; + + @ExcelProperty("批阅人员") + private Long approvalId; + + @ExcelProperty("抄送人员") + private Long copyId; + + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportExportReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportExportReqVO.java new file mode 100644 index 0000000..b8c1d51 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportExportReqVO.java @@ -0,0 +1,55 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workreport.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import java.time.LocalDateTime; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 工作报告 Excel 导出 Request VO,参数和 WorkReportPageReqVO 是一致的") +@Data +public class WorkReportExportReqVO { + + @Schema(description = "报告标题") + private String title; + + @Schema(description = "报告类型", example = "2") + private String type; + + @Schema(description = "报告日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] reportDate; + + @Schema(description = "工作总结") + private String workSummary; + + @Schema(description = "上传附件") + private String uploadFile; + + @Schema(description = "所属部门", example = "27438") + private Long departmentId; + + @Schema(description = "批阅状态", example = "2") + private String approvalStatus; + + @Schema(description = "提交人员", example = "25615") + private Long commitId; + + @Schema(description = "提交日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] commitDate; + + @Schema(description = "批阅人员", example = "32183") + private Long approvalId; + + @Schema(description = "抄送人员", example = "20683") + private Long copyId; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportPageReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportPageReqVO.java new file mode 100644 index 0000000..6549f87 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportPageReqVO.java @@ -0,0 +1,57 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workreport.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.yunxi.scm.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 工作报告分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class WorkReportPageReqVO extends PageParam { + + @Schema(description = "报告标题") + private String title; + + @Schema(description = "报告类型", example = "2") + private String type; + + @Schema(description = "报告日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] reportDate; + + @Schema(description = "工作总结") + private String workSummary; + + @Schema(description = "上传附件") + private String uploadFile; + + @Schema(description = "所属部门", example = "27438") + private Long departmentId; + + @Schema(description = "批阅状态", example = "2") + private String approvalStatus; + + @Schema(description = "提交人员", example = "25615") + private Long commitId; + + @Schema(description = "提交日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] commitDate; + + @Schema(description = "批阅人员", example = "32183") + private Long approvalId; + + @Schema(description = "抄送人员", example = "20683") + private Long copyId; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportRespVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportRespVO.java new file mode 100644 index 0000000..89eb673 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportRespVO.java @@ -0,0 +1,19 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workreport.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 工作报告 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class WorkReportRespVO extends WorkReportBaseVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28679") + private Long id; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportUpdateReqVO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportUpdateReqVO.java new file mode 100644 index 0000000..9c890fd --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/controller/admin/workreport/vo/WorkReportUpdateReqVO.java @@ -0,0 +1,18 @@ +package com.yunxi.scm.module.xxjj.controller.admin.workreport.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 工作报告更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class WorkReportUpdateReqVO extends WorkReportBaseVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28679") + @NotNull(message = "id不能为空") + private Long id; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/product/ProductConvert.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/product/ProductConvert.java new file mode 100644 index 0000000..e1f7fa6 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/product/ProductConvert.java @@ -0,0 +1,34 @@ +package com.yunxi.scm.module.xxjj.convert.product; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import com.yunxi.scm.module.xxjj.controller.admin.product.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.product.ProductDO; + +/** + * 产品 Convert + * + * @author 长江云息 + */ +@Mapper +public interface ProductConvert { + + ProductConvert INSTANCE = Mappers.getMapper(ProductConvert.class); + + ProductDO convert(ProductCreateReqVO bean); + + ProductDO convert(ProductUpdateReqVO bean); + + ProductRespVO convert(ProductDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/productcategory/ProductCategoryConvert.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/productcategory/ProductCategoryConvert.java new file mode 100644 index 0000000..2a0ef13 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/productcategory/ProductCategoryConvert.java @@ -0,0 +1,34 @@ +package com.yunxi.scm.module.xxjj.convert.productcategory; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import com.yunxi.scm.module.xxjj.controller.admin.productcategory.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productcategory.ProductCategoryDO; + +/** + * 产品分类 Convert + * + * @author 长江云息 + */ +@Mapper +public interface ProductCategoryConvert { + + ProductCategoryConvert INSTANCE = Mappers.getMapper(ProductCategoryConvert.class); + + ProductCategoryDO convert(ProductCategoryCreateReqVO bean); + + ProductCategoryDO convert(ProductCategoryUpdateReqVO bean); + + ProductCategoryRespVO convert(ProductCategoryDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/productclass/ProductClassConvert.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/productclass/ProductClassConvert.java new file mode 100644 index 0000000..0257f15 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/productclass/ProductClassConvert.java @@ -0,0 +1,34 @@ +package com.yunxi.scm.module.xxjj.convert.productclass; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import com.yunxi.scm.module.xxjj.controller.admin.productclass.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productclass.ProductClassDO; + +/** + * 产品类别 Convert + * + * @author 长江云息 + */ +@Mapper +public interface ProductClassConvert { + + ProductClassConvert INSTANCE = Mappers.getMapper(ProductClassConvert.class); + + ProductClassDO convert(ProductClassCreateReqVO bean); + + ProductClassDO convert(ProductClassUpdateReqVO bean); + + ProductClassRespVO convert(ProductClassDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/producttype/ProductTypeConvert.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/producttype/ProductTypeConvert.java new file mode 100644 index 0000000..be6522d --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/producttype/ProductTypeConvert.java @@ -0,0 +1,34 @@ +package com.yunxi.scm.module.xxjj.convert.producttype; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import com.yunxi.scm.module.xxjj.controller.admin.producttype.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.producttype.ProductTypeDO; + +/** + * 产品类型 Convert + * + * @author 长江云息 + */ +@Mapper +public interface ProductTypeConvert { + + ProductTypeConvert INSTANCE = Mappers.getMapper(ProductTypeConvert.class); + + ProductTypeDO convert(ProductTypeCreateReqVO bean); + + ProductTypeDO convert(ProductTypeUpdateReqVO bean); + + ProductTypeRespVO convert(ProductTypeDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/taskmanage/TaskManageConvert.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/taskmanage/TaskManageConvert.java new file mode 100644 index 0000000..e577ea9 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/taskmanage/TaskManageConvert.java @@ -0,0 +1,34 @@ +package com.yunxi.scm.module.xxjj.convert.taskmanage; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import com.yunxi.scm.module.xxjj.controller.admin.taskmanage.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.taskmanage.TaskManageDO; + +/** + * 任务管理 Convert + * + * @author 长江云息 + */ +@Mapper +public interface TaskManageConvert { + + TaskManageConvert INSTANCE = Mappers.getMapper(TaskManageConvert.class); + + TaskManageDO convert(TaskManageCreateReqVO bean); + + TaskManageDO convert(TaskManageUpdateReqVO bean); + + TaskManageRespVO convert(TaskManageDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/teammanage/TeamManageConvert.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/teammanage/TeamManageConvert.java new file mode 100644 index 0000000..b4e250d --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/teammanage/TeamManageConvert.java @@ -0,0 +1,34 @@ +package com.yunxi.scm.module.xxjj.convert.teammanage; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import com.yunxi.scm.module.xxjj.controller.admin.teammanage.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.teammanage.TeamManageDO; + +/** + * 团队管理 Convert + * + * @author 长江云息 + */ +@Mapper +public interface TeamManageConvert { + + TeamManageConvert INSTANCE = Mappers.getMapper(TeamManageConvert.class); + + TeamManageDO convert(TeamManageCreateReqVO bean); + + TeamManageDO convert(TeamManageUpdateReqVO bean); + + TeamManageRespVO convert(TeamManageDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/workreport/WorkReportConvert.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/workreport/WorkReportConvert.java new file mode 100644 index 0000000..6aedd0a --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/convert/workreport/WorkReportConvert.java @@ -0,0 +1,34 @@ +package com.yunxi.scm.module.xxjj.convert.workreport; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import com.yunxi.scm.module.xxjj.controller.admin.workreport.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.workreport.WorkReportDO; + +/** + * 工作报告 Convert + * + * @author 长江云息 + */ +@Mapper +public interface WorkReportConvert { + + WorkReportConvert INSTANCE = Mappers.getMapper(WorkReportConvert.class); + + WorkReportDO convert(WorkReportCreateReqVO bean); + + WorkReportDO convert(WorkReportUpdateReqVO bean); + + WorkReportRespVO convert(WorkReportDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/product/ProductDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/product/ProductDO.java new file mode 100644 index 0000000..dc42a67 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/product/ProductDO.java @@ -0,0 +1,134 @@ +package com.yunxi.scm.module.xxjj.dal.dataobject.product; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO; + +/** + * 产品 DO + * + * @author 长江云息 + */ +@TableName("yx_product") +@KeySequence("yx_product_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProductDO extends BaseDO { + + /** + * 自增主键 + */ + @TableId + private Long id; + /** + * 产品编码 + */ + private String productCode; + /** + * 产品名称 + */ + private String productName; + /** + * 产品图片 + */ + private String productPicture; + /** + * 产品类别 + * + * 枚举 {@link TODO product_class 对应的类} + */ + private String classId; + /** + * 产品类型 + * + * 枚举 {@link TODO product_type 对应的类} + */ + private String typeId; + /** + * 产品分类 + */ + private Long categoryId; + /** + * 产品规格 + */ + private String spec; + /** + * 标准单价 + */ + private BigDecimal singlePrice; + /** + * 首选供应商 + */ + private Long supplyId; + /** + * 采购模式 + * + * 枚举 {@link TODO purchase_way 对应的类} + */ + private String purchaseWay; + /** + * 存货类型 + * + * 枚举 {@link TODO save_type 对应的类} + */ + private String saveType; + /** + * 产品品牌 + */ + private Long brandId; + /** + * 产地 + */ + private String productAddress; + /** + * 配送方式 + * + * 枚举 {@link TODO delivery_way 对应的类} + */ + private String deliveryWay; + /** + * 产品来源 + * + * 枚举 {@link TODO product_source 对应的类} + */ + private String productSource; + /** + * 产品状态 + * + * 枚举 {@link TODO product_status 对应的类} + */ + private String productStatus; + /** + * 销售状态 + * + * 枚举 {@link TODO sale_status 对应的类} + */ + private String saleStatus; + /** + * 生命周期 + * + * 枚举 {@link TODO life_cycle 对应的类} + */ + private String lifeCycle; + /** + * 预计上市时间 + */ + private LocalDateTime ipoDate; + /** + * 审核状态 + */ + private String auditStatus; + + @TableField(exist = false) + private String categoryName; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/productcategory/ProductCategoryDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/productcategory/ProductCategoryDO.java new file mode 100644 index 0000000..f99ddce --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/productcategory/ProductCategoryDO.java @@ -0,0 +1,51 @@ +package com.yunxi.scm.module.xxjj.dal.dataobject.productcategory; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO; + +/** + * 产品分类 DO + * + * @author 长江云息 + */ +@TableName("yx_product_category") +@KeySequence("yx_product_category_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProductCategoryDO extends BaseDO { + + /** + * 分类id + */ + @TableId + private Long id; + /** + * 分类编码 + */ + private String code; + /** + * 分类名称 + */ + private String name; + /** + * 父分类id + */ + private Long parentId; + /** + * 显示顺序 + */ + private Integer sort; + /** + * 分类描述 + */ + private String description; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/productclass/ProductClassDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/productclass/ProductClassDO.java new file mode 100644 index 0000000..02ae13c --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/productclass/ProductClassDO.java @@ -0,0 +1,49 @@ +package com.yunxi.scm.module.xxjj.dal.dataobject.productclass; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO; + +/** + * 产品类别 DO + * + * @author 长江云息 + */ +@TableName("yx_product_class") +@KeySequence("yx_product_class_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProductClassDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 类别名称 + */ + private String name; + /** + * 状态(0:启用,1:禁用) + * + * 枚举 {@link TODO class_status 对应的类} + */ + private String status; + /** + * 商品数量 + */ + private Integer num; + /** + * 类别描述 + */ + private String description; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/producttype/ProductTypeDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/producttype/ProductTypeDO.java new file mode 100644 index 0000000..ad02ec7 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/producttype/ProductTypeDO.java @@ -0,0 +1,56 @@ +package com.yunxi.scm.module.xxjj.dal.dataobject.producttype; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO; + +/** + * 产品类型 DO + * + * @author 长江云息 + */ +@TableName("yx_product_type") +@KeySequence("yx_product_type_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProductTypeDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 类别id + */ + private Long classId; + /** + * 类型名称 + */ + private String name; + /** + * 状态(0:启用,1:禁用) + * + * 枚举 {@link TODO class_status 对应的类} + */ + private String status; + /** + * 商品数量 + */ + private Integer num; + /** + * 类型描述 + */ + private String description; + + @TableField(exist = false) + private String className; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/taskmanage/TaskManageDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/taskmanage/TaskManageDO.java new file mode 100644 index 0000000..930ef11 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/taskmanage/TaskManageDO.java @@ -0,0 +1,87 @@ +package com.yunxi.scm.module.xxjj.dal.dataobject.taskmanage; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO; + +/** + * 任务管理 DO + * + * @author 长江云息 + */ +@TableName("yx_task_manage") +@KeySequence("yx_task_manage_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaskManageDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 任务标题 + */ + private String title; + /** + * 开始时间 + */ + private LocalDateTime startTime; + /** + * 结束时间 + */ + private LocalDateTime endTime; + /** + * 关联项目 + */ + private Long projectId; + /** + * 负责人员 + */ + private Long chargeId; + /** + * 参与人员 + */ + private Long joinId; + /** + * 任务标记 + */ + private String taskMark; + /** + * 紧要程度 + * + * 枚举 {@link TODO urgent_level 对应的类} + */ + private String urgentLevel; + /** + * 任务提醒 + * + * 枚举 {@link TODO task_remind 对应的类} + */ + private String taskRemind; + /** + * 提醒方式 + * + * 枚举 {@link TODO remind_way 对应的类} + */ + private String remindWay; + /** + * 任务描述 + */ + private String taskDescription; + /** + * 上传附件 + */ + private String uploadAnnex; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/teammanage/TeamManageDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/teammanage/TeamManageDO.java new file mode 100644 index 0000000..c337c1c --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/teammanage/TeamManageDO.java @@ -0,0 +1,51 @@ +package com.yunxi.scm.module.xxjj.dal.dataobject.teammanage; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO; + +/** + * 团队管理 DO + * + * @author 长江云息 + */ +@TableName("yx_team_manage") +@KeySequence("yx_team_manage_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TeamManageDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 团队名称 + */ + private String name; + /** + * 团队图片 + */ + private String picture; + /** + * 负责人员 + */ + private Long chargeId; + /** + * 团队成员 + */ + private Long teamId; + /** + * 团队描述 + */ + private String teamDescription; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/workreport/WorkReportDO.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/workreport/WorkReportDO.java new file mode 100644 index 0000000..b331ab9 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/dataobject/workreport/WorkReportDO.java @@ -0,0 +1,79 @@ +package com.yunxi.scm.module.xxjj.dal.dataobject.workreport; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO; + +/** + * 工作报告 DO + * + * @author 长江云息 + */ +@TableName("yx_work_report") +@KeySequence("yx_work_report_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WorkReportDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 报告标题 + */ + private String title; + /** + * 报告类型 + */ + private String type; + /** + * 报告日期 + */ + private LocalDateTime reportDate; + /** + * 工作总结 + */ + private String workSummary; + /** + * 上传附件 + */ + private String uploadFile; + /** + * 所属部门 + */ + private Long departmentId; + /** + * 批阅状态 + * + * 枚举 {@link TODO quality_status 对应的类} + */ + private String approvalStatus; + /** + * 提交人员 + */ + private Long commitId; + /** + * 提交日期 + */ + private LocalDateTime commitDate; + /** + * 批阅人员 + */ + private Long approvalId; + /** + * 抄送人员 + */ + private Long copyId; + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/product/ProductMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/product/ProductMapper.java new file mode 100644 index 0000000..920e5c4 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/product/ProductMapper.java @@ -0,0 +1,72 @@ +package com.yunxi.scm.module.xxjj.dal.mysql.product; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX; +import com.yunxi.scm.module.xxjj.dal.dataobject.product.ProductDO; +import org.apache.ibatis.annotations.Mapper; +import com.yunxi.scm.module.xxjj.controller.admin.product.vo.*; + +/** + * 产品 Mapper + * + * @author 长江云息 + */ +@Mapper +public interface ProductMapper extends BaseMapperX { + + default PageResult selectPage(ProductPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProductDO::getProductCode, reqVO.getProductCode()) + .likeIfPresent(ProductDO::getProductName, reqVO.getProductName()) + .eqIfPresent(ProductDO::getProductPicture, reqVO.getProductPicture()) + .eqIfPresent(ProductDO::getClassId, reqVO.getClassId()) + .eqIfPresent(ProductDO::getTypeId, reqVO.getTypeId()) + .eqIfPresent(ProductDO::getCategoryId, reqVO.getCategoryId()) + .eqIfPresent(ProductDO::getSpec, reqVO.getSpec()) + .eqIfPresent(ProductDO::getSinglePrice, reqVO.getSinglePrice()) + .eqIfPresent(ProductDO::getSupplyId, reqVO.getSupplyId()) + .eqIfPresent(ProductDO::getPurchaseWay, reqVO.getPurchaseWay()) + .eqIfPresent(ProductDO::getSaveType, reqVO.getSaveType()) + .eqIfPresent(ProductDO::getBrandId, reqVO.getBrandId()) + .eqIfPresent(ProductDO::getProductAddress, reqVO.getProductAddress()) + .eqIfPresent(ProductDO::getDeliveryWay, reqVO.getDeliveryWay()) + .eqIfPresent(ProductDO::getProductSource, reqVO.getProductSource()) + .eqIfPresent(ProductDO::getProductStatus, reqVO.getProductStatus()) + .eqIfPresent(ProductDO::getSaleStatus, reqVO.getSaleStatus()) + .eqIfPresent(ProductDO::getLifeCycle, reqVO.getLifeCycle()) + .betweenIfPresent(ProductDO::getIpoDate, reqVO.getIpoDate()) + .betweenIfPresent(ProductDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(ProductDO::getAuditStatus, reqVO.getAuditStatus()) + .orderByDesc(ProductDO::getId)); + } + + default List selectList(ProductExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(ProductDO::getProductCode, reqVO.getProductCode()) + .likeIfPresent(ProductDO::getProductName, reqVO.getProductName()) + .eqIfPresent(ProductDO::getProductPicture, reqVO.getProductPicture()) + .eqIfPresent(ProductDO::getClassId, reqVO.getClassId()) + .eqIfPresent(ProductDO::getTypeId, reqVO.getTypeId()) + .eqIfPresent(ProductDO::getCategoryId, reqVO.getCategoryId()) + .eqIfPresent(ProductDO::getSpec, reqVO.getSpec()) + .eqIfPresent(ProductDO::getSinglePrice, reqVO.getSinglePrice()) + .eqIfPresent(ProductDO::getSupplyId, reqVO.getSupplyId()) + .eqIfPresent(ProductDO::getPurchaseWay, reqVO.getPurchaseWay()) + .eqIfPresent(ProductDO::getSaveType, reqVO.getSaveType()) + .eqIfPresent(ProductDO::getBrandId, reqVO.getBrandId()) + .eqIfPresent(ProductDO::getProductAddress, reqVO.getProductAddress()) + .eqIfPresent(ProductDO::getDeliveryWay, reqVO.getDeliveryWay()) + .eqIfPresent(ProductDO::getProductSource, reqVO.getProductSource()) + .eqIfPresent(ProductDO::getProductStatus, reqVO.getProductStatus()) + .eqIfPresent(ProductDO::getSaleStatus, reqVO.getSaleStatus()) + .eqIfPresent(ProductDO::getLifeCycle, reqVO.getLifeCycle()) + .betweenIfPresent(ProductDO::getIpoDate, reqVO.getIpoDate()) + .betweenIfPresent(ProductDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(ProductDO::getAuditStatus, reqVO.getAuditStatus()) + .orderByDesc(ProductDO::getId)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/productcategory/ProductCategoryMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/productcategory/ProductCategoryMapper.java new file mode 100644 index 0000000..85c7b71 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/productcategory/ProductCategoryMapper.java @@ -0,0 +1,34 @@ +package com.yunxi.scm.module.xxjj.dal.mysql.productcategory; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX; +import com.yunxi.scm.module.xxjj.dal.dataobject.productcategory.ProductCategoryDO; +import org.apache.ibatis.annotations.Mapper; +import com.yunxi.scm.module.xxjj.controller.admin.productcategory.vo.*; + +/** + * 产品分类 Mapper + * + * @author 长江云息 + */ +@Mapper +public interface ProductCategoryMapper extends BaseMapperX { + + default PageResult selectPage(ProductCategoryPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ProductCategoryDO::getName, reqVO.getName()) + .betweenIfPresent(ProductCategoryDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProductCategoryDO::getId)); + } + + default List selectList(ProductCategoryExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .likeIfPresent(ProductCategoryDO::getName, reqVO.getName()) + .betweenIfPresent(ProductCategoryDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProductCategoryDO::getId)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/productclass/ProductClassMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/productclass/ProductClassMapper.java new file mode 100644 index 0000000..8330297 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/productclass/ProductClassMapper.java @@ -0,0 +1,36 @@ +package com.yunxi.scm.module.xxjj.dal.mysql.productclass; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX; +import com.yunxi.scm.module.xxjj.dal.dataobject.productclass.ProductClassDO; +import org.apache.ibatis.annotations.Mapper; +import com.yunxi.scm.module.xxjj.controller.admin.productclass.vo.*; + +/** + * 产品类别 Mapper + * + * @author 长江云息 + */ +@Mapper +public interface ProductClassMapper extends BaseMapperX { + + default PageResult selectPage(ProductClassPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ProductClassDO::getName, reqVO.getName()) + .eqIfPresent(ProductClassDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(ProductClassDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProductClassDO::getId)); + } + + default List selectList(ProductClassExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .likeIfPresent(ProductClassDO::getName, reqVO.getName()) + .eqIfPresent(ProductClassDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(ProductClassDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProductClassDO::getId)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/producttype/ProductTypeMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/producttype/ProductTypeMapper.java new file mode 100644 index 0000000..6f94641 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/producttype/ProductTypeMapper.java @@ -0,0 +1,48 @@ +package com.yunxi.scm.module.xxjj.dal.mysql.producttype; + +import java.util.*; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX; +import com.yunxi.scm.module.xxjj.dal.dataobject.producttype.ProductTypeDO; +import org.apache.ibatis.annotations.Mapper; +import com.yunxi.scm.module.xxjj.controller.admin.producttype.vo.*; +import org.apache.ibatis.annotations.Param; +import org.apache.poi.ss.formula.functions.T; + +/** + * 产品类型 Mapper + * + * @author 长江云息 + */ +@Mapper +public interface ProductTypeMapper extends BaseMapperX { + + default PageResult selectPage(ProductTypePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProductTypeDO::getClassId, reqVO.getClassId()) + .likeIfPresent(ProductTypeDO::getName, reqVO.getName()) + .eqIfPresent(ProductTypeDO::getStatus, reqVO.getStatus()) + .eqIfPresent(ProductTypeDO::getNum, reqVO.getNum()) + .eqIfPresent(ProductTypeDO::getDescription, reqVO.getDescription()) + .betweenIfPresent(ProductTypeDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProductTypeDO::getId)); + } + + default List selectList(ProductTypeExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(ProductTypeDO::getClassId, reqVO.getClassId()) + .likeIfPresent(ProductTypeDO::getName, reqVO.getName()) + .eqIfPresent(ProductTypeDO::getStatus, reqVO.getStatus()) + .eqIfPresent(ProductTypeDO::getNum, reqVO.getNum()) + .eqIfPresent(ProductTypeDO::getDescription, reqVO.getDescription()) + .betweenIfPresent(ProductTypeDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProductTypeDO::getId)); + } + + IPage queryProductPage(@Param("mpPage") IPage mpPage, @Param("reqVO") ProductTypePageReqVO reqVO); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/taskmanage/TaskManageMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/taskmanage/TaskManageMapper.java new file mode 100644 index 0000000..8da18a9 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/taskmanage/TaskManageMapper.java @@ -0,0 +1,56 @@ +package com.yunxi.scm.module.xxjj.dal.mysql.taskmanage; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX; +import com.yunxi.scm.module.xxjj.dal.dataobject.taskmanage.TaskManageDO; +import org.apache.ibatis.annotations.Mapper; +import com.yunxi.scm.module.xxjj.controller.admin.taskmanage.vo.*; + +/** + * 任务管理 Mapper + * + * @author 长江云息 + */ +@Mapper +public interface TaskManageMapper extends BaseMapperX { + + default PageResult selectPage(TaskManagePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(TaskManageDO::getTitle, reqVO.getTitle()) + .betweenIfPresent(TaskManageDO::getStartTime, reqVO.getStartTime()) + .betweenIfPresent(TaskManageDO::getEndTime, reqVO.getEndTime()) + .eqIfPresent(TaskManageDO::getProjectId, reqVO.getProjectId()) + .eqIfPresent(TaskManageDO::getChargeId, reqVO.getChargeId()) + .eqIfPresent(TaskManageDO::getJoinId, reqVO.getJoinId()) + .eqIfPresent(TaskManageDO::getTaskMark, reqVO.getTaskMark()) + .eqIfPresent(TaskManageDO::getUrgentLevel, reqVO.getUrgentLevel()) + .eqIfPresent(TaskManageDO::getTaskRemind, reqVO.getTaskRemind()) + .eqIfPresent(TaskManageDO::getRemindWay, reqVO.getRemindWay()) + .eqIfPresent(TaskManageDO::getTaskDescription, reqVO.getTaskDescription()) + .eqIfPresent(TaskManageDO::getUploadAnnex, reqVO.getUploadAnnex()) + .betweenIfPresent(TaskManageDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TaskManageDO::getId)); + } + + default List selectList(TaskManageExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(TaskManageDO::getTitle, reqVO.getTitle()) + .betweenIfPresent(TaskManageDO::getStartTime, reqVO.getStartTime()) + .betweenIfPresent(TaskManageDO::getEndTime, reqVO.getEndTime()) + .eqIfPresent(TaskManageDO::getProjectId, reqVO.getProjectId()) + .eqIfPresent(TaskManageDO::getChargeId, reqVO.getChargeId()) + .eqIfPresent(TaskManageDO::getJoinId, reqVO.getJoinId()) + .eqIfPresent(TaskManageDO::getTaskMark, reqVO.getTaskMark()) + .eqIfPresent(TaskManageDO::getUrgentLevel, reqVO.getUrgentLevel()) + .eqIfPresent(TaskManageDO::getTaskRemind, reqVO.getTaskRemind()) + .eqIfPresent(TaskManageDO::getRemindWay, reqVO.getRemindWay()) + .eqIfPresent(TaskManageDO::getTaskDescription, reqVO.getTaskDescription()) + .eqIfPresent(TaskManageDO::getUploadAnnex, reqVO.getUploadAnnex()) + .betweenIfPresent(TaskManageDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TaskManageDO::getId)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/teammanage/TeamManageMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/teammanage/TeamManageMapper.java new file mode 100644 index 0000000..ab62cc4 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/teammanage/TeamManageMapper.java @@ -0,0 +1,42 @@ +package com.yunxi.scm.module.xxjj.dal.mysql.teammanage; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX; +import com.yunxi.scm.module.xxjj.dal.dataobject.teammanage.TeamManageDO; +import org.apache.ibatis.annotations.Mapper; +import com.yunxi.scm.module.xxjj.controller.admin.teammanage.vo.*; + +/** + * 团队管理 Mapper + * + * @author 长江云息 + */ +@Mapper +public interface TeamManageMapper extends BaseMapperX { + + default PageResult selectPage(TeamManagePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(TeamManageDO::getName, reqVO.getName()) + .eqIfPresent(TeamManageDO::getPicture, reqVO.getPicture()) + .eqIfPresent(TeamManageDO::getChargeId, reqVO.getChargeId()) + .eqIfPresent(TeamManageDO::getTeamId, reqVO.getTeamId()) + .eqIfPresent(TeamManageDO::getTeamDescription, reqVO.getTeamDescription()) + .betweenIfPresent(TeamManageDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TeamManageDO::getId)); + } + + default List selectList(TeamManageExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .likeIfPresent(TeamManageDO::getName, reqVO.getName()) + .eqIfPresent(TeamManageDO::getPicture, reqVO.getPicture()) + .eqIfPresent(TeamManageDO::getChargeId, reqVO.getChargeId()) + .eqIfPresent(TeamManageDO::getTeamId, reqVO.getTeamId()) + .eqIfPresent(TeamManageDO::getTeamDescription, reqVO.getTeamDescription()) + .betweenIfPresent(TeamManageDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TeamManageDO::getId)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/workreport/WorkReportMapper.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/workreport/WorkReportMapper.java new file mode 100644 index 0000000..76d85bd --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/dal/mysql/workreport/WorkReportMapper.java @@ -0,0 +1,54 @@ +package com.yunxi.scm.module.xxjj.dal.mysql.workreport; + +import java.util.*; + +import com.yunxi.scm.framework.common.pojo.PageResult; +import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX; +import com.yunxi.scm.module.xxjj.dal.dataobject.workreport.WorkReportDO; +import org.apache.ibatis.annotations.Mapper; +import com.yunxi.scm.module.xxjj.controller.admin.workreport.vo.*; + +/** + * 工作报告 Mapper + * + * @author 长江云息 + */ +@Mapper +public interface WorkReportMapper extends BaseMapperX { + + default PageResult selectPage(WorkReportPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(WorkReportDO::getTitle, reqVO.getTitle()) + .eqIfPresent(WorkReportDO::getType, reqVO.getType()) + .betweenIfPresent(WorkReportDO::getReportDate, reqVO.getReportDate()) + .eqIfPresent(WorkReportDO::getWorkSummary, reqVO.getWorkSummary()) + .eqIfPresent(WorkReportDO::getUploadFile, reqVO.getUploadFile()) + .eqIfPresent(WorkReportDO::getDepartmentId, reqVO.getDepartmentId()) + .eqIfPresent(WorkReportDO::getApprovalStatus, reqVO.getApprovalStatus()) + .eqIfPresent(WorkReportDO::getCommitId, reqVO.getCommitId()) + .betweenIfPresent(WorkReportDO::getCommitDate, reqVO.getCommitDate()) + .eqIfPresent(WorkReportDO::getApprovalId, reqVO.getApprovalId()) + .eqIfPresent(WorkReportDO::getCopyId, reqVO.getCopyId()) + .betweenIfPresent(WorkReportDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(WorkReportDO::getId)); + } + + default List selectList(WorkReportExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(WorkReportDO::getTitle, reqVO.getTitle()) + .eqIfPresent(WorkReportDO::getType, reqVO.getType()) + .betweenIfPresent(WorkReportDO::getReportDate, reqVO.getReportDate()) + .eqIfPresent(WorkReportDO::getWorkSummary, reqVO.getWorkSummary()) + .eqIfPresent(WorkReportDO::getUploadFile, reqVO.getUploadFile()) + .eqIfPresent(WorkReportDO::getDepartmentId, reqVO.getDepartmentId()) + .eqIfPresent(WorkReportDO::getApprovalStatus, reqVO.getApprovalStatus()) + .eqIfPresent(WorkReportDO::getCommitId, reqVO.getCommitId()) + .betweenIfPresent(WorkReportDO::getCommitDate, reqVO.getCommitDate()) + .eqIfPresent(WorkReportDO::getApprovalId, reqVO.getApprovalId()) + .eqIfPresent(WorkReportDO::getCopyId, reqVO.getCopyId()) + .betweenIfPresent(WorkReportDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(WorkReportDO::getId)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/enums/ErrorCodeConstants.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/enums/ErrorCodeConstants.java index f8f9782..9cc050f 100644 --- a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/enums/ErrorCodeConstants.java +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/enums/ErrorCodeConstants.java @@ -29,6 +29,20 @@ public interface ErrorCodeConstants { ErrorCode WAREHOUSE_RECEIPT_NOT_EXISTS = new ErrorCode(1002025013, "入库单不存在"); // ========== 领料单 TODO 补充编号 ========== ErrorCode WAREHOUSE_OUT_NOT_EXISTS = new ErrorCode(1002025014, "领料单不存在"); + // ========== 产品 TODO 补充编号 ========== + ErrorCode PRODUCT_NOT_EXISTS = new ErrorCode(1002023001, "产品不存在"); + // ========== 产品分类 TODO 补充编号 ========== + ErrorCode PRODUCT_CATEGORY_NOT_EXISTS = new ErrorCode(1002023002, "产品分类不存在"); + // ========== 产品类别 TODO 补充编号 ========== + ErrorCode PRODUCT_CLASS_NOT_EXISTS = new ErrorCode(1002023003, "产品类别不存在"); + // ========== 产品类型 TODO 补充编号 ========== + ErrorCode PRODUCT_TYPE_NOT_EXISTS = new ErrorCode(1002023004, "产品类型不存在"); + // ========== 任务管理 TODO 补充编号 ========== + ErrorCode TASK_MANAGE_NOT_EXISTS = new ErrorCode(1002023005, "任务管理不存在"); + // ========== 团队管理 TODO 补充编号 ========== + ErrorCode TEAM_MANAGE_NOT_EXISTS = new ErrorCode(1002023006, "团队管理不存在"); + // ========== 工作报告 TODO 补充编号 ========== + ErrorCode WORK_REPORT_NOT_EXISTS = new ErrorCode(1002023007, "工作报告不存在"); // ========== 部门模块 1002004000 ========== diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductService.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductService.java new file mode 100644 index 0000000..a2e5e69 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductService.java @@ -0,0 +1,70 @@ +package com.yunxi.scm.module.xxjj.service.product; + +import java.util.*; +import javax.validation.*; +import com.yunxi.scm.module.xxjj.controller.admin.product.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.product.ProductDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +/** + * 产品 Service 接口 + * + * @author 长江云息 + */ +public interface ProductService { + + /** + * 创建产品 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProduct(@Valid ProductCreateReqVO createReqVO); + + /** + * 更新产品 + * + * @param updateReqVO 更新信息 + */ + void updateProduct(@Valid ProductUpdateReqVO updateReqVO); + + /** + * 删除产品 + * + * @param id 编号 + */ + void deleteProduct(Long id); + + /** + * 获得产品 + * + * @param id 编号 + * @return 产品 + */ + ProductDO getProduct(Long id); + + /** + * 获得产品列表 + * + * @param ids 编号 + * @return 产品列表 + */ + List getProductList(Collection ids); + + /** + * 获得产品分页 + * + * @param pageReqVO 分页查询 + * @return 产品分页 + */ + PageResult getProductPage(ProductPageReqVO pageReqVO); + + /** + * 获得产品列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 产品列表 + */ + List getProductList(ProductExportReqVO exportReqVO); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductServiceImpl.java new file mode 100644 index 0000000..125c064 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/product/ProductServiceImpl.java @@ -0,0 +1,120 @@ +package com.yunxi.scm.module.xxjj.service.product; + +import cn.hutool.core.util.ObjectUtil; +import com.yunxi.scm.module.xxjj.dal.dataobject.material.MaterialDO; +import com.yunxi.scm.module.xxjj.dal.dataobject.materialcategory.MaterialCategoryDO; +import com.yunxi.scm.module.xxjj.dal.dataobject.productcategory.ProductCategoryDO; +import com.yunxi.scm.module.xxjj.dal.mysql.materialcategory.MaterialCategoryMapper; +import com.yunxi.scm.module.xxjj.dal.mysql.productcategory.ProductCategoryMapper; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.yunxi.scm.module.xxjj.controller.admin.product.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.product.ProductDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import com.yunxi.scm.module.xxjj.convert.product.ProductConvert; +import com.yunxi.scm.module.xxjj.dal.mysql.product.ProductMapper; + +import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; + +/** + * 产品 Service 实现类 + * + * @author 长江云息 + */ +@Service +@Validated +public class ProductServiceImpl implements ProductService { + + @Resource + private ProductMapper productMapper; + @Resource + private ProductCategoryMapper productCategoryMapper; + + @Override + public Long createProduct(ProductCreateReqVO createReqVO) { + // 插入 + ProductDO product = ProductConvert.INSTANCE.convert(createReqVO); + productMapper.insert(product); + // 返回 + return product.getId(); + } + + @Override + public void updateProduct(ProductUpdateReqVO updateReqVO) { + // 校验存在 + validateProductExists(updateReqVO.getId()); + // 更新 + ProductDO updateObj = ProductConvert.INSTANCE.convert(updateReqVO); + productMapper.updateById(updateObj); + } + + @Override + public void deleteProduct(Long id) { + // 校验存在 + validateProductExists(id); + // 删除 + productMapper.deleteById(id); + } + + private void validateProductExists(Long id) { + if (productMapper.selectById(id) == null) { + throw exception(PRODUCT_NOT_EXISTS); + } + } + + @Override + public ProductDO getProduct(Long id) { + return productMapper.selectById(id); + } + + @Override + public List getProductList(Collection ids) { + return productMapper.selectBatchIds(ids); + } + + @Override + public PageResult getProductPage(ProductPageReqVO pageReqVO) { + PageResult product = productMapper.selectPage(pageReqVO); + List productList = product.getList(); + ProductCategoryDO PCD = new ProductCategoryDO(); + if (productList != null && productList.size() > 0){ + for (ProductDO entity : productList){ + String materialCategoryName = ""; + ProductCategoryDO productCategoryDO = productCategoryMapper.selectById(entity.getCategoryId()); + PCD = productCategoryDO; + if (ObjectUtil.isNotEmpty(PCD)){ + while (PCD.getParentId() != 0 ) { + materialCategoryName = PCD.getName() + ">" + materialCategoryName; + PCD = productCategoryMapper.selectById(PCD.getParentId()); + if (ObjectUtil.isEmpty(PCD)){ + PCD.setParentId((long) 0); + } + } + } + if (StringUtils.isNotEmpty(materialCategoryName)){ + materialCategoryName = PCD.getName() + ">" + materialCategoryName; + materialCategoryName = materialCategoryName.substring(0,materialCategoryName.length()-1); + entity.setCategoryName(materialCategoryName); + }else{ + if (ObjectUtil.isNotEmpty(productCategoryDO)) { + entity.setCategoryName(productCategoryDO.getName()); + } + } + } + } + return product; +// return productMapper.selectPage(pageReqVO); + } + + @Override + public List getProductList(ProductExportReqVO exportReqVO) { + return productMapper.selectList(exportReqVO); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productcategory/ProductCategoryService.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productcategory/ProductCategoryService.java new file mode 100644 index 0000000..efd15b3 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productcategory/ProductCategoryService.java @@ -0,0 +1,70 @@ +package com.yunxi.scm.module.xxjj.service.productcategory; + +import java.util.*; +import javax.validation.*; +import com.yunxi.scm.module.xxjj.controller.admin.productcategory.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productcategory.ProductCategoryDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +/** + * 产品分类 Service 接口 + * + * @author 长江云息 + */ +public interface ProductCategoryService { + + /** + * 创建产品分类 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProductCategory(@Valid ProductCategoryCreateReqVO createReqVO); + + /** + * 更新产品分类 + * + * @param updateReqVO 更新信息 + */ + void updateProductCategory(@Valid ProductCategoryUpdateReqVO updateReqVO); + + /** + * 删除产品分类 + * + * @param id 编号 + */ + void deleteProductCategory(Long id); + + /** + * 获得产品分类 + * + * @param id 编号 + * @return 产品分类 + */ + ProductCategoryDO getProductCategory(Long id); + + /** + * 获得产品分类列表 + * + * @param ids 编号 + * @return 产品分类列表 + */ + List getProductCategoryList(Collection ids); + + /** + * 获得产品分类分页 + * + * @param pageReqVO 分页查询 + * @return 产品分类分页 + */ + PageResult getProductCategoryPage(ProductCategoryPageReqVO pageReqVO); + + /** + * 获得产品分类列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 产品分类列表 + */ + List getProductCategoryList(ProductCategoryExportReqVO exportReqVO); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productcategory/ProductCategoryServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productcategory/ProductCategoryServiceImpl.java new file mode 100644 index 0000000..8a74823 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productcategory/ProductCategoryServiceImpl.java @@ -0,0 +1,82 @@ +package com.yunxi.scm.module.xxjj.service.productcategory; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.yunxi.scm.module.xxjj.controller.admin.productcategory.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productcategory.ProductCategoryDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import com.yunxi.scm.module.xxjj.convert.productcategory.ProductCategoryConvert; +import com.yunxi.scm.module.xxjj.dal.mysql.productcategory.ProductCategoryMapper; + +import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; + +/** + * 产品分类 Service 实现类 + * + * @author 长江云息 + */ +@Service +@Validated +public class ProductCategoryServiceImpl implements ProductCategoryService { + + @Resource + private ProductCategoryMapper productCategoryMapper; + + @Override + public Long createProductCategory(ProductCategoryCreateReqVO createReqVO) { + // 插入 + ProductCategoryDO productCategory = ProductCategoryConvert.INSTANCE.convert(createReqVO); + productCategoryMapper.insert(productCategory); + // 返回 + return productCategory.getId(); + } + + @Override + public void updateProductCategory(ProductCategoryUpdateReqVO updateReqVO) { + // 校验存在 + validateProductCategoryExists(updateReqVO.getId()); + // 更新 + ProductCategoryDO updateObj = ProductCategoryConvert.INSTANCE.convert(updateReqVO); + productCategoryMapper.updateById(updateObj); + } + + @Override + public void deleteProductCategory(Long id) { + // 校验存在 + validateProductCategoryExists(id); + // 删除 + productCategoryMapper.deleteById(id); + } + + private void validateProductCategoryExists(Long id) { + if (productCategoryMapper.selectById(id) == null) { + throw exception(PRODUCT_CATEGORY_NOT_EXISTS); + } + } + + @Override + public ProductCategoryDO getProductCategory(Long id) { + return productCategoryMapper.selectById(id); + } + + @Override + public List getProductCategoryList(Collection ids) { + return productCategoryMapper.selectBatchIds(ids); + } + + @Override + public PageResult getProductCategoryPage(ProductCategoryPageReqVO pageReqVO) { + return productCategoryMapper.selectPage(pageReqVO); + } + + @Override + public List getProductCategoryList(ProductCategoryExportReqVO exportReqVO) { + return productCategoryMapper.selectList(exportReqVO); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productclass/ProductClassService.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productclass/ProductClassService.java new file mode 100644 index 0000000..ff8d601 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productclass/ProductClassService.java @@ -0,0 +1,70 @@ +package com.yunxi.scm.module.xxjj.service.productclass; + +import java.util.*; +import javax.validation.*; +import com.yunxi.scm.module.xxjj.controller.admin.productclass.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productclass.ProductClassDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +/** + * 产品类别 Service 接口 + * + * @author 长江云息 + */ +public interface ProductClassService { + + /** + * 创建产品类别 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProductClass(@Valid ProductClassCreateReqVO createReqVO); + + /** + * 更新产品类别 + * + * @param updateReqVO 更新信息 + */ + void updateProductClass(@Valid ProductClassUpdateReqVO updateReqVO); + + /** + * 删除产品类别 + * + * @param id 编号 + */ + void deleteProductClass(Long id); + + /** + * 获得产品类别 + * + * @param id 编号 + * @return 产品类别 + */ + ProductClassDO getProductClass(Long id); + + /** + * 获得产品类别列表 + * + * @param ids 编号 + * @return 产品类别列表 + */ + List getProductClassList(Collection ids); + + /** + * 获得产品类别分页 + * + * @param pageReqVO 分页查询 + * @return 产品类别分页 + */ + PageResult getProductClassPage(ProductClassPageReqVO pageReqVO); + + /** + * 获得产品类别列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 产品类别列表 + */ + List getProductClassList(ProductClassExportReqVO exportReqVO); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productclass/ProductClassServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productclass/ProductClassServiceImpl.java new file mode 100644 index 0000000..a29b423 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/productclass/ProductClassServiceImpl.java @@ -0,0 +1,82 @@ +package com.yunxi.scm.module.xxjj.service.productclass; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.yunxi.scm.module.xxjj.controller.admin.productclass.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productclass.ProductClassDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import com.yunxi.scm.module.xxjj.convert.productclass.ProductClassConvert; +import com.yunxi.scm.module.xxjj.dal.mysql.productclass.ProductClassMapper; + +import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; + +/** + * 产品类别 Service 实现类 + * + * @author 长江云息 + */ +@Service +@Validated +public class ProductClassServiceImpl implements ProductClassService { + + @Resource + private ProductClassMapper productClassMapper; + + @Override + public Long createProductClass(ProductClassCreateReqVO createReqVO) { + // 插入 + ProductClassDO productClass = ProductClassConvert.INSTANCE.convert(createReqVO); + productClassMapper.insert(productClass); + // 返回 + return productClass.getId(); + } + + @Override + public void updateProductClass(ProductClassUpdateReqVO updateReqVO) { + // 校验存在 + validateProductClassExists(updateReqVO.getId()); + // 更新 + ProductClassDO updateObj = ProductClassConvert.INSTANCE.convert(updateReqVO); + productClassMapper.updateById(updateObj); + } + + @Override + public void deleteProductClass(Long id) { + // 校验存在 + validateProductClassExists(id); + // 删除 + productClassMapper.deleteById(id); + } + + private void validateProductClassExists(Long id) { + if (productClassMapper.selectById(id) == null) { + throw exception(PRODUCT_CLASS_NOT_EXISTS); + } + } + + @Override + public ProductClassDO getProductClass(Long id) { + return productClassMapper.selectById(id); + } + + @Override + public List getProductClassList(Collection ids) { + return productClassMapper.selectBatchIds(ids); + } + + @Override + public PageResult getProductClassPage(ProductClassPageReqVO pageReqVO) { + return productClassMapper.selectPage(pageReqVO); + } + + @Override + public List getProductClassList(ProductClassExportReqVO exportReqVO) { + return productClassMapper.selectList(exportReqVO); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/producttype/ProductTypeService.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/producttype/ProductTypeService.java new file mode 100644 index 0000000..53a2d16 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/producttype/ProductTypeService.java @@ -0,0 +1,70 @@ +package com.yunxi.scm.module.xxjj.service.producttype; + +import java.util.*; +import javax.validation.*; +import com.yunxi.scm.module.xxjj.controller.admin.producttype.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.producttype.ProductTypeDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +/** + * 产品类型 Service 接口 + * + * @author 长江云息 + */ +public interface ProductTypeService { + + /** + * 创建产品类型 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProductType(@Valid ProductTypeCreateReqVO createReqVO); + + /** + * 更新产品类型 + * + * @param updateReqVO 更新信息 + */ + void updateProductType(@Valid ProductTypeUpdateReqVO updateReqVO); + + /** + * 删除产品类型 + * + * @param id 编号 + */ + void deleteProductType(Long id); + + /** + * 获得产品类型 + * + * @param id 编号 + * @return 产品类型 + */ + ProductTypeDO getProductType(Long id); + + /** + * 获得产品类型列表 + * + * @param ids 编号 + * @return 产品类型列表 + */ + List getProductTypeList(Collection ids); + + /** + * 获得产品类型分页 + * + * @param pageReqVO 分页查询 + * @return 产品类型分页 + */ + PageResult getProductTypePage(ProductTypePageReqVO pageReqVO); + + /** + * 获得产品类型列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 产品类型列表 + */ + List getProductTypeList(ProductTypeExportReqVO exportReqVO); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/producttype/ProductTypeServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/producttype/ProductTypeServiceImpl.java new file mode 100644 index 0000000..e08f80d --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/producttype/ProductTypeServiceImpl.java @@ -0,0 +1,93 @@ +package com.yunxi.scm.module.xxjj.service.producttype; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yunxi.scm.framework.common.pojo.PageParam; +import com.yunxi.scm.framework.mybatis.core.util.MyBatisUtils; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.yunxi.scm.module.xxjj.controller.admin.producttype.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.producttype.ProductTypeDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import com.yunxi.scm.module.xxjj.convert.producttype.ProductTypeConvert; +import com.yunxi.scm.module.xxjj.dal.mysql.producttype.ProductTypeMapper; + +import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; + +/** + * 产品类型 Service 实现类 + * + * @author 长江云息 + */ +@Service +@Validated +public class ProductTypeServiceImpl implements ProductTypeService { + + @Resource + private ProductTypeMapper productTypeMapper; + + @Override + public Long createProductType(ProductTypeCreateReqVO createReqVO) { + // 插入 + ProductTypeDO productType = ProductTypeConvert.INSTANCE.convert(createReqVO); + productTypeMapper.insert(productType); + // 返回 + return productType.getId(); + } + + @Override + public void updateProductType(ProductTypeUpdateReqVO updateReqVO) { + // 校验存在 + validateProductTypeExists(updateReqVO.getId()); + // 更新 + ProductTypeDO updateObj = ProductTypeConvert.INSTANCE.convert(updateReqVO); + productTypeMapper.updateById(updateObj); + } + + @Override + public void deleteProductType(Long id) { + // 校验存在 + validateProductTypeExists(id); + // 删除 + productTypeMapper.deleteById(id); + } + + private void validateProductTypeExists(Long id) { + if (productTypeMapper.selectById(id) == null) { + throw exception(PRODUCT_TYPE_NOT_EXISTS); + } + } + + @Override + public ProductTypeDO getProductType(Long id) { + return productTypeMapper.selectById(id); + } + + @Override + public List getProductTypeList(Collection ids) { + return productTypeMapper.selectBatchIds(ids); + } + + @Override + public PageResult getProductTypePage(ProductTypePageReqVO pageReqVO) { +// return productTypeMapper.selectPage(pageReqVO); + IPage mpPage = MyBatisUtils.buildPage(pageReqVO); + IPage productTypeDOIPage = productTypeMapper.queryProductPage(mpPage,pageReqVO); + PageResult pageResult = new PageResult<>(); + pageResult.setList(productTypeDOIPage.getRecords()); + pageResult.setTotal(productTypeDOIPage.getTotal()); + return pageResult; + } + + @Override + public List getProductTypeList(ProductTypeExportReqVO exportReqVO) { + return productTypeMapper.selectList(exportReqVO); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/taskmanage/TaskManageService.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/taskmanage/TaskManageService.java new file mode 100644 index 0000000..df5b358 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/taskmanage/TaskManageService.java @@ -0,0 +1,70 @@ +package com.yunxi.scm.module.xxjj.service.taskmanage; + +import java.util.*; +import javax.validation.*; +import com.yunxi.scm.module.xxjj.controller.admin.taskmanage.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.taskmanage.TaskManageDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +/** + * 任务管理 Service 接口 + * + * @author 长江云息 + */ +public interface TaskManageService { + + /** + * 创建任务管理 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createTaskManage(@Valid TaskManageCreateReqVO createReqVO); + + /** + * 更新任务管理 + * + * @param updateReqVO 更新信息 + */ + void updateTaskManage(@Valid TaskManageUpdateReqVO updateReqVO); + + /** + * 删除任务管理 + * + * @param id 编号 + */ + void deleteTaskManage(Long id); + + /** + * 获得任务管理 + * + * @param id 编号 + * @return 任务管理 + */ + TaskManageDO getTaskManage(Long id); + + /** + * 获得任务管理列表 + * + * @param ids 编号 + * @return 任务管理列表 + */ + List getTaskManageList(Collection ids); + + /** + * 获得任务管理分页 + * + * @param pageReqVO 分页查询 + * @return 任务管理分页 + */ + PageResult getTaskManagePage(TaskManagePageReqVO pageReqVO); + + /** + * 获得任务管理列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 任务管理列表 + */ + List getTaskManageList(TaskManageExportReqVO exportReqVO); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/taskmanage/TaskManageServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/taskmanage/TaskManageServiceImpl.java new file mode 100644 index 0000000..656efdd --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/taskmanage/TaskManageServiceImpl.java @@ -0,0 +1,82 @@ +package com.yunxi.scm.module.xxjj.service.taskmanage; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.yunxi.scm.module.xxjj.controller.admin.taskmanage.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.taskmanage.TaskManageDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import com.yunxi.scm.module.xxjj.convert.taskmanage.TaskManageConvert; +import com.yunxi.scm.module.xxjj.dal.mysql.taskmanage.TaskManageMapper; + +import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; + +/** + * 任务管理 Service 实现类 + * + * @author 长江云息 + */ +@Service +@Validated +public class TaskManageServiceImpl implements TaskManageService { + + @Resource + private TaskManageMapper taskManageMapper; + + @Override + public Long createTaskManage(TaskManageCreateReqVO createReqVO) { + // 插入 + TaskManageDO taskManage = TaskManageConvert.INSTANCE.convert(createReqVO); + taskManageMapper.insert(taskManage); + // 返回 + return taskManage.getId(); + } + + @Override + public void updateTaskManage(TaskManageUpdateReqVO updateReqVO) { + // 校验存在 + validateTaskManageExists(updateReqVO.getId()); + // 更新 + TaskManageDO updateObj = TaskManageConvert.INSTANCE.convert(updateReqVO); + taskManageMapper.updateById(updateObj); + } + + @Override + public void deleteTaskManage(Long id) { + // 校验存在 + validateTaskManageExists(id); + // 删除 + taskManageMapper.deleteById(id); + } + + private void validateTaskManageExists(Long id) { + if (taskManageMapper.selectById(id) == null) { + throw exception(TASK_MANAGE_NOT_EXISTS); + } + } + + @Override + public TaskManageDO getTaskManage(Long id) { + return taskManageMapper.selectById(id); + } + + @Override + public List getTaskManageList(Collection ids) { + return taskManageMapper.selectBatchIds(ids); + } + + @Override + public PageResult getTaskManagePage(TaskManagePageReqVO pageReqVO) { + return taskManageMapper.selectPage(pageReqVO); + } + + @Override + public List getTaskManageList(TaskManageExportReqVO exportReqVO) { + return taskManageMapper.selectList(exportReqVO); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/teammanage/TeamManageService.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/teammanage/TeamManageService.java new file mode 100644 index 0000000..53a530b --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/teammanage/TeamManageService.java @@ -0,0 +1,70 @@ +package com.yunxi.scm.module.xxjj.service.teammanage; + +import java.util.*; +import javax.validation.*; +import com.yunxi.scm.module.xxjj.controller.admin.teammanage.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.teammanage.TeamManageDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +/** + * 团队管理 Service 接口 + * + * @author 长江云息 + */ +public interface TeamManageService { + + /** + * 创建团队管理 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createTeamManage(@Valid TeamManageCreateReqVO createReqVO); + + /** + * 更新团队管理 + * + * @param updateReqVO 更新信息 + */ + void updateTeamManage(@Valid TeamManageUpdateReqVO updateReqVO); + + /** + * 删除团队管理 + * + * @param id 编号 + */ + void deleteTeamManage(Long id); + + /** + * 获得团队管理 + * + * @param id 编号 + * @return 团队管理 + */ + TeamManageDO getTeamManage(Long id); + + /** + * 获得团队管理列表 + * + * @param ids 编号 + * @return 团队管理列表 + */ + List getTeamManageList(Collection ids); + + /** + * 获得团队管理分页 + * + * @param pageReqVO 分页查询 + * @return 团队管理分页 + */ + PageResult getTeamManagePage(TeamManagePageReqVO pageReqVO); + + /** + * 获得团队管理列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 团队管理列表 + */ + List getTeamManageList(TeamManageExportReqVO exportReqVO); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/teammanage/TeamManageServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/teammanage/TeamManageServiceImpl.java new file mode 100644 index 0000000..8a81f0a --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/teammanage/TeamManageServiceImpl.java @@ -0,0 +1,82 @@ +package com.yunxi.scm.module.xxjj.service.teammanage; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.yunxi.scm.module.xxjj.controller.admin.teammanage.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.teammanage.TeamManageDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import com.yunxi.scm.module.xxjj.convert.teammanage.TeamManageConvert; +import com.yunxi.scm.module.xxjj.dal.mysql.teammanage.TeamManageMapper; + +import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; + +/** + * 团队管理 Service 实现类 + * + * @author 长江云息 + */ +@Service +@Validated +public class TeamManageServiceImpl implements TeamManageService { + + @Resource + private TeamManageMapper teamManageMapper; + + @Override + public Long createTeamManage(TeamManageCreateReqVO createReqVO) { + // 插入 + TeamManageDO teamManage = TeamManageConvert.INSTANCE.convert(createReqVO); + teamManageMapper.insert(teamManage); + // 返回 + return teamManage.getId(); + } + + @Override + public void updateTeamManage(TeamManageUpdateReqVO updateReqVO) { + // 校验存在 + validateTeamManageExists(updateReqVO.getId()); + // 更新 + TeamManageDO updateObj = TeamManageConvert.INSTANCE.convert(updateReqVO); + teamManageMapper.updateById(updateObj); + } + + @Override + public void deleteTeamManage(Long id) { + // 校验存在 + validateTeamManageExists(id); + // 删除 + teamManageMapper.deleteById(id); + } + + private void validateTeamManageExists(Long id) { + if (teamManageMapper.selectById(id) == null) { + throw exception(TEAM_MANAGE_NOT_EXISTS); + } + } + + @Override + public TeamManageDO getTeamManage(Long id) { + return teamManageMapper.selectById(id); + } + + @Override + public List getTeamManageList(Collection ids) { + return teamManageMapper.selectBatchIds(ids); + } + + @Override + public PageResult getTeamManagePage(TeamManagePageReqVO pageReqVO) { + return teamManageMapper.selectPage(pageReqVO); + } + + @Override + public List getTeamManageList(TeamManageExportReqVO exportReqVO) { + return teamManageMapper.selectList(exportReqVO); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/workreport/WorkReportService.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/workreport/WorkReportService.java new file mode 100644 index 0000000..0c36f01 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/workreport/WorkReportService.java @@ -0,0 +1,70 @@ +package com.yunxi.scm.module.xxjj.service.workreport; + +import java.util.*; +import javax.validation.*; +import com.yunxi.scm.module.xxjj.controller.admin.workreport.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.workreport.WorkReportDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +/** + * 工作报告 Service 接口 + * + * @author 长江云息 + */ +public interface WorkReportService { + + /** + * 创建工作报告 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createWorkReport(@Valid WorkReportCreateReqVO createReqVO); + + /** + * 更新工作报告 + * + * @param updateReqVO 更新信息 + */ + void updateWorkReport(@Valid WorkReportUpdateReqVO updateReqVO); + + /** + * 删除工作报告 + * + * @param id 编号 + */ + void deleteWorkReport(Long id); + + /** + * 获得工作报告 + * + * @param id 编号 + * @return 工作报告 + */ + WorkReportDO getWorkReport(Long id); + + /** + * 获得工作报告列表 + * + * @param ids 编号 + * @return 工作报告列表 + */ + List getWorkReportList(Collection ids); + + /** + * 获得工作报告分页 + * + * @param pageReqVO 分页查询 + * @return 工作报告分页 + */ + PageResult getWorkReportPage(WorkReportPageReqVO pageReqVO); + + /** + * 获得工作报告列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 工作报告列表 + */ + List getWorkReportList(WorkReportExportReqVO exportReqVO); + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/workreport/WorkReportServiceImpl.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/workreport/WorkReportServiceImpl.java new file mode 100644 index 0000000..8885975 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/java/com/yunxi/scm/module/xxjj/service/workreport/WorkReportServiceImpl.java @@ -0,0 +1,82 @@ +package com.yunxi.scm.module.xxjj.service.workreport; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.yunxi.scm.module.xxjj.controller.admin.workreport.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.workreport.WorkReportDO; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import com.yunxi.scm.module.xxjj.convert.workreport.WorkReportConvert; +import com.yunxi.scm.module.xxjj.dal.mysql.workreport.WorkReportMapper; + +import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; + +/** + * 工作报告 Service 实现类 + * + * @author 长江云息 + */ +@Service +@Validated +public class WorkReportServiceImpl implements WorkReportService { + + @Resource + private WorkReportMapper workReportMapper; + + @Override + public Long createWorkReport(WorkReportCreateReqVO createReqVO) { + // 插入 + WorkReportDO workReport = WorkReportConvert.INSTANCE.convert(createReqVO); + workReportMapper.insert(workReport); + // 返回 + return workReport.getId(); + } + + @Override + public void updateWorkReport(WorkReportUpdateReqVO updateReqVO) { + // 校验存在 + validateWorkReportExists(updateReqVO.getId()); + // 更新 + WorkReportDO updateObj = WorkReportConvert.INSTANCE.convert(updateReqVO); + workReportMapper.updateById(updateObj); + } + + @Override + public void deleteWorkReport(Long id) { + // 校验存在 + validateWorkReportExists(id); + // 删除 + workReportMapper.deleteById(id); + } + + private void validateWorkReportExists(Long id) { + if (workReportMapper.selectById(id) == null) { + throw exception(WORK_REPORT_NOT_EXISTS); + } + } + + @Override + public WorkReportDO getWorkReport(Long id) { + return workReportMapper.selectById(id); + } + + @Override + public List getWorkReportList(Collection ids) { + return workReportMapper.selectBatchIds(ids); + } + + @Override + public PageResult getWorkReportPage(WorkReportPageReqVO pageReqVO) { + return workReportMapper.selectPage(pageReqVO); + } + + @Override + public List getWorkReportList(WorkReportExportReqVO exportReqVO) { + return workReportMapper.selectList(exportReqVO); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/product/ProductMapper.xml b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/product/ProductMapper.xml new file mode 100644 index 0000000..7f9859b --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/product/ProductMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/productcategory/ProductCategoryMapper.xml b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/productcategory/ProductCategoryMapper.xml new file mode 100644 index 0000000..96a2f17 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/productcategory/ProductCategoryMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/productclass/ProductClassMapper.xml b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/productclass/ProductClassMapper.xml new file mode 100644 index 0000000..44e1895 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/productclass/ProductClassMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/producttype/ProductTypeMapper.xml b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/producttype/ProductTypeMapper.xml new file mode 100644 index 0000000..647e73d --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/producttype/ProductTypeMapper.xml @@ -0,0 +1,24 @@ + + + + + + + diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/taskmanage/TaskManageMapper.xml b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/taskmanage/TaskManageMapper.xml new file mode 100644 index 0000000..5dc1a6d --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/taskmanage/TaskManageMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/teammanage/TeamManageMapper.xml b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/teammanage/TeamManageMapper.xml new file mode 100644 index 0000000..d57c0a0 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/teammanage/TeamManageMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/workreport/WorkReportMapper.xml b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/workreport/WorkReportMapper.xml new file mode 100644 index 0000000..bcfacd8 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/main/resources/mapper/workreport/WorkReportMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/product/ProductServiceImplTest.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/product/ProductServiceImplTest.java new file mode 100644 index 0000000..7febd78 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/product/ProductServiceImplTest.java @@ -0,0 +1,311 @@ +package com.yunxi.scm.module.xxjj.service.product; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; + +import javax.annotation.Resource; + +import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest; + +import com.yunxi.scm.module.xxjj.controller.admin.product.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.product.ProductDO; +import com.yunxi.scm.module.xxjj.dal.mysql.product.ProductMapper; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import javax.annotation.Resource; +import org.springframework.context.annotation.Import; +import java.util.*; +import java.time.LocalDateTime; + +import static cn.hutool.core.util.RandomUtil.*; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; +import static com.yunxi.scm.framework.test.core.util.AssertUtils.*; +import static com.yunxi.scm.framework.test.core.util.RandomUtils.*; +import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*; +import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*; +import static com.yunxi.scm.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link ProductServiceImpl} 的单元测试类 + * + * @author 长江云息 + */ +@Import(ProductServiceImpl.class) +public class ProductServiceImplTest extends BaseDbUnitTest { + + @Resource + private ProductServiceImpl productService; + + @Resource + private ProductMapper productMapper; + + @Test + public void testCreateProduct_success() { + // 准备参数 + ProductCreateReqVO reqVO = randomPojo(ProductCreateReqVO.class); + + // 调用 + Long productId = productService.createProduct(reqVO); + // 断言 + assertNotNull(productId); + // 校验记录的属性是否正确 + ProductDO product = productMapper.selectById(productId); + assertPojoEquals(reqVO, product); + } + + @Test + public void testUpdateProduct_success() { + // mock 数据 + ProductDO dbProduct = randomPojo(ProductDO.class); + productMapper.insert(dbProduct);// @Sql: 先插入出一条存在的数据 + // 准备参数 + ProductUpdateReqVO reqVO = randomPojo(ProductUpdateReqVO.class, o -> { + o.setId(dbProduct.getId()); // 设置更新的 ID + }); + + // 调用 + productService.updateProduct(reqVO); + // 校验是否更新正确 + ProductDO product = productMapper.selectById(reqVO.getId()); // 获取最新的 + assertPojoEquals(reqVO, product); + } + + @Test + public void testUpdateProduct_notExists() { + // 准备参数 + ProductUpdateReqVO reqVO = randomPojo(ProductUpdateReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> productService.updateProduct(reqVO), PRODUCT_NOT_EXISTS); + } + + @Test + public void testDeleteProduct_success() { + // mock 数据 + ProductDO dbProduct = randomPojo(ProductDO.class); + productMapper.insert(dbProduct);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbProduct.getId(); + + // 调用 + productService.deleteProduct(id); + // 校验数据不存在了 + assertNull(productMapper.selectById(id)); + } + + @Test + public void testDeleteProduct_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> productService.deleteProduct(id), PRODUCT_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetProductPage() { + // mock 数据 + ProductDO dbProduct = randomPojo(ProductDO.class, o -> { // 等会查询到 + o.setProductCode(null); + o.setProductName(null); + o.setProductPicture(null); + o.setClassId(null); + o.setTypeId(null); + o.setCategoryId(null); + o.setSpec(null); + o.setSinglePrice(null); + o.setSupplyId(null); + o.setPurchaseWay(null); + o.setSaveType(null); + o.setBrandId(null); + o.setProductAddress(null); + o.setDeliveryWay(null); + o.setProductSource(null); + o.setProductStatus(null); + o.setSaleStatus(null); + o.setLifeCycle(null); + o.setIpoDate(null); + o.setCreateTime(null); + o.setAuditStatus(null); + }); + productMapper.insert(dbProduct); + // 测试 productCode 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setProductCode(null))); + // 测试 productName 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setProductName(null))); + // 测试 productPicture 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setProductPicture(null))); + // 测试 classId 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setClassId(null))); + // 测试 typeId 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setTypeId(null))); + // 测试 categoryId 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setCategoryId(null))); + // 测试 spec 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setSpec(null))); + // 测试 singlePrice 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setSinglePrice(null))); + // 测试 supplyId 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setSupplyId(null))); + // 测试 purchaseWay 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setPurchaseWay(null))); + // 测试 saveType 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setSaveType(null))); + // 测试 brandId 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setBrandId(null))); + // 测试 productAddress 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setProductAddress(null))); + // 测试 deliveryWay 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setDeliveryWay(null))); + // 测试 productSource 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setProductSource(null))); + // 测试 productStatus 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setProductStatus(null))); + // 测试 saleStatus 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setSaleStatus(null))); + // 测试 lifeCycle 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setLifeCycle(null))); + // 测试 ipoDate 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setIpoDate(null))); + // 测试 createTime 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setCreateTime(null))); + // 测试 createTime 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setAuditStatus(null))); + // 准备参数 + ProductPageReqVO reqVO = new ProductPageReqVO(); + reqVO.setProductCode(null); + reqVO.setProductName(null); + reqVO.setProductPicture(null); + reqVO.setClassId(null); + reqVO.setTypeId(null); + reqVO.setCategoryId(null); + reqVO.setSpec(null); + reqVO.setSinglePrice(null); + reqVO.setSupplyId(null); + reqVO.setPurchaseWay(null); + reqVO.setSaveType(null); + reqVO.setBrandId(null); + reqVO.setProductAddress(null); + reqVO.setDeliveryWay(null); + reqVO.setProductSource(null); + reqVO.setProductStatus(null); + reqVO.setSaleStatus(null); + reqVO.setLifeCycle(null); + reqVO.setIpoDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setAuditStatus(null); + + // 调用 + PageResult pageResult = productService.getProductPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbProduct, pageResult.getList().get(0)); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetProductList() { + // mock 数据 + ProductDO dbProduct = randomPojo(ProductDO.class, o -> { // 等会查询到 + o.setProductCode(null); + o.setProductName(null); + o.setProductPicture(null); + o.setClassId(null); + o.setTypeId(null); + o.setCategoryId(null); + o.setSpec(null); + o.setSinglePrice(null); + o.setSupplyId(null); + o.setPurchaseWay(null); + o.setSaveType(null); + o.setBrandId(null); + o.setProductAddress(null); + o.setDeliveryWay(null); + o.setProductSource(null); + o.setProductStatus(null); + o.setSaleStatus(null); + o.setLifeCycle(null); + o.setIpoDate(null); + o.setCreateTime(null); + o.setAuditStatus(null); + }); + productMapper.insert(dbProduct); + // 测试 productCode 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setProductCode(null))); + // 测试 productName 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setProductName(null))); + // 测试 productPicture 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setProductPicture(null))); + // 测试 classId 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setClassId(null))); + // 测试 typeId 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setTypeId(null))); + // 测试 categoryId 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setCategoryId(null))); + // 测试 spec 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setSpec(null))); + // 测试 singlePrice 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setSinglePrice(null))); + // 测试 supplyId 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setSupplyId(null))); + // 测试 purchaseWay 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setPurchaseWay(null))); + // 测试 saveType 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setSaveType(null))); + // 测试 brandId 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setBrandId(null))); + // 测试 productAddress 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setProductAddress(null))); + // 测试 deliveryWay 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setDeliveryWay(null))); + // 测试 productSource 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setProductSource(null))); + // 测试 productStatus 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setProductStatus(null))); + // 测试 saleStatus 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setSaleStatus(null))); + // 测试 lifeCycle 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setLifeCycle(null))); + // 测试 ipoDate 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setIpoDate(null))); + // 测试 createTime 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setCreateTime(null))); + // 测试 createTime 不匹配 + productMapper.insert(cloneIgnoreId(dbProduct, o -> o.setAuditStatus(null))); + // 准备参数 + ProductExportReqVO reqVO = new ProductExportReqVO(); + reqVO.setProductCode(null); + reqVO.setProductName(null); + reqVO.setProductPicture(null); + reqVO.setClassId(null); + reqVO.setTypeId(null); + reqVO.setCategoryId(null); + reqVO.setSpec(null); + reqVO.setSinglePrice(null); + reqVO.setSupplyId(null); + reqVO.setPurchaseWay(null); + reqVO.setSaveType(null); + reqVO.setBrandId(null); + reqVO.setProductAddress(null); + reqVO.setDeliveryWay(null); + reqVO.setProductSource(null); + reqVO.setProductStatus(null); + reqVO.setSaleStatus(null); + reqVO.setLifeCycle(null); + reqVO.setIpoDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setAuditStatus(null); + + // 调用 + List list = productService.getProductList(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbProduct, list.get(0)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/productcategory/ProductCategoryServiceImplTest.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/productcategory/ProductCategoryServiceImplTest.java new file mode 100644 index 0000000..d61d01a --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/productcategory/ProductCategoryServiceImplTest.java @@ -0,0 +1,159 @@ +package com.yunxi.scm.module.xxjj.service.productcategory; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; + +import javax.annotation.Resource; + +import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest; + +import com.yunxi.scm.module.xxjj.controller.admin.productcategory.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productcategory.ProductCategoryDO; +import com.yunxi.scm.module.xxjj.dal.mysql.productcategory.ProductCategoryMapper; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import javax.annotation.Resource; +import org.springframework.context.annotation.Import; +import java.util.*; +import java.time.LocalDateTime; + +import static cn.hutool.core.util.RandomUtil.*; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; +import static com.yunxi.scm.framework.test.core.util.AssertUtils.*; +import static com.yunxi.scm.framework.test.core.util.RandomUtils.*; +import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*; +import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*; +import static com.yunxi.scm.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link ProductCategoryServiceImpl} 的单元测试类 + * + * @author 长江云息 + */ +@Import(ProductCategoryServiceImpl.class) +public class ProductCategoryServiceImplTest extends BaseDbUnitTest { + + @Resource + private ProductCategoryServiceImpl productCategoryService; + + @Resource + private ProductCategoryMapper productCategoryMapper; + + @Test + public void testCreateProductCategory_success() { + // 准备参数 + ProductCategoryCreateReqVO reqVO = randomPojo(ProductCategoryCreateReqVO.class); + + // 调用 + Long productCategoryId = productCategoryService.createProductCategory(reqVO); + // 断言 + assertNotNull(productCategoryId); + // 校验记录的属性是否正确 + ProductCategoryDO productCategory = productCategoryMapper.selectById(productCategoryId); + assertPojoEquals(reqVO, productCategory); + } + + @Test + public void testUpdateProductCategory_success() { + // mock 数据 + ProductCategoryDO dbProductCategory = randomPojo(ProductCategoryDO.class); + productCategoryMapper.insert(dbProductCategory);// @Sql: 先插入出一条存在的数据 + // 准备参数 + ProductCategoryUpdateReqVO reqVO = randomPojo(ProductCategoryUpdateReqVO.class, o -> { + o.setId(dbProductCategory.getId()); // 设置更新的 ID + }); + + // 调用 + productCategoryService.updateProductCategory(reqVO); + // 校验是否更新正确 + ProductCategoryDO productCategory = productCategoryMapper.selectById(reqVO.getId()); // 获取最新的 + assertPojoEquals(reqVO, productCategory); + } + + @Test + public void testUpdateProductCategory_notExists() { + // 准备参数 + ProductCategoryUpdateReqVO reqVO = randomPojo(ProductCategoryUpdateReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> productCategoryService.updateProductCategory(reqVO), PRODUCT_CATEGORY_NOT_EXISTS); + } + + @Test + public void testDeleteProductCategory_success() { + // mock 数据 + ProductCategoryDO dbProductCategory = randomPojo(ProductCategoryDO.class); + productCategoryMapper.insert(dbProductCategory);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbProductCategory.getId(); + + // 调用 + productCategoryService.deleteProductCategory(id); + // 校验数据不存在了 + assertNull(productCategoryMapper.selectById(id)); + } + + @Test + public void testDeleteProductCategory_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> productCategoryService.deleteProductCategory(id), PRODUCT_CATEGORY_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetProductCategoryPage() { + // mock 数据 + ProductCategoryDO dbProductCategory = randomPojo(ProductCategoryDO.class, o -> { // 等会查询到 + o.setName(null); + o.setCreateTime(null); + }); + productCategoryMapper.insert(dbProductCategory); + // 测试 name 不匹配 + productCategoryMapper.insert(cloneIgnoreId(dbProductCategory, o -> o.setName(null))); + // 测试 createTime 不匹配 + productCategoryMapper.insert(cloneIgnoreId(dbProductCategory, o -> o.setCreateTime(null))); + // 准备参数 + ProductCategoryPageReqVO reqVO = new ProductCategoryPageReqVO(); + reqVO.setName(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = productCategoryService.getProductCategoryPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbProductCategory, pageResult.getList().get(0)); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetProductCategoryList() { + // mock 数据 + ProductCategoryDO dbProductCategory = randomPojo(ProductCategoryDO.class, o -> { // 等会查询到 + o.setName(null); + o.setCreateTime(null); + }); + productCategoryMapper.insert(dbProductCategory); + // 测试 name 不匹配 + productCategoryMapper.insert(cloneIgnoreId(dbProductCategory, o -> o.setName(null))); + // 测试 createTime 不匹配 + productCategoryMapper.insert(cloneIgnoreId(dbProductCategory, o -> o.setCreateTime(null))); + // 准备参数 + ProductCategoryExportReqVO reqVO = new ProductCategoryExportReqVO(); + reqVO.setName(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + List list = productCategoryService.getProductCategoryList(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbProductCategory, list.get(0)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/productclass/ProductClassServiceImplTest.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/productclass/ProductClassServiceImplTest.java new file mode 100644 index 0000000..4f38097 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/productclass/ProductClassServiceImplTest.java @@ -0,0 +1,167 @@ +package com.yunxi.scm.module.xxjj.service.productclass; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; + +import javax.annotation.Resource; + +import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest; + +import com.yunxi.scm.module.xxjj.controller.admin.productclass.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.productclass.ProductClassDO; +import com.yunxi.scm.module.xxjj.dal.mysql.productclass.ProductClassMapper; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import javax.annotation.Resource; +import org.springframework.context.annotation.Import; +import java.util.*; +import java.time.LocalDateTime; + +import static cn.hutool.core.util.RandomUtil.*; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; +import static com.yunxi.scm.framework.test.core.util.AssertUtils.*; +import static com.yunxi.scm.framework.test.core.util.RandomUtils.*; +import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*; +import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*; +import static com.yunxi.scm.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link ProductClassServiceImpl} 的单元测试类 + * + * @author 长江云息 + */ +@Import(ProductClassServiceImpl.class) +public class ProductClassServiceImplTest extends BaseDbUnitTest { + + @Resource + private ProductClassServiceImpl productClassService; + + @Resource + private ProductClassMapper productClassMapper; + + @Test + public void testCreateProductClass_success() { + // 准备参数 + ProductClassCreateReqVO reqVO = randomPojo(ProductClassCreateReqVO.class); + + // 调用 + Long productClassId = productClassService.createProductClass(reqVO); + // 断言 + assertNotNull(productClassId); + // 校验记录的属性是否正确 + ProductClassDO productClass = productClassMapper.selectById(productClassId); + assertPojoEquals(reqVO, productClass); + } + + @Test + public void testUpdateProductClass_success() { + // mock 数据 + ProductClassDO dbProductClass = randomPojo(ProductClassDO.class); + productClassMapper.insert(dbProductClass);// @Sql: 先插入出一条存在的数据 + // 准备参数 + ProductClassUpdateReqVO reqVO = randomPojo(ProductClassUpdateReqVO.class, o -> { + o.setId(dbProductClass.getId()); // 设置更新的 ID + }); + + // 调用 + productClassService.updateProductClass(reqVO); + // 校验是否更新正确 + ProductClassDO productClass = productClassMapper.selectById(reqVO.getId()); // 获取最新的 + assertPojoEquals(reqVO, productClass); + } + + @Test + public void testUpdateProductClass_notExists() { + // 准备参数 + ProductClassUpdateReqVO reqVO = randomPojo(ProductClassUpdateReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> productClassService.updateProductClass(reqVO), PRODUCT_CLASS_NOT_EXISTS); + } + + @Test + public void testDeleteProductClass_success() { + // mock 数据 + ProductClassDO dbProductClass = randomPojo(ProductClassDO.class); + productClassMapper.insert(dbProductClass);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbProductClass.getId(); + + // 调用 + productClassService.deleteProductClass(id); + // 校验数据不存在了 + assertNull(productClassMapper.selectById(id)); + } + + @Test + public void testDeleteProductClass_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> productClassService.deleteProductClass(id), PRODUCT_CLASS_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetProductClassPage() { + // mock 数据 + ProductClassDO dbProductClass = randomPojo(ProductClassDO.class, o -> { // 等会查询到 + o.setName(null); + o.setStatus(null); + o.setCreateTime(null); + }); + productClassMapper.insert(dbProductClass); + // 测试 name 不匹配 + productClassMapper.insert(cloneIgnoreId(dbProductClass, o -> o.setName(null))); + // 测试 status 不匹配 + productClassMapper.insert(cloneIgnoreId(dbProductClass, o -> o.setStatus(null))); + // 测试 createTime 不匹配 + productClassMapper.insert(cloneIgnoreId(dbProductClass, o -> o.setCreateTime(null))); + // 准备参数 + ProductClassPageReqVO reqVO = new ProductClassPageReqVO(); + reqVO.setName(null); + reqVO.setStatus(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = productClassService.getProductClassPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbProductClass, pageResult.getList().get(0)); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetProductClassList() { + // mock 数据 + ProductClassDO dbProductClass = randomPojo(ProductClassDO.class, o -> { // 等会查询到 + o.setName(null); + o.setStatus(null); + o.setCreateTime(null); + }); + productClassMapper.insert(dbProductClass); + // 测试 name 不匹配 + productClassMapper.insert(cloneIgnoreId(dbProductClass, o -> o.setName(null))); + // 测试 status 不匹配 + productClassMapper.insert(cloneIgnoreId(dbProductClass, o -> o.setStatus(null))); + // 测试 createTime 不匹配 + productClassMapper.insert(cloneIgnoreId(dbProductClass, o -> o.setCreateTime(null))); + // 准备参数 + ProductClassExportReqVO reqVO = new ProductClassExportReqVO(); + reqVO.setName(null); + reqVO.setStatus(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + List list = productClassService.getProductClassList(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbProductClass, list.get(0)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/producttype/ProductTypeServiceImplTest.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/producttype/ProductTypeServiceImplTest.java new file mode 100644 index 0000000..b2d8cc0 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/producttype/ProductTypeServiceImplTest.java @@ -0,0 +1,191 @@ +package com.yunxi.scm.module.xxjj.service.producttype; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; + +import javax.annotation.Resource; + +import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest; + +import com.yunxi.scm.module.xxjj.controller.admin.producttype.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.producttype.ProductTypeDO; +import com.yunxi.scm.module.xxjj.dal.mysql.producttype.ProductTypeMapper; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import javax.annotation.Resource; +import org.springframework.context.annotation.Import; +import java.util.*; +import java.time.LocalDateTime; + +import static cn.hutool.core.util.RandomUtil.*; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; +import static com.yunxi.scm.framework.test.core.util.AssertUtils.*; +import static com.yunxi.scm.framework.test.core.util.RandomUtils.*; +import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*; +import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*; +import static com.yunxi.scm.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link ProductTypeServiceImpl} 的单元测试类 + * + * @author 长江云息 + */ +@Import(ProductTypeServiceImpl.class) +public class ProductTypeServiceImplTest extends BaseDbUnitTest { + + @Resource + private ProductTypeServiceImpl productTypeService; + + @Resource + private ProductTypeMapper productTypeMapper; + + @Test + public void testCreateProductType_success() { + // 准备参数 + ProductTypeCreateReqVO reqVO = randomPojo(ProductTypeCreateReqVO.class); + + // 调用 + Long productTypeId = productTypeService.createProductType(reqVO); + // 断言 + assertNotNull(productTypeId); + // 校验记录的属性是否正确 + ProductTypeDO productType = productTypeMapper.selectById(productTypeId); + assertPojoEquals(reqVO, productType); + } + + @Test + public void testUpdateProductType_success() { + // mock 数据 + ProductTypeDO dbProductType = randomPojo(ProductTypeDO.class); + productTypeMapper.insert(dbProductType);// @Sql: 先插入出一条存在的数据 + // 准备参数 + ProductTypeUpdateReqVO reqVO = randomPojo(ProductTypeUpdateReqVO.class, o -> { + o.setId(dbProductType.getId()); // 设置更新的 ID + }); + + // 调用 + productTypeService.updateProductType(reqVO); + // 校验是否更新正确 + ProductTypeDO productType = productTypeMapper.selectById(reqVO.getId()); // 获取最新的 + assertPojoEquals(reqVO, productType); + } + + @Test + public void testUpdateProductType_notExists() { + // 准备参数 + ProductTypeUpdateReqVO reqVO = randomPojo(ProductTypeUpdateReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> productTypeService.updateProductType(reqVO), PRODUCT_TYPE_NOT_EXISTS); + } + + @Test + public void testDeleteProductType_success() { + // mock 数据 + ProductTypeDO dbProductType = randomPojo(ProductTypeDO.class); + productTypeMapper.insert(dbProductType);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbProductType.getId(); + + // 调用 + productTypeService.deleteProductType(id); + // 校验数据不存在了 + assertNull(productTypeMapper.selectById(id)); + } + + @Test + public void testDeleteProductType_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> productTypeService.deleteProductType(id), PRODUCT_TYPE_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetProductTypePage() { + // mock 数据 + ProductTypeDO dbProductType = randomPojo(ProductTypeDO.class, o -> { // 等会查询到 + o.setClassId(null); + o.setName(null); + o.setStatus(null); + o.setNum(null); + o.setDescription(null); + o.setCreateTime(null); + }); + productTypeMapper.insert(dbProductType); + // 测试 classId 不匹配 + productTypeMapper.insert(cloneIgnoreId(dbProductType, o -> o.setClassId(null))); + // 测试 name 不匹配 + productTypeMapper.insert(cloneIgnoreId(dbProductType, o -> o.setName(null))); + // 测试 status 不匹配 + productTypeMapper.insert(cloneIgnoreId(dbProductType, o -> o.setStatus(null))); + // 测试 num 不匹配 + productTypeMapper.insert(cloneIgnoreId(dbProductType, o -> o.setNum(null))); + // 测试 description 不匹配 + productTypeMapper.insert(cloneIgnoreId(dbProductType, o -> o.setDescription(null))); + // 测试 createTime 不匹配 + productTypeMapper.insert(cloneIgnoreId(dbProductType, o -> o.setCreateTime(null))); + // 准备参数 + ProductTypePageReqVO reqVO = new ProductTypePageReqVO(); + reqVO.setClassId(null); + reqVO.setName(null); + reqVO.setStatus(null); + reqVO.setNum(null); + reqVO.setDescription(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = productTypeService.getProductTypePage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbProductType, pageResult.getList().get(0)); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetProductTypeList() { + // mock 数据 + ProductTypeDO dbProductType = randomPojo(ProductTypeDO.class, o -> { // 等会查询到 + o.setClassId(null); + o.setName(null); + o.setStatus(null); + o.setNum(null); + o.setDescription(null); + o.setCreateTime(null); + }); + productTypeMapper.insert(dbProductType); + // 测试 classId 不匹配 + productTypeMapper.insert(cloneIgnoreId(dbProductType, o -> o.setClassId(null))); + // 测试 name 不匹配 + productTypeMapper.insert(cloneIgnoreId(dbProductType, o -> o.setName(null))); + // 测试 status 不匹配 + productTypeMapper.insert(cloneIgnoreId(dbProductType, o -> o.setStatus(null))); + // 测试 num 不匹配 + productTypeMapper.insert(cloneIgnoreId(dbProductType, o -> o.setNum(null))); + // 测试 description 不匹配 + productTypeMapper.insert(cloneIgnoreId(dbProductType, o -> o.setDescription(null))); + // 测试 createTime 不匹配 + productTypeMapper.insert(cloneIgnoreId(dbProductType, o -> o.setCreateTime(null))); + // 准备参数 + ProductTypeExportReqVO reqVO = new ProductTypeExportReqVO(); + reqVO.setClassId(null); + reqVO.setName(null); + reqVO.setStatus(null); + reqVO.setNum(null); + reqVO.setDescription(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + List list = productTypeService.getProductTypeList(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbProductType, list.get(0)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/taskmanage/TaskManageServiceImplTest.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/taskmanage/TaskManageServiceImplTest.java new file mode 100644 index 0000000..12ddf12 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/taskmanage/TaskManageServiceImplTest.java @@ -0,0 +1,247 @@ +package com.yunxi.scm.module.xxjj.service.taskmanage; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; + +import javax.annotation.Resource; + +import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest; + +import com.yunxi.scm.module.xxjj.controller.admin.taskmanage.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.taskmanage.TaskManageDO; +import com.yunxi.scm.module.xxjj.dal.mysql.taskmanage.TaskManageMapper; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import javax.annotation.Resource; +import org.springframework.context.annotation.Import; +import java.util.*; +import java.time.LocalDateTime; + +import static cn.hutool.core.util.RandomUtil.*; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; +import static com.yunxi.scm.framework.test.core.util.AssertUtils.*; +import static com.yunxi.scm.framework.test.core.util.RandomUtils.*; +import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*; +import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*; +import static com.yunxi.scm.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link TaskManageServiceImpl} 的单元测试类 + * + * @author 长江云息 + */ +@Import(TaskManageServiceImpl.class) +public class TaskManageServiceImplTest extends BaseDbUnitTest { + + @Resource + private TaskManageServiceImpl taskManageService; + + @Resource + private TaskManageMapper taskManageMapper; + + @Test + public void testCreateTaskManage_success() { + // 准备参数 + TaskManageCreateReqVO reqVO = randomPojo(TaskManageCreateReqVO.class); + + // 调用 + Long taskManageId = taskManageService.createTaskManage(reqVO); + // 断言 + assertNotNull(taskManageId); + // 校验记录的属性是否正确 + TaskManageDO taskManage = taskManageMapper.selectById(taskManageId); + assertPojoEquals(reqVO, taskManage); + } + + @Test + public void testUpdateTaskManage_success() { + // mock 数据 + TaskManageDO dbTaskManage = randomPojo(TaskManageDO.class); + taskManageMapper.insert(dbTaskManage);// @Sql: 先插入出一条存在的数据 + // 准备参数 + TaskManageUpdateReqVO reqVO = randomPojo(TaskManageUpdateReqVO.class, o -> { + o.setId(dbTaskManage.getId()); // 设置更新的 ID + }); + + // 调用 + taskManageService.updateTaskManage(reqVO); + // 校验是否更新正确 + TaskManageDO taskManage = taskManageMapper.selectById(reqVO.getId()); // 获取最新的 + assertPojoEquals(reqVO, taskManage); + } + + @Test + public void testUpdateTaskManage_notExists() { + // 准备参数 + TaskManageUpdateReqVO reqVO = randomPojo(TaskManageUpdateReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> taskManageService.updateTaskManage(reqVO), TASK_MANAGE_NOT_EXISTS); + } + + @Test + public void testDeleteTaskManage_success() { + // mock 数据 + TaskManageDO dbTaskManage = randomPojo(TaskManageDO.class); + taskManageMapper.insert(dbTaskManage);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbTaskManage.getId(); + + // 调用 + taskManageService.deleteTaskManage(id); + // 校验数据不存在了 + assertNull(taskManageMapper.selectById(id)); + } + + @Test + public void testDeleteTaskManage_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> taskManageService.deleteTaskManage(id), TASK_MANAGE_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetTaskManagePage() { + // mock 数据 + TaskManageDO dbTaskManage = randomPojo(TaskManageDO.class, o -> { // 等会查询到 + o.setTitle(null); + o.setStartTime(null); + o.setEndTime(null); + o.setProjectId(null); + o.setChargeId(null); + o.setJoinId(null); + o.setTaskMark(null); + o.setUrgentLevel(null); + o.setTaskRemind(null); + o.setRemindWay(null); + o.setTaskDescription(null); + o.setUploadAnnex(null); + o.setCreateTime(null); + }); + taskManageMapper.insert(dbTaskManage); + // 测试 title 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setTitle(null))); + // 测试 startTime 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setStartTime(null))); + // 测试 endTime 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setEndTime(null))); + // 测试 projectId 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setProjectId(null))); + // 测试 chargeId 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setChargeId(null))); + // 测试 joinId 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setJoinId(null))); + // 测试 taskMark 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setTaskMark(null))); + // 测试 urgentLevel 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setUrgentLevel(null))); + // 测试 taskRemind 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setTaskRemind(null))); + // 测试 remindWay 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setRemindWay(null))); + // 测试 taskDescription 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setTaskDescription(null))); + // 测试 uploadAnnex 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setUploadAnnex(null))); + // 测试 createTime 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setCreateTime(null))); + // 准备参数 + TaskManagePageReqVO reqVO = new TaskManagePageReqVO(); + reqVO.setTitle(null); + reqVO.setStartTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setEndTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setProjectId(null); + reqVO.setChargeId(null); + reqVO.setJoinId(null); + reqVO.setTaskMark(null); + reqVO.setUrgentLevel(null); + reqVO.setTaskRemind(null); + reqVO.setRemindWay(null); + reqVO.setTaskDescription(null); + reqVO.setUploadAnnex(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = taskManageService.getTaskManagePage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbTaskManage, pageResult.getList().get(0)); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetTaskManageList() { + // mock 数据 + TaskManageDO dbTaskManage = randomPojo(TaskManageDO.class, o -> { // 等会查询到 + o.setTitle(null); + o.setStartTime(null); + o.setEndTime(null); + o.setProjectId(null); + o.setChargeId(null); + o.setJoinId(null); + o.setTaskMark(null); + o.setUrgentLevel(null); + o.setTaskRemind(null); + o.setRemindWay(null); + o.setTaskDescription(null); + o.setUploadAnnex(null); + o.setCreateTime(null); + }); + taskManageMapper.insert(dbTaskManage); + // 测试 title 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setTitle(null))); + // 测试 startTime 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setStartTime(null))); + // 测试 endTime 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setEndTime(null))); + // 测试 projectId 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setProjectId(null))); + // 测试 chargeId 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setChargeId(null))); + // 测试 joinId 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setJoinId(null))); + // 测试 taskMark 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setTaskMark(null))); + // 测试 urgentLevel 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setUrgentLevel(null))); + // 测试 taskRemind 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setTaskRemind(null))); + // 测试 remindWay 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setRemindWay(null))); + // 测试 taskDescription 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setTaskDescription(null))); + // 测试 uploadAnnex 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setUploadAnnex(null))); + // 测试 createTime 不匹配 + taskManageMapper.insert(cloneIgnoreId(dbTaskManage, o -> o.setCreateTime(null))); + // 准备参数 + TaskManageExportReqVO reqVO = new TaskManageExportReqVO(); + reqVO.setTitle(null); + reqVO.setStartTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setEndTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setProjectId(null); + reqVO.setChargeId(null); + reqVO.setJoinId(null); + reqVO.setTaskMark(null); + reqVO.setUrgentLevel(null); + reqVO.setTaskRemind(null); + reqVO.setRemindWay(null); + reqVO.setTaskDescription(null); + reqVO.setUploadAnnex(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + List list = taskManageService.getTaskManageList(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbTaskManage, list.get(0)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/teammanage/TeamManageServiceImplTest.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/teammanage/TeamManageServiceImplTest.java new file mode 100644 index 0000000..5578954 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/teammanage/TeamManageServiceImplTest.java @@ -0,0 +1,191 @@ +package com.yunxi.scm.module.xxjj.service.teammanage; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; + +import javax.annotation.Resource; + +import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest; + +import com.yunxi.scm.module.xxjj.controller.admin.teammanage.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.teammanage.TeamManageDO; +import com.yunxi.scm.module.xxjj.dal.mysql.teammanage.TeamManageMapper; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import javax.annotation.Resource; +import org.springframework.context.annotation.Import; +import java.util.*; +import java.time.LocalDateTime; + +import static cn.hutool.core.util.RandomUtil.*; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; +import static com.yunxi.scm.framework.test.core.util.AssertUtils.*; +import static com.yunxi.scm.framework.test.core.util.RandomUtils.*; +import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*; +import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*; +import static com.yunxi.scm.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link TeamManageServiceImpl} 的单元测试类 + * + * @author 长江云息 + */ +@Import(TeamManageServiceImpl.class) +public class TeamManageServiceImplTest extends BaseDbUnitTest { + + @Resource + private TeamManageServiceImpl teamManageService; + + @Resource + private TeamManageMapper teamManageMapper; + + @Test + public void testCreateTeamManage_success() { + // 准备参数 + TeamManageCreateReqVO reqVO = randomPojo(TeamManageCreateReqVO.class); + + // 调用 + Long teamManageId = teamManageService.createTeamManage(reqVO); + // 断言 + assertNotNull(teamManageId); + // 校验记录的属性是否正确 + TeamManageDO teamManage = teamManageMapper.selectById(teamManageId); + assertPojoEquals(reqVO, teamManage); + } + + @Test + public void testUpdateTeamManage_success() { + // mock 数据 + TeamManageDO dbTeamManage = randomPojo(TeamManageDO.class); + teamManageMapper.insert(dbTeamManage);// @Sql: 先插入出一条存在的数据 + // 准备参数 + TeamManageUpdateReqVO reqVO = randomPojo(TeamManageUpdateReqVO.class, o -> { + o.setId(dbTeamManage.getId()); // 设置更新的 ID + }); + + // 调用 + teamManageService.updateTeamManage(reqVO); + // 校验是否更新正确 + TeamManageDO teamManage = teamManageMapper.selectById(reqVO.getId()); // 获取最新的 + assertPojoEquals(reqVO, teamManage); + } + + @Test + public void testUpdateTeamManage_notExists() { + // 准备参数 + TeamManageUpdateReqVO reqVO = randomPojo(TeamManageUpdateReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> teamManageService.updateTeamManage(reqVO), TEAM_MANAGE_NOT_EXISTS); + } + + @Test + public void testDeleteTeamManage_success() { + // mock 数据 + TeamManageDO dbTeamManage = randomPojo(TeamManageDO.class); + teamManageMapper.insert(dbTeamManage);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbTeamManage.getId(); + + // 调用 + teamManageService.deleteTeamManage(id); + // 校验数据不存在了 + assertNull(teamManageMapper.selectById(id)); + } + + @Test + public void testDeleteTeamManage_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> teamManageService.deleteTeamManage(id), TEAM_MANAGE_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetTeamManagePage() { + // mock 数据 + TeamManageDO dbTeamManage = randomPojo(TeamManageDO.class, o -> { // 等会查询到 + o.setName(null); + o.setPicture(null); + o.setChargeId(null); + o.setTeamId(null); + o.setTeamDescription(null); + o.setCreateTime(null); + }); + teamManageMapper.insert(dbTeamManage); + // 测试 name 不匹配 + teamManageMapper.insert(cloneIgnoreId(dbTeamManage, o -> o.setName(null))); + // 测试 picture 不匹配 + teamManageMapper.insert(cloneIgnoreId(dbTeamManage, o -> o.setPicture(null))); + // 测试 chargeId 不匹配 + teamManageMapper.insert(cloneIgnoreId(dbTeamManage, o -> o.setChargeId(null))); + // 测试 teamId 不匹配 + teamManageMapper.insert(cloneIgnoreId(dbTeamManage, o -> o.setTeamId(null))); + // 测试 teamDescription 不匹配 + teamManageMapper.insert(cloneIgnoreId(dbTeamManage, o -> o.setTeamDescription(null))); + // 测试 createTime 不匹配 + teamManageMapper.insert(cloneIgnoreId(dbTeamManage, o -> o.setCreateTime(null))); + // 准备参数 + TeamManagePageReqVO reqVO = new TeamManagePageReqVO(); + reqVO.setName(null); + reqVO.setPicture(null); + reqVO.setChargeId(null); + reqVO.setTeamId(null); + reqVO.setTeamDescription(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = teamManageService.getTeamManagePage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbTeamManage, pageResult.getList().get(0)); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetTeamManageList() { + // mock 数据 + TeamManageDO dbTeamManage = randomPojo(TeamManageDO.class, o -> { // 等会查询到 + o.setName(null); + o.setPicture(null); + o.setChargeId(null); + o.setTeamId(null); + o.setTeamDescription(null); + o.setCreateTime(null); + }); + teamManageMapper.insert(dbTeamManage); + // 测试 name 不匹配 + teamManageMapper.insert(cloneIgnoreId(dbTeamManage, o -> o.setName(null))); + // 测试 picture 不匹配 + teamManageMapper.insert(cloneIgnoreId(dbTeamManage, o -> o.setPicture(null))); + // 测试 chargeId 不匹配 + teamManageMapper.insert(cloneIgnoreId(dbTeamManage, o -> o.setChargeId(null))); + // 测试 teamId 不匹配 + teamManageMapper.insert(cloneIgnoreId(dbTeamManage, o -> o.setTeamId(null))); + // 测试 teamDescription 不匹配 + teamManageMapper.insert(cloneIgnoreId(dbTeamManage, o -> o.setTeamDescription(null))); + // 测试 createTime 不匹配 + teamManageMapper.insert(cloneIgnoreId(dbTeamManage, o -> o.setCreateTime(null))); + // 准备参数 + TeamManageExportReqVO reqVO = new TeamManageExportReqVO(); + reqVO.setName(null); + reqVO.setPicture(null); + reqVO.setChargeId(null); + reqVO.setTeamId(null); + reqVO.setTeamDescription(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + List list = teamManageService.getTeamManageList(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbTeamManage, list.get(0)); + } + +} diff --git a/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/workreport/WorkReportServiceImplTest.java b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/workreport/WorkReportServiceImplTest.java new file mode 100644 index 0000000..ac2b7e4 --- /dev/null +++ b/yunxi-module-xxjj/yunxi-module-xxjj-biz/src/test/java/com/yunxi/scm/module/xxjj/service/workreport/WorkReportServiceImplTest.java @@ -0,0 +1,239 @@ +package com.yunxi.scm.module.xxjj.service.workreport; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; + +import javax.annotation.Resource; + +import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest; + +import com.yunxi.scm.module.xxjj.controller.admin.workreport.vo.*; +import com.yunxi.scm.module.xxjj.dal.dataobject.workreport.WorkReportDO; +import com.yunxi.scm.module.xxjj.dal.mysql.workreport.WorkReportMapper; +import com.yunxi.scm.framework.common.pojo.PageResult; + +import javax.annotation.Resource; +import org.springframework.context.annotation.Import; +import java.util.*; +import java.time.LocalDateTime; + +import static cn.hutool.core.util.RandomUtil.*; +import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*; +import static com.yunxi.scm.framework.test.core.util.AssertUtils.*; +import static com.yunxi.scm.framework.test.core.util.RandomUtils.*; +import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*; +import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*; +import static com.yunxi.scm.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link WorkReportServiceImpl} 的单元测试类 + * + * @author 长江云息 + */ +@Import(WorkReportServiceImpl.class) +public class WorkReportServiceImplTest extends BaseDbUnitTest { + + @Resource + private WorkReportServiceImpl workReportService; + + @Resource + private WorkReportMapper workReportMapper; + + @Test + public void testCreateWorkReport_success() { + // 准备参数 + WorkReportCreateReqVO reqVO = randomPojo(WorkReportCreateReqVO.class); + + // 调用 + Long workReportId = workReportService.createWorkReport(reqVO); + // 断言 + assertNotNull(workReportId); + // 校验记录的属性是否正确 + WorkReportDO workReport = workReportMapper.selectById(workReportId); + assertPojoEquals(reqVO, workReport); + } + + @Test + public void testUpdateWorkReport_success() { + // mock 数据 + WorkReportDO dbWorkReport = randomPojo(WorkReportDO.class); + workReportMapper.insert(dbWorkReport);// @Sql: 先插入出一条存在的数据 + // 准备参数 + WorkReportUpdateReqVO reqVO = randomPojo(WorkReportUpdateReqVO.class, o -> { + o.setId(dbWorkReport.getId()); // 设置更新的 ID + }); + + // 调用 + workReportService.updateWorkReport(reqVO); + // 校验是否更新正确 + WorkReportDO workReport = workReportMapper.selectById(reqVO.getId()); // 获取最新的 + assertPojoEquals(reqVO, workReport); + } + + @Test + public void testUpdateWorkReport_notExists() { + // 准备参数 + WorkReportUpdateReqVO reqVO = randomPojo(WorkReportUpdateReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> workReportService.updateWorkReport(reqVO), WORK_REPORT_NOT_EXISTS); + } + + @Test + public void testDeleteWorkReport_success() { + // mock 数据 + WorkReportDO dbWorkReport = randomPojo(WorkReportDO.class); + workReportMapper.insert(dbWorkReport);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbWorkReport.getId(); + + // 调用 + workReportService.deleteWorkReport(id); + // 校验数据不存在了 + assertNull(workReportMapper.selectById(id)); + } + + @Test + public void testDeleteWorkReport_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> workReportService.deleteWorkReport(id), WORK_REPORT_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetWorkReportPage() { + // mock 数据 + WorkReportDO dbWorkReport = randomPojo(WorkReportDO.class, o -> { // 等会查询到 + o.setTitle(null); + o.setType(null); + o.setReportDate(null); + o.setWorkSummary(null); + o.setUploadFile(null); + o.setDepartmentId(null); + o.setApprovalStatus(null); + o.setCommitId(null); + o.setCommitDate(null); + o.setApprovalId(null); + o.setCopyId(null); + o.setCreateTime(null); + }); + workReportMapper.insert(dbWorkReport); + // 测试 title 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setTitle(null))); + // 测试 type 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setType(null))); + // 测试 reportDate 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setReportDate(null))); + // 测试 workSummary 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setWorkSummary(null))); + // 测试 uploadFile 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setUploadFile(null))); + // 测试 departmentId 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setDepartmentId(null))); + // 测试 approvalStatus 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setApprovalStatus(null))); + // 测试 commitId 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setCommitId(null))); + // 测试 commitDate 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setCommitDate(null))); + // 测试 approvalId 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setApprovalId(null))); + // 测试 copyId 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setCopyId(null))); + // 测试 createTime 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setCreateTime(null))); + // 准备参数 + WorkReportPageReqVO reqVO = new WorkReportPageReqVO(); + reqVO.setTitle(null); + reqVO.setType(null); + reqVO.setReportDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setWorkSummary(null); + reqVO.setUploadFile(null); + reqVO.setDepartmentId(null); + reqVO.setApprovalStatus(null); + reqVO.setCommitId(null); + reqVO.setCommitDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setApprovalId(null); + reqVO.setCopyId(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = workReportService.getWorkReportPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbWorkReport, pageResult.getList().get(0)); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetWorkReportList() { + // mock 数据 + WorkReportDO dbWorkReport = randomPojo(WorkReportDO.class, o -> { // 等会查询到 + o.setTitle(null); + o.setType(null); + o.setReportDate(null); + o.setWorkSummary(null); + o.setUploadFile(null); + o.setDepartmentId(null); + o.setApprovalStatus(null); + o.setCommitId(null); + o.setCommitDate(null); + o.setApprovalId(null); + o.setCopyId(null); + o.setCreateTime(null); + }); + workReportMapper.insert(dbWorkReport); + // 测试 title 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setTitle(null))); + // 测试 type 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setType(null))); + // 测试 reportDate 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setReportDate(null))); + // 测试 workSummary 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setWorkSummary(null))); + // 测试 uploadFile 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setUploadFile(null))); + // 测试 departmentId 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setDepartmentId(null))); + // 测试 approvalStatus 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setApprovalStatus(null))); + // 测试 commitId 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setCommitId(null))); + // 测试 commitDate 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setCommitDate(null))); + // 测试 approvalId 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setApprovalId(null))); + // 测试 copyId 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setCopyId(null))); + // 测试 createTime 不匹配 + workReportMapper.insert(cloneIgnoreId(dbWorkReport, o -> o.setCreateTime(null))); + // 准备参数 + WorkReportExportReqVO reqVO = new WorkReportExportReqVO(); + reqVO.setTitle(null); + reqVO.setType(null); + reqVO.setReportDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setWorkSummary(null); + reqVO.setUploadFile(null); + reqVO.setDepartmentId(null); + reqVO.setApprovalStatus(null); + reqVO.setCommitId(null); + reqVO.setCommitDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setApprovalId(null); + reqVO.setCopyId(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + List list = workReportService.getWorkReportList(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbWorkReport, list.get(0)); + } + +} diff --git a/yunxi-ui-admin/src/api/xxjj/product.js b/yunxi-ui-admin/src/api/xxjj/product.js new file mode 100644 index 0000000..597dfb9 --- /dev/null +++ b/yunxi-ui-admin/src/api/xxjj/product.js @@ -0,0 +1,54 @@ +import request from '@/utils/request' + +// 创建产品 +export function createProduct(data) { + return request({ + url: '/xxjj/product/create', + method: 'post', + data: data + }) +} + +// 更新产品 +export function updateProduct(data) { + return request({ + url: '/xxjj/product/update', + method: 'put', + data: data + }) +} + +// 删除产品 +export function deleteProduct(id) { + return request({ + url: '/xxjj/product/delete?id=' + id, + method: 'delete' + }) +} + +// 获得产品 +export function getProduct(id) { + return request({ + url: '/xxjj/product/get?id=' + id, + method: 'get' + }) +} + +// 获得产品分页 +export function getProductPage(query) { + return request({ + url: '/xxjj/product/page', + method: 'get', + params: query + }) +} + +// 导出产品 Excel +export function exportProductExcel(query) { + return request({ + url: '/xxjj/product/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} diff --git a/yunxi-ui-admin/src/api/xxjj/productCategory.js b/yunxi-ui-admin/src/api/xxjj/productCategory.js new file mode 100644 index 0000000..f6fb5e4 --- /dev/null +++ b/yunxi-ui-admin/src/api/xxjj/productCategory.js @@ -0,0 +1,62 @@ +import request from '@/utils/request' + +// 创建产品分类 +export function createProductCategory(data) { + return request({ + url: '/xxjj/product-category/create', + method: 'post', + data: data + }) +} + +// 更新产品分类 +export function updateProductCategory(data) { + return request({ + url: '/xxjj/product-category/update', + method: 'put', + data: data + }) +} + +// 删除产品分类 +export function deleteProductCategory(id) { + return request({ + url: '/xxjj/product-category/delete?id=' + id, + method: 'delete' + }) +} + +// 获得产品分类 +export function getProductCategory(id) { + return request({ + url: '/xxjj/product-category/get?id=' + id, + method: 'get' + }) +} + +// 获得产品分类分页 +export function getProductCategoryPage(query) { + return request({ + url: '/xxjj/product-category/page', + method: 'get', + params: query + }) +} + +// 导出产品分类 Excel +export function exportProductCategoryExcel(query) { + return request({ + url: '/xxjj/product-category/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} + +// 获得商品 SPU 精简列表 +export function getSpuSimpleList() { + return request({ + url: '/product/spu/get-simple-list', + method: 'get', + }) +} diff --git a/yunxi-ui-admin/src/api/xxjj/productClass.js b/yunxi-ui-admin/src/api/xxjj/productClass.js new file mode 100644 index 0000000..e648a9f --- /dev/null +++ b/yunxi-ui-admin/src/api/xxjj/productClass.js @@ -0,0 +1,54 @@ +import request from '@/utils/request' + +// 创建产品类别 +export function createProductClass(data) { + return request({ + url: '/xxjj/product-class/create', + method: 'post', + data: data + }) +} + +// 更新产品类别 +export function updateProductClass(data) { + return request({ + url: '/xxjj/product-class/update', + method: 'put', + data: data + }) +} + +// 删除产品类别 +export function deleteProductClass(id) { + return request({ + url: '/xxjj/product-class/delete?id=' + id, + method: 'delete' + }) +} + +// 获得产品类别 +export function getProductClass(id) { + return request({ + url: '/xxjj/product-class/get?id=' + id, + method: 'get' + }) +} + +// 获得产品类别分页 +export function getProductClassPage(query) { + return request({ + url: '/xxjj/product-class/page', + method: 'get', + params: query + }) +} + +// 导出产品类别 Excel +export function exportProductClassExcel(query) { + return request({ + url: '/xxjj/product-class/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} diff --git a/yunxi-ui-admin/src/api/xxjj/productType.js b/yunxi-ui-admin/src/api/xxjj/productType.js new file mode 100644 index 0000000..67179a0 --- /dev/null +++ b/yunxi-ui-admin/src/api/xxjj/productType.js @@ -0,0 +1,54 @@ +import request from '@/utils/request' + +// 创建产品类型 +export function createProductType(data) { + return request({ + url: '/xxjj/product-type/create', + method: 'post', + data: data + }) +} + +// 更新产品类型 +export function updateProductType(data) { + return request({ + url: '/xxjj/product-type/update', + method: 'put', + data: data + }) +} + +// 删除产品类型 +export function deleteProductType(id) { + return request({ + url: '/xxjj/product-type/delete?id=' + id, + method: 'delete' + }) +} + +// 获得产品类型 +export function getProductType(id) { + return request({ + url: '/xxjj/product-type/get?id=' + id, + method: 'get' + }) +} + +// 获得产品类型分页 +export function getProductTypePage(query) { + return request({ + url: '/xxjj/product-type/page', + method: 'get', + params: query + }) +} + +// 导出产品类型 Excel +export function exportProductTypeExcel(query) { + return request({ + url: '/xxjj/product-type/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} diff --git a/yunxi-ui-admin/src/api/xxjj/taskManage.js b/yunxi-ui-admin/src/api/xxjj/taskManage.js new file mode 100644 index 0000000..0a03212 --- /dev/null +++ b/yunxi-ui-admin/src/api/xxjj/taskManage.js @@ -0,0 +1,54 @@ +import request from '@/utils/request' + +// 创建任务管理 +export function createTaskManage(data) { + return request({ + url: '/xxjj/task-manage/create', + method: 'post', + data: data + }) +} + +// 更新任务管理 +export function updateTaskManage(data) { + return request({ + url: '/xxjj/task-manage/update', + method: 'put', + data: data + }) +} + +// 删除任务管理 +export function deleteTaskManage(id) { + return request({ + url: '/xxjj/task-manage/delete?id=' + id, + method: 'delete' + }) +} + +// 获得任务管理 +export function getTaskManage(id) { + return request({ + url: '/xxjj/task-manage/get?id=' + id, + method: 'get' + }) +} + +// 获得任务管理分页 +export function getTaskManagePage(query) { + return request({ + url: '/xxjj/task-manage/page', + method: 'get', + params: query + }) +} + +// 导出任务管理 Excel +export function exportTaskManageExcel(query) { + return request({ + url: '/xxjj/task-manage/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} diff --git a/yunxi-ui-admin/src/api/xxjj/teamManage.js b/yunxi-ui-admin/src/api/xxjj/teamManage.js new file mode 100644 index 0000000..6aef795 --- /dev/null +++ b/yunxi-ui-admin/src/api/xxjj/teamManage.js @@ -0,0 +1,54 @@ +import request from '@/utils/request' + +// 创建团队管理 +export function createTeamManage(data) { + return request({ + url: '/xxjj/team-manage/create', + method: 'post', + data: data + }) +} + +// 更新团队管理 +export function updateTeamManage(data) { + return request({ + url: '/xxjj/team-manage/update', + method: 'put', + data: data + }) +} + +// 删除团队管理 +export function deleteTeamManage(id) { + return request({ + url: '/xxjj/team-manage/delete?id=' + id, + method: 'delete' + }) +} + +// 获得团队管理 +export function getTeamManage(id) { + return request({ + url: '/xxjj/team-manage/get?id=' + id, + method: 'get' + }) +} + +// 获得团队管理分页 +export function getTeamManagePage(query) { + return request({ + url: '/xxjj/team-manage/page', + method: 'get', + params: query + }) +} + +// 导出团队管理 Excel +export function exportTeamManageExcel(query) { + return request({ + url: '/xxjj/team-manage/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} diff --git a/yunxi-ui-admin/src/api/xxjj/workReport.js b/yunxi-ui-admin/src/api/xxjj/workReport.js new file mode 100644 index 0000000..732958c --- /dev/null +++ b/yunxi-ui-admin/src/api/xxjj/workReport.js @@ -0,0 +1,54 @@ +import request from '@/utils/request' + +// 创建工作报告 +export function createWorkReport(data) { + return request({ + url: '/xxjj/work-report/create', + method: 'post', + data: data + }) +} + +// 更新工作报告 +export function updateWorkReport(data) { + return request({ + url: '/xxjj/work-report/update', + method: 'put', + data: data + }) +} + +// 删除工作报告 +export function deleteWorkReport(id) { + return request({ + url: '/xxjj/work-report/delete?id=' + id, + method: 'delete' + }) +} + +// 获得工作报告 +export function getWorkReport(id) { + return request({ + url: '/xxjj/work-report/get?id=' + id, + method: 'get' + }) +} + +// 获得工作报告分页 +export function getWorkReportPage(query) { + return request({ + url: '/xxjj/work-report/page', + method: 'get', + params: query + }) +} + +// 导出工作报告 Excel +export function exportWorkReportExcel(query) { + return request({ + url: '/xxjj/work-report/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} diff --git a/yunxi-ui-admin/src/utils/dict.js b/yunxi-ui-admin/src/utils/dict.js index 402abbd..1539a9c 100644 --- a/yunxi-ui-admin/src/utils/dict.js +++ b/yunxi-ui-admin/src/utils/dict.js @@ -114,12 +114,36 @@ export const DICT_TYPE = { // ============= SUPPLIER 模块================= SUPPLIER_TYPE: 'supplier_type', //供应商类型 SUPPLIER_NATURE1: 'supplier_nature', //供应商性质 - + SOURCE: 'source',//来源 QUALITY_TYPE: 'quality_type',//类型 BUSINESS_STATE: 'business_state',//状态 PROCESSES_TYPE: 'processes_type',//工序类型 + + // ============= PRODUCT 模块================= + PRODUCT_CLASS: 'product_class', //产品类别 + PRODUCT_TYPE: 'product_type', //产品类型 + PURCHASE_WAY: 'purchase_way', //采购模式 + SAVE_TYPE: 'save_type', //存货类型 + DELIVERY_WAY: 'delivery_way', //配送方式 + PRODUCT_SOURCE: 'product_source', //产品来源 + PRODUCT_STATUS: 'product_status', //产品状态 + SALE_STATUS: 'sale_status', //销售状态 + LIFE_CYCLE: 'life_cycle', //生命周期 + ACCOUNT_STATUS: 'account_status', //账户状态 + CLASS_STATUS: 'class_status', //类别状态 + AUDIT_STATUS: 'audit_status', //审核状态 + // ============= PRODUCT 协作管理================= + URGENT_LEVEL: 'urgent_level', + TASK_REMIND: 'task_remind', + REMIND_WAY: 'remind_way', + REPORT_TYPE: 'report_type', + QUALITY_STATUS: 'quality_status' + + + + } /** diff --git a/yunxi-ui-admin/src/views/xxjj/material/index.vue b/yunxi-ui-admin/src/views/xxjj/material/index.vue index d9099a5..ad75b12 100644 --- a/yunxi-ui-admin/src/views/xxjj/material/index.vue +++ b/yunxi-ui-admin/src/views/xxjj/material/index.vue @@ -1,13 +1,29 @@ diff --git a/yunxi-ui-admin/src/views/xxjj/product/index.vue b/yunxi-ui-admin/src/views/xxjj/product/index.vue index 305d21f..739f573 100644 --- a/yunxi-ui-admin/src/views/xxjj/product/index.vue +++ b/yunxi-ui-admin/src/views/xxjj/product/index.vue @@ -9,109 +9,102 @@ v-show="showSearch" label-width="68px" > - + - + - - - - - - - - - - - + - + - + - + + + 搜索新增 @@ -141,7 +134,7 @@ size="mini" @click="handleExport" :loading="exportLoading" - v-hasPermi="['xxjj:material:export']" + v-hasPermi="['xxjj:product:export']" >导出 @@ -151,421 +144,158 @@ > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + +