From 36c0d309fb75cd217cf9b82f41d8da81e9ee8f1b Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 4 Sep 2025 00:50:45 +0000 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=B8=9A=E5=8A=A1=E5=BA=93?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base-server/pom.xml | 7 +- .../src/main/resources/application-dev.yml | 4 + pom.xml | 6 +- yudao-module-base/pom.xml | 2 +- .../tmpltp/enums/ErrorCodeConstants.java | 24 ++ .../yudao/module/tmpltp/enums/StatusEnum.java | 50 +++ .../module/base/BaseServerApplication.java | 1 + .../admin/base/BaseTestController.java | 3 +- ...epartmentInstanceRelativityController.java | 120 +++++++ .../templtp/TemplateInstanceController.java | 138 ++++++++ .../TemplateInstanceDataController.java | 112 ++++++ .../TemplateInstanceItemController.java | 111 ++++++ .../admin/templtp/TmplItmController.java | 91 +++++ .../admin/templtp/TmplTpController.java | 171 +++++++++ .../admin/templtp/TmplTpFldController.java | 62 ++++ ...DepartmentInstanceRelativityPageReqVO.java | 27 ++ .../DepartmentInstanceRelativityRespVO.java | 31 ++ ...DepartmentInstanceRelativitySaveReqVO.java | 23 ++ .../vo/TemplateInstanceDataPageReqVO.java | 29 ++ .../vo/TemplateInstanceDataRespVO.java | 35 ++ .../vo/TemplateInstanceDataSaveReqVO.java | 27 ++ .../vo/TemplateInstanceItemPageReqVO.java | 30 ++ .../vo/TemplateInstanceItemRespVO.java | 35 ++ .../vo/TemplateInstanceItemSaveReqVO.java | 27 ++ .../templtp/vo/TemplateInstancePageReqVO.java | 47 +++ .../templtp/vo/TemplateInstanceRespVO.java | 59 ++++ .../templtp/vo/TemplateInstanceSaveReqVO.java | 54 +++ .../admin/templtp/vo/TmpItmPageReqVO.java | 35 ++ .../admin/templtp/vo/TmplFldPageReqVO.java | 38 ++ .../admin/templtp/vo/TmplFldRespVO.java | 43 +++ .../admin/templtp/vo/TmplItmRespVO.java | 47 +++ .../admin/templtp/vo/TmplItmSaveReqVO.java | 26 ++ .../templtp/vo/TmplTpEditOrDeleteReqVO.java | 28 ++ .../admin/templtp/vo/TmplTpFldSaveReqVO.java | 25 ++ .../admin/templtp/vo/TmplTpPageReqVO.java | 37 ++ .../admin/templtp/vo/TmplTpRespVO.java | 43 +++ .../admin/templtp/vo/TmplTpSaveReqVO.java | 37 ++ .../admin/templtp/vo/TmplTpTreeVO.java | 33 ++ .../DepartmentInstanceRelativityDO.java | 43 +++ .../dataobject/tmpltp/TemplateInstanceDO.java | 92 +++++ .../tmpltp/TemplateInstanceDataDO.java | 50 +++ .../tmpltp/TemplateInstanceItemDO.java | 48 +++ .../dal/dataobject/tmpltp/TmplFldRelDO.java | 35 ++ .../base/dal/dataobject/tmpltp/TmplItmDO.java | 41 +++ .../dal/dataobject/tmpltp/TmplItmRelDO.java | 35 ++ .../base/dal/dataobject/tmpltp/TmplTpDO.java | 58 +++ .../dal/dataobject/tmpltp/TmplTpFldDO.java | 71 ++++ .../DepartmentInstanceRelativityMapper.java | 30 ++ .../tmpltp/TemplateInstanceDataMapper.java | 31 ++ .../tmpltp/TemplateInstanceItemMapper.java | 31 ++ .../mysql/tmpltp/TemplateInstanceMapper.java | 37 ++ .../dal/mysql/tmpltp/TmplFldRelMapper.java | 10 + .../base/dal/mysql/tmpltp/TmplItmMapper.java | 22 ++ .../dal/mysql/tmpltp/TmplItmRelMapper.java | 10 + .../dal/mysql/tmpltp/TmplTpFldMapper.java | 24 ++ .../base/dal/mysql/tmpltp/TmplTpMapper.java | 47 +++ .../rpc/config/RpcConfiguration.java | 3 +- .../DepartmentInstanceRelativityService.java | 65 ++++ ...partmentInstanceRelativityServiceImpl.java | 97 +++++ .../tmpltp/TemplateInstanceDataService.java | 83 +++++ .../TemplateInstanceDataServiceImpl.java | 123 +++++++ .../tmpltp/TemplateInstanceItemService.java | 66 ++++ .../TemplateInstanceItemServiceImpl.java | 87 +++++ .../tmpltp/TemplateInstanceService.java | 66 ++++ .../tmpltp/TemplateInstanceServiceImpl.java | 109 ++++++ .../base/service/tmpltp/TmplItmService.java | 20 ++ .../service/tmpltp/TmplItmServiceImpl.java | 66 ++++ .../base/service/tmpltp/TmplTpFldService.java | 20 ++ .../service/tmpltp/TmplTpFldServiceImpl.java | 76 ++++ .../base/service/tmpltp/TmplTpService.java | 109 ++++++ .../service/tmpltp/TmplTpServiceImpl.java | 268 ++++++++++++++ .../DepartmentInstanceRelativityMapper.xml | 12 + .../tmpltp/TemplateInstanceDataMapper.xml | 12 + .../tmpltp/TemplateInstanceItemMapper.xml | 12 + .../mapper/tmpltp/TemplateInstanceMapper.xml | 5 + .../mapper/tmpltp/TmplFldRelMapper.xml | 5 + .../resources/mapper/tmpltp/TmplItmMapper.xml | 5 + .../mapper/tmpltp/TmplItmRelMapper.xml | 5 + .../mapper/tmpltp/TmplTpFldMapper.xml | 5 + .../resources/mapper/tmpltp/TmplTpMapper.xml | 44 +++ yudao-module-contract-order/pom.xml | 2 +- .../enums/ErrorCodeConstants.java | 7 +- .../contract/ContractDictTypeConstants.java | 14 + .../enums/contract/ContractStatusEnum.java | 67 ++++ .../enums/contract/ContractTypeEnum.java | 55 +++ .../enums/contract/DateConstants.java | 7 + .../ContractOrderServerApplication.java | 1 + .../admin/contract/ContractController.java | 48 +++ .../preparaton/ContractDetailSaveReqVO.java | 45 +++ .../vo/preparaton/ContractPageReqVO.java | 38 ++ .../vo/preparaton/ContractPlanSaveReqVO.java | 33 ++ .../vo/preparaton/ContractRespVO.java | 215 ++++++++++++ .../vo/preparaton/ContractSaveReqVO.java | 230 ++++++++++++ .../ContractOrderController.java | 3 +- .../dataobject/contract/ContractDetailDO.java | 76 ++++ .../dataobject/contract/ContractMainDO.java | 273 +++++++++++++++ .../dataobject/contract/ContractPlanDO.java | 62 ++++ .../mysql/contract/ContractDetailMapper.java | 14 + .../mysql/contract/ContractMainMapper.java | 27 ++ .../service/contract/ContractService.java | 31 ++ .../service/contract/ContractServiceImpl.java | 113 ++++++ .../module/erp/enums/ErrorCodeConstants.java | 25 ++ .../module/erp/ErpServerApplication.java | 17 + .../module/erp/common/conf/ErpConfig.java | 167 +++++++++ .../module/erp/common/conf/MyRedisConfig.java | 165 +++++++++ .../module/erp/common/enums/OftenEnum.java | 72 ++++ .../erp/common/task/statisticstask.java | 32 ++ .../admin/erp/ErpAssetController.java | 111 ++++++ .../admin/erp/ErpBomController.java | 111 ++++++ .../admin/erp/ErpBomDetailController.java | 104 ++++++ .../admin/erp/ErpCompanyController.java | 113 ++++++ .../admin/erp/ErpContractController.java | 110 ++++++ .../controller/admin/erp/ErpController.java | 35 -- .../admin/erp/ErpCostcenterController.java | 112 ++++++ .../admin/erp/ErpCustomerController.java | 118 +++++++ .../admin/erp/ErpFactoryController.java | 111 ++++++ .../admin/erp/ErpInternalOrderController.java | 111 ++++++ .../admin/erp/ErpMaterialController.java | 118 +++++++ .../admin/erp/ErpProcessController.java | 111 ++++++ .../admin/erp/ErpProcessDetailController.java | 104 ++++++ .../erp/ErpProductiveOrderController.java | 111 ++++++ .../erp/ErpProductiveVersionController.java | 111 ++++++ .../ErpPurchaseOrganizationController.java | 111 ++++++ .../erp/ErpSalesOrganizationController.java | 111 ++++++ .../admin/erp/ErpWarehouseController.java | 111 ++++++ .../admin/erp/vo/ErpAssetPageReqVO.java | 65 ++++ .../admin/erp/vo/ErpAssetRespVO.java | 80 +++++ .../admin/erp/vo/ErpAssetSaveReqVO.java | 67 ++++ .../admin/erp/vo/ErpBomDetailPageReqVO.java | 37 ++ .../admin/erp/vo/ErpBomDetailRespVO.java | 51 +++ .../admin/erp/vo/ErpBomDetailSaveReqVO.java | 49 +++ .../admin/erp/vo/ErpBomPageReqVO.java | 31 ++ .../controller/admin/erp/vo/ErpBomRespVO.java | 43 +++ .../admin/erp/vo/ErpBomSaveReqVO.java | 40 +++ .../admin/erp/vo/ErpCompanyPageReqVO.java | 20 ++ .../admin/erp/vo/ErpCompanyRespVO.java | 29 ++ .../admin/erp/vo/ErpCompanySaveReqVO.java | 26 ++ .../admin/erp/vo/ErpContractPageReqVO.java | 180 ++++++++++ .../admin/erp/vo/ErpContractRespVO.java | 232 ++++++++++++ .../admin/erp/vo/ErpContractSaveReqVO.java | 202 +++++++++++ .../admin/erp/vo/ErpCostcenterPageReqVO.java | 39 +++ .../admin/erp/vo/ErpCostcenterRespVO.java | 47 +++ .../admin/erp/vo/ErpCostcenterSaveReqVO.java | 44 +++ .../admin/erp/vo/ErpCustomerPageReqVO.java | 45 +++ .../admin/erp/vo/ErpCustomerRespVO.java | 55 +++ .../admin/erp/vo/ErpCustomerSaveReqVO.java | 49 +++ .../admin/erp/vo/ErpFactoryPageReqVO.java | 17 + .../admin/erp/vo/ErpFactoryRespVO.java | 25 ++ .../admin/erp/vo/ErpFactorySaveReqVO.java | 22 ++ .../erp/vo/ErpInternalOrderPageReqVO.java | 26 ++ .../admin/erp/vo/ErpInternalOrderRespVO.java | 37 ++ .../erp/vo/ErpInternalOrderSaveReqVO.java | 33 ++ .../admin/erp/vo/ErpMaterialPageReqVO.java | 58 +++ .../admin/erp/vo/ErpMaterialRespVO.java | 71 ++++ .../admin/erp/vo/ErpMaterialSaveReqVO.java | 68 ++++ .../erp/vo/ErpProcessDetailPageReqVO.java | 31 ++ .../admin/erp/vo/ErpProcessDetailRespVO.java | 43 +++ .../erp/vo/ErpProcessDetailSaveReqVO.java | 40 +++ .../admin/erp/vo/ErpProcessPageReqVO.java | 40 +++ .../admin/erp/vo/ErpProcessRespVO.java | 55 +++ .../admin/erp/vo/ErpProcessSaveReqVO.java | 51 +++ .../erp/vo/ErpProductiveOrderPageReqVO.java | 69 ++++ .../erp/vo/ErpProductiveOrderRespVO.java | 87 +++++ .../erp/vo/ErpProductiveOrderSaveReqVO.java | 82 +++++ .../erp/vo/ErpProductiveVersionPageReqVO.java | 34 ++ .../erp/vo/ErpProductiveVersionRespVO.java | 47 +++ .../erp/vo/ErpProductiveVersionSaveReqVO.java | 43 +++ .../vo/ErpPurchaseOrganizationPageReqVO.java | 20 ++ .../erp/vo/ErpPurchaseOrganizationRespVO.java | 29 ++ .../vo/ErpPurchaseOrganizationSaveReqVO.java | 26 ++ .../erp/vo/ErpSalesOrganizationPageReqVO.java | 20 ++ .../erp/vo/ErpSalesOrganizationRespVO.java | 29 ++ .../erp/vo/ErpSalesOrganizationSaveReqVO.java | 26 ++ .../admin/erp/vo/ErpWarehousePageReqVO.java | 29 ++ .../admin/erp/vo/ErpWarehouseRespVO.java | 35 ++ .../admin/erp/vo/ErpWarehouseSaveReqVO.java | 25 ++ .../erp/dal/dataobject/erp/ErpAssetDO.java | 110 ++++++ .../erp/dal/dataobject/erp/ErpBomDO.java | 67 ++++ .../dal/dataobject/erp/ErpBomDetailDO.java | 74 ++++ .../erp/dal/dataobject/erp/ErpCompanyDO.java | 49 +++ .../erp/dal/dataobject/erp/ErpContractDO.java | 330 ++++++++++++++++++ .../dal/dataobject/erp/ErpCostcenterDO.java | 69 ++++ .../erp/dal/dataobject/erp/ErpCustomerDO.java | 83 +++++ .../erp/dal/dataobject/erp/ErpFactoryDO.java | 47 +++ .../dataobject/erp/ErpInternalOrderDO.java | 57 +++ .../erp/dal/dataobject/erp/ErpMaterialDO.java | 103 ++++++ .../erp/dal/dataobject/erp/ErpProcessDO.java | 79 +++++ .../dataobject/erp/ErpProcessDetailDO.java | 64 ++++ .../dataobject/erp/ErpProductiveOrderDO.java | 119 +++++++ .../erp/ErpProductiveVersionDO.java | 69 ++++ .../erp/ErpPurchaseOrganizationDO.java | 47 +++ .../erp/ErpSalesOrganizationDO.java | 47 +++ .../dal/dataobject/erp/ErpWarehouseDO.java | 72 ++++ .../erp/dal/mysql/erp/ErpAssetMapper.java | 38 ++ .../erp/dal/mysql/erp/ErpBomDetailMapper.java | 31 ++ .../erp/dal/mysql/erp/ErpBomMapper.java | 29 ++ .../erp/dal/mysql/erp/ErpCompanyMapper.java | 26 ++ .../erp/dal/mysql/erp/ErpContractMapper.java | 76 ++++ .../dal/mysql/erp/ErpCostcenterMapper.java | 30 ++ .../erp/dal/mysql/erp/ErpCustomerMapper.java | 32 ++ .../erp/dal/mysql/erp/ErpFactoryMapper.java | 31 ++ .../dal/mysql/erp/ErpInternalOrderMapper.java | 28 ++ .../erp/dal/mysql/erp/ErpMaterialMapper.java | 36 ++ .../dal/mysql/erp/ErpProcessDetailMapper.java | 29 ++ .../erp/dal/mysql/erp/ErpProcessMapper.java | 32 ++ .../mysql/erp/ErpProductiveOrderMapper.java | 40 +++ .../mysql/erp/ErpProductiveVersionMapper.java | 30 ++ .../erp/ErpPurchaseOrganizationMapper.java | 26 ++ .../mysql/erp/ErpSalesOrganizationMapper.java | 26 ++ .../erp/dal/mysql/erp/ErpWarehouseMapper.java | 27 ++ .../config/SecurityConfiguration.java | 40 +++ .../erp/service/erp/ErpAssetService.java | 65 ++++ .../erp/service/erp/ErpAssetServiceImpl.java | 228 ++++++++++++ .../erp/service/erp/ErpBomDetailService.java | 64 ++++ .../service/erp/ErpBomDetailServiceImpl.java | 89 +++++ .../module/erp/service/erp/ErpBomService.java | 65 ++++ .../erp/service/erp/ErpBomServiceImpl.java | 231 ++++++++++++ .../erp/service/erp/ErpCompanyService.java | 65 ++++ .../service/erp/ErpCompanyServiceImpl.java | 190 ++++++++++ .../erp/service/erp/ErpContractService.java | 65 ++++ .../service/erp/ErpContractServiceImpl.java | 191 ++++++++++ .../erp/service/erp/ErpCostcenterService.java | 65 ++++ .../service/erp/ErpCostcenterServiceImpl.java | 210 +++++++++++ .../erp/service/erp/ErpCustomerService.java | 67 ++++ .../service/erp/ErpCustomerServiceImpl.java | 234 +++++++++++++ .../erp/service/erp/ErpFactoryService.java | 65 ++++ .../service/erp/ErpFactoryServiceImpl.java | 208 +++++++++++ .../service/erp/ErpInternalOrderService.java | 65 ++++ .../erp/ErpInternalOrderServiceImpl.java | 203 +++++++++++ .../erp/service/erp/ErpMaterialService.java | 67 ++++ .../service/erp/ErpMaterialServiceImpl.java | 223 ++++++++++++ .../service/erp/ErpProcessDetailService.java | 64 ++++ .../erp/ErpProcessDetailServiceImpl.java | 89 +++++ .../erp/service/erp/ErpProcessService.java | 65 ++++ .../service/erp/ErpProcessServiceImpl.java | 191 ++++++++++ .../erp/ErpProductiveOrderService.java | 65 ++++ .../erp/ErpProductiveOrderServiceImpl.java | 213 +++++++++++ .../erp/ErpProductiveVersionService.java | 65 ++++ .../erp/ErpProductiveVersionServiceImpl.java | 206 +++++++++++ .../erp/ErpPurchaseOrganizationService.java | 65 ++++ .../ErpPurchaseOrganizationServiceImpl.java | 200 +++++++++++ .../erp/ErpSalesOrganizationService.java | 65 ++++ .../erp/ErpSalesOrganizationServiceImpl.java | 208 +++++++++++ .../erp/service/erp/ErpWarehouseService.java | 65 ++++ .../service/erp/ErpWarehouseServiceImpl.java | 209 +++++++++++ .../src/main/resources/application-dev.yml | 107 ++++++ .../src/main/resources/application-local.yml | 97 +++++ .../src/main/resources/application.yml | 123 +++++++ .../main/resources/mapper/ErpAssetMapper.xml | 30 ++ .../resources/mapper/ErpBomDetailMapper.xml | 12 + .../main/resources/mapper/ErpBomMapper.xml | 22 ++ .../resources/mapper/ErpCompanyMapper.xml | 22 ++ .../resources/mapper/ErpContractMapper.xml | 22 ++ .../resources/mapper/ErpCostcenterMapper.xml | 22 ++ .../resources/mapper/ErpCustomerMapper.xml | 22 ++ .../resources/mapper/ErpFactoryMapper.xml | 22 ++ .../mapper/ErpInternalOrderMapper.xml | 22 ++ .../resources/mapper/ErpMaterialMapper.xml | 22 ++ .../mapper/ErpProcessDetailMapper.xml | 22 ++ .../resources/mapper/ErpProcessMapper.xml | 22 ++ .../mapper/ErpProductiveOrderMapper.xml | 22 ++ .../mapper/ErpProductiveVersionMapper.xml | 22 ++ .../mapper/ErpPurchaseOrganizationMapper.xml | 22 ++ .../mapper/ErpSalesOrganizationMapper.xml | 22 ++ .../resources/mapper/ErpWarehouseMapper.xml | 22 ++ 265 files changed, 17383 insertions(+), 47 deletions(-) create mode 100644 yudao-module-base/yudao-module-base-api/src/main/java/cn/iocoder/yudao/module/tmpltp/enums/ErrorCodeConstants.java create mode 100644 yudao-module-base/yudao-module-base-api/src/main/java/cn/iocoder/yudao/module/tmpltp/enums/StatusEnum.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/DepartmentInstanceRelativityController.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceController.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceDataController.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceItemController.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplItmController.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplTpController.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplTpFldController.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/DepartmentInstanceRelativityPageReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/DepartmentInstanceRelativityRespVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/DepartmentInstanceRelativitySaveReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataPageReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataRespVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemPageReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemRespVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemSaveReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstancePageReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceRespVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceSaveReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmpItmPageReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplFldPageReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplFldRespVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplItmRespVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplItmSaveReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpEditOrDeleteReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpFldSaveReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpPageReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpRespVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpSaveReqVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpTreeVO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/DepartmentInstanceRelativityDO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceDO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceDataDO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceItemDO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplFldRelDO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplItmDO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplItmRelDO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplTpDO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplTpFldDO.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/DepartmentInstanceRelativityMapper.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceMapper.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplFldRelMapper.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplItmMapper.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplItmRelMapper.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplTpFldMapper.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplTpMapper.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/DepartmentInstanceRelativityService.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/DepartmentInstanceRelativityServiceImpl.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataService.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemService.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceService.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceServiceImpl.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplItmService.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplItmServiceImpl.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpFldService.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpFldServiceImpl.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpService.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpServiceImpl.java create mode 100644 yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/DepartmentInstanceRelativityMapper.xml create mode 100644 yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml create mode 100644 yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml create mode 100644 yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceMapper.xml create mode 100644 yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplFldRelMapper.xml create mode 100644 yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplItmMapper.xml create mode 100644 yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplItmRelMapper.xml create mode 100644 yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplTpFldMapper.xml create mode 100644 yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplTpMapper.xml create mode 100644 yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/ContractDictTypeConstants.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/ContractStatusEnum.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/ContractTypeEnum.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/DateConstants.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/ContractController.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractDetailSaveReqVO.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractPageReqVO.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractPlanSaveReqVO.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractRespVO.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractSaveReqVO.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/dataobject/contract/ContractDetailDO.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/dataobject/contract/ContractMainDO.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/dataobject/contract/ContractPlanDO.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/mysql/contract/ContractDetailMapper.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/mysql/contract/ContractMainMapper.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/service/contract/ContractService.java create mode 100644 yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/service/contract/ContractServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/ErpServerApplication.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/ErpConfig.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/MyRedisConfig.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/enums/OftenEnum.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticstask.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpAssetController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomDetailController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpContractController.java delete mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCostcenterController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpFactoryController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpInternalOrderController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessDetailController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveOrderController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveVersionController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpPurchaseOrganizationController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpSalesOrganizationController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpWarehouseController.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanySaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactorySaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationPageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehousePageReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseRespVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseSaveReqVO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpAssetDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDetailDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCompanyDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpContractDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCostcenterDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCustomerDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpFactoryDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpInternalOrderDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpMaterialDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDetailDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveOrderDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveVersionDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpPurchaseOrganizationDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpSalesOrganizationDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpWarehouseDO.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpAssetMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomDetailMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCompanyMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpContractMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCostcenterMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCustomerMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpFactoryMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpInternalOrderMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpMaterialMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessDetailMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveOrderMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveVersionMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpPurchaseOrganizationMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpSalesOrganizationMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpWarehouseMapper.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/framework/security/config/SecurityConfiguration.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpAssetService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpAssetServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpContractService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpContractServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveOrderService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveOrderServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseService.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseServiceImpl.java create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/application-dev.yml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/application-local.yml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/application.yml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpAssetMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomDetailMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCompanyMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpContractMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCostcenterMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCustomerMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpFactoryMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpInternalOrderMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpMaterialMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveOrderMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveVersionMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpPurchaseOrganizationMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpSalesOrganizationMapper.xml create mode 100644 yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpWarehouseMapper.xml diff --git a/base-server/pom.xml b/base-server/pom.xml index 57b02722..2e6583c8 100644 --- a/base-server/pom.xml +++ b/base-server/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cn.iocoder.cloud - yudao + dsc-base ${revision} 4.0.0 @@ -35,6 +35,11 @@ yudao-module-contract-order-server ${revision} + + cn.iocoder.cloud + yudao-module-erp-server + ${revision} + diff --git a/base-server/src/main/resources/application-dev.yml b/base-server/src/main/resources/application-dev.yml index 30abeecd..210b907a 100644 --- a/base-server/src/main/resources/application-dev.yml +++ b/base-server/src/main/resources/application-dev.yml @@ -105,3 +105,7 @@ justauth: prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE:: timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟 +erp: + address: hana-dev.yncic.com + sapsys: ZTDEV203 + diff --git a/pom.xml b/pom.xml index 24d62d42..a7260d61 100644 --- a/pom.xml +++ b/pom.xml @@ -239,7 +239,7 @@ Spring Snapshots https://repo.spring.io/snapshot - false + true @@ -298,9 +298,9 @@ - chenbowen + liss - chenbowen + liss diff --git a/yudao-module-base/pom.xml b/yudao-module-base/pom.xml index 4f19e9c1..cc4b2ae4 100644 --- a/yudao-module-base/pom.xml +++ b/yudao-module-base/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - yudao + dsc-base cn.iocoder.cloud ${revision} diff --git a/yudao-module-base/yudao-module-base-api/src/main/java/cn/iocoder/yudao/module/tmpltp/enums/ErrorCodeConstants.java b/yudao-module-base/yudao-module-base-api/src/main/java/cn/iocoder/yudao/module/tmpltp/enums/ErrorCodeConstants.java new file mode 100644 index 00000000..0a35a797 --- /dev/null +++ b/yudao-module-base/yudao-module-base-api/src/main/java/cn/iocoder/yudao/module/tmpltp/enums/ErrorCodeConstants.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.tmpltp.enums; + +import cn.iocoder.yudao.framework.common.exception.ErrorCode; + +public interface ErrorCodeConstants { + + // ========== 示例模块 1-001-000-000 ========== + ErrorCode TMPL_TP_NOT_EXISTS = new ErrorCode(1_027_000_500, "模板分类不存在"); + ErrorCode TMPL_FLD_NOT_EXISTS = new ErrorCode(1_027_000_501, "模板字段不存在"); + ErrorCode TMPL_FLD_CODE_EXISTS = new ErrorCode(1_027_000_502, "字段编码已存在"); + ErrorCode TMPL_ITM_NOT_EXISTS = new ErrorCode(1_027_000_503, "模板条款不存在"); + ErrorCode TEMPLATE_INSTANCE_NOT_EXISTS = new ErrorCode(1_027_000_504, "模板实例不存在"); + ErrorCode TMPL_TP_SATUS_ERROR = new ErrorCode(1_027_000_506, "状态变更失败"); + ErrorCode TMPL_TP_DEl_ERROR = new ErrorCode(1_027_000_507, "模版分类删除失败"); + ErrorCode TEMPLATE_INSTANCE_DATA_NOT_EXISTS = new ErrorCode(1_027_000_508, "实例字段值不存在"); + ErrorCode TEMPLATE_INSTANCE_ITEM_NOT_EXISTS = new ErrorCode(1_027_000_509, "实例条款值不存在"); + ErrorCode PARAMS_IS_NULL_OR_ERR = new ErrorCode(1_027_000_510, "参数为空"); + ErrorCode DEPARTMENT_INSTANCE_RELATIVITY_NOT_EXISTS = new ErrorCode(1_027_000_511, "部门与实例关联不存在"); + ErrorCode ILLEGAL_OPERATION_TYPE = new ErrorCode(1_027_000_511, "非法操作类型"); + ErrorCode OPERATION_FAIL= new ErrorCode(1_027_000_512, "操作失败"); + + //Illegal operation type +} + diff --git a/yudao-module-base/yudao-module-base-api/src/main/java/cn/iocoder/yudao/module/tmpltp/enums/StatusEnum.java b/yudao-module-base/yudao-module-base-api/src/main/java/cn/iocoder/yudao/module/tmpltp/enums/StatusEnum.java new file mode 100644 index 00000000..b586a7fc --- /dev/null +++ b/yudao-module-base/yudao-module-base-api/src/main/java/cn/iocoder/yudao/module/tmpltp/enums/StatusEnum.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.tmpltp.enums; + +import java.util.HashSet; +import java.util.Set; + +/** + * 状态枚举类,定义所有可能的状态及合法的状态转换 + */ +public enum StatusEnum { + // 定义所有状态及对应的合法转换目标状态 + STATUS_1("1", new HashSet() {{ + add("2"); + add("4"); + }}), + STATUS_2("2", new HashSet() {{ + add("3"); + }}), + STATUS_3("3", new HashSet() {{ + add("4"); + add("2"); + }}), + STATUS_4("4", new HashSet<>()); // 没有合法的转换目标 + + private final String code; + private final Set allowedTransitions; + + StatusEnum(String code, Set allowedTransitions) { + this.code = code; + this.allowedTransitions = allowedTransitions; + } + + /** + * 根据状态码获取对应的枚举实例 + */ + public static StatusEnum fromCode(String code) { + for (StatusEnum status : values()) { + if (status.code.equals(code)) { + return status; + } + } + return null; + } + + /** + * 校验状态转换是否合法 + */ + public boolean isTransitionAllowed(String targetStatus) { + return allowedTransitions.contains(targetStatus); + } +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/BaseServerApplication.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/BaseServerApplication.java index ae3a3835..4a2f1314 100644 --- a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/BaseServerApplication.java +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/BaseServerApplication.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.base; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; /** * Base 模块的启动类 diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/base/BaseTestController.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/base/BaseTestController.java index 3de680cb..b8d13757 100644 --- a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/base/BaseTestController.java +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/base/BaseTestController.java @@ -1,12 +1,13 @@ package cn.iocoder.yudao.module.base.controller.admin.base; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; + import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; /** diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/DepartmentInstanceRelativityController.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/DepartmentInstanceRelativityController.java new file mode 100644 index 00000000..1a0ff72c --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/DepartmentInstanceRelativityController.java @@ -0,0 +1,120 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.DepartmentInstanceRelativityPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.DepartmentInstanceRelativityRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.DepartmentInstanceRelativitySaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.DepartmentInstanceRelativityDO; +import cn.iocoder.yudao.module.base.service.tmpltp.DepartmentInstanceRelativityService; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import cn.iocoder.yudao.framework.business.interceptor.BusinessControllerMarker; +import cn.iocoder.yudao.framework.business.annotation.FileUploadController; +import cn.iocoder.yudao.framework.business.controller.AbstractFileUploadController; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + + + +@Tag(name = "管理后台 - 部门与实例关联") +@RestController +@RequestMapping("/bse/department-instance-relativity") +@Validated +@FileUploadController(source = "bse.departmentinstancerelativity") +public class DepartmentInstanceRelativityController extends AbstractFileUploadController implements BusinessControllerMarker{ + + static { + FileUploadController annotation = DepartmentInstanceRelativityController.class.getAnnotation(FileUploadController.class); + if (annotation != null) { + setFileUploadInfo(annotation); + } + } + + @Resource + private DepartmentInstanceRelativityService departmentInstanceRelativityService; + + @PostMapping("/create") + @Operation(summary = "创建部门与实例关联") + @PreAuthorize("@ss.hasPermission('bse:department-instance-relativity:create')") + public CommonResult createDepartmentInstanceRelativity(@Valid @RequestBody DepartmentInstanceRelativitySaveReqVO createReqVO) { + return success(departmentInstanceRelativityService.createDepartmentInstanceRelativity(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新部门与实例关联") + @PreAuthorize("@ss.hasPermission('bse:department-instance-relativity:update')") + public CommonResult updateDepartmentInstanceRelativity(@Valid @RequestBody DepartmentInstanceRelativitySaveReqVO updateReqVO) { + departmentInstanceRelativityService.updateDepartmentInstanceRelativity(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除部门与实例关联") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('bse:department-instance-relativity:delete')") + public CommonResult deleteDepartmentInstanceRelativity(@RequestParam("id") String id) { + departmentInstanceRelativityService.deleteDepartmentInstanceRelativity(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除部门与实例关联") + @PreAuthorize("@ss.hasPermission('bse:department-instance-relativity:delete')") + public CommonResult deleteDepartmentInstanceRelativityList(@RequestBody BatchDeleteReqVO req) { + departmentInstanceRelativityService.deleteDepartmentInstanceRelativityListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得部门与实例关联") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('bse:department-instance-relativity:query')") + public CommonResult getDepartmentInstanceRelativity(@RequestParam("id") String id) { + DepartmentInstanceRelativityDO departmentInstanceRelativity = departmentInstanceRelativityService.getDepartmentInstanceRelativity(id); + return success(BeanUtils.toBean(departmentInstanceRelativity, DepartmentInstanceRelativityRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得部门与实例关联分页") + @PreAuthorize("@ss.hasPermission('bse:department-instance-relativity:query')") + public CommonResult> getDepartmentInstanceRelativityPage(@Valid DepartmentInstanceRelativityPageReqVO pageReqVO) { + PageResult pageResult = departmentInstanceRelativityService.getDepartmentInstanceRelativityPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, DepartmentInstanceRelativityRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出部门与实例关联 Excel") + @PreAuthorize("@ss.hasPermission('bse:department-instance-relativity:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportDepartmentInstanceRelativityExcel(@Valid DepartmentInstanceRelativityPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = departmentInstanceRelativityService.getDepartmentInstanceRelativityPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "部门与实例关联.xls", "数据", DepartmentInstanceRelativityRespVO.class, + BeanUtils.toBean(list, DepartmentInstanceRelativityRespVO.class)); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceController.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceController.java new file mode 100644 index 00000000..1de132fe --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceController.java @@ -0,0 +1,138 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp; + +import cn.hutool.core.io.IoUtil; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstancePageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceDO; +import cn.iocoder.yudao.module.base.service.tmpltp.TemplateInstanceService; +import cn.iocoder.yudao.module.infra.api.file.FileApi; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import cn.iocoder.yudao.framework.business.annotation.FileUploadController; +import cn.iocoder.yudao.framework.business.controller.AbstractFileUploadController; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import org.springframework.web.multipart.MultipartFile; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + + + +@Tag(name = "管理后台 - 模板实例") +@RestController +@RequestMapping("/base/template-instance") +@Validated +@FileUploadController(source = "bse.templateinstance") +public class TemplateInstanceController extends AbstractFileUploadController { + + static { + FileUploadController annotation = TemplateInstanceController.class.getAnnotation(FileUploadController.class); + if (annotation != null) { + setFileUploadInfo(annotation); + } + } + + @Resource + private TemplateInstanceService templateInstanceService; + + @Resource + private FileApi fileApi; + +// @PostMapping("/upload-file") +// @Operation(summary = "上传模板实例文件") +// public CommonResult >upload(MultipartFile file) { +// Map fileMap = new HashMap<>(); +// try { +// String fileWhitReturn = fileApi.createFile(file.getBytes(), file.getOriginalFilename()); +// fileMap.put("fileUrl", fileWhitReturn); +// } catch (IOException e) { +// throw new RuntimeException(e); +// } +// return success(fileMap); +// } + @PostMapping("/create") + @Operation(summary = "创建模板实例") + @PreAuthorize("@ss.hasPermission('bse:template-instance:create')") + public CommonResult createTemplateInstance(@Valid @RequestBody TemplateInstanceSaveReqVO createReqVO) { + return success(templateInstanceService.createTemplateInstance(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新模板实例") + @PreAuthorize("@ss.hasPermission('bse:template-instance:update')") + public CommonResult updateTemplateInstance(@Valid @RequestBody TemplateInstanceSaveReqVO updateReqVO) { + templateInstanceService.updateTemplateInstance(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除模板实例") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('bse:template-instance:delete')") + public CommonResult deleteTemplateInstance(@RequestParam("id") Long id) { + templateInstanceService.deleteTemplateInstance(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除模板实例") + @PreAuthorize("@ss.hasPermission('bse:template-instance:delete')") + public CommonResult deleteTemplateInstanceList(@RequestBody BatchDeleteReqVO req) { + templateInstanceService.deleteTemplateInstanceListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得模板实例") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('bse:template-instance:query')") + public CommonResult getTemplateInstance(@RequestParam("id") Long id) { + TemplateInstanceDO templateInstance = templateInstanceService.getTemplateInstance(id); + return success(BeanUtils.toBean(templateInstance, TemplateInstanceRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得模板实例分页") + @PreAuthorize("@ss.hasPermission('bse:template-instance:query')") + public CommonResult> getTemplateInstancePage(@Valid TemplateInstancePageReqVO pageReqVO) { + PageResult pageResult = templateInstanceService.getTemplateInstancePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, TemplateInstanceRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出模板实例 Excel") + @PreAuthorize("@ss.hasPermission('bse:template-instance:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportTemplateInstanceExcel(@Valid TemplateInstancePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = templateInstanceService.getTemplateInstancePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "模板实例.xls", "数据", TemplateInstanceRespVO.class, + BeanUtils.toBean(list, TemplateInstanceRespVO.class)); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceDataController.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceDataController.java new file mode 100644 index 00000000..6faa977f --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceDataController.java @@ -0,0 +1,112 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceDataDO; +import cn.iocoder.yudao.module.base.service.tmpltp.TemplateInstanceDataService; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import cn.iocoder.yudao.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + + + +@Tag(name = "管理后台 - 实例字段值") +@RestController +@RequestMapping("/base/template-instance-data") +@Validated +public class TemplateInstanceDataController implements BusinessControllerMarker { + + + @Resource + private TemplateInstanceDataService templateInstanceDataService; + + @PostMapping("/create") + @Operation(summary = "创建实例字段值") + @PreAuthorize("@ss.hasPermission('base:template-instance-data:create')") + public CommonResult createTemplateInstanceData(@Valid @RequestBody TemplateInstanceDataSaveReqVO createReqVO) { + return success(templateInstanceDataService.createTemplateInstanceData(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新实例字段值") + @PreAuthorize("@ss.hasPermission('base:template-instance-data:update')") + public CommonResult updateTemplateInstanceData(@Valid @RequestBody TemplateInstanceDataSaveReqVO updateReqVO) { + templateInstanceDataService.updateTemplateInstanceData(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除实例字段值") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:template-instance-data:delete')") + public CommonResult deleteTemplateInstanceData(@RequestParam("id") Long id) { + templateInstanceDataService.deleteTemplateInstanceData(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除实例字段值") + @PreAuthorize("@ss.hasPermission('base:template-instance-data:delete')") + public CommonResult deleteTemplateInstanceDataList(@RequestBody BatchDeleteReqVO req) { + templateInstanceDataService.deleteTemplateInstanceDataListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得实例字段值") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:template-instance-data:query')") + public CommonResult getTemplateInstanceData(@RequestParam("id") Long id) { + TemplateInstanceDataDO templateInstanceData = templateInstanceDataService.getTemplateInstanceData(id); + return success(BeanUtils.toBean(templateInstanceData, TemplateInstanceDataRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得实例字段值分页") + @PreAuthorize("@ss.hasPermission('base:template-instance-data:query')") + public CommonResult> getTemplateInstanceDataPage(@Valid TemplateInstanceDataPageReqVO pageReqVO) { + PageResult pageResult = templateInstanceDataService.getTemplateInstanceDataPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, TemplateInstanceDataRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出实例字段值 Excel") + @PreAuthorize("@ss.hasPermission('base:template-instance-data:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportTemplateInstanceDataExcel(@Valid TemplateInstanceDataPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = templateInstanceDataService.getTemplateInstanceDataPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "实例字段值.xls", "数据", TemplateInstanceDataRespVO.class, + BeanUtils.toBean(list, TemplateInstanceDataRespVO.class)); + } + + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceItemController.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceItemController.java new file mode 100644 index 00000000..3d1437a7 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceItemController.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; +import cn.iocoder.yudao.module.base.service.tmpltp.TemplateInstanceItemService; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import cn.iocoder.yudao.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + + +@Tag(name = "管理后台 - 实例条款值") +@RestController +@RequestMapping("/base/template-instance-item") +@Validated +public class TemplateInstanceItemController implements BusinessControllerMarker { + + + @Resource + private TemplateInstanceItemService templateInstanceItemService; + + @PostMapping("/create") + @Operation(summary = "创建实例条款值") + @PreAuthorize("@ss.hasPermission('base:template-instance-item:create')") + public CommonResult createTemplateInstanceItem(@Valid @RequestBody TemplateInstanceItemSaveReqVO createReqVO) { + return success(templateInstanceItemService.createTemplateInstanceItem(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新实例条款值") + @PreAuthorize("@ss.hasPermission('base:template-instance-item:update')") + public CommonResult updateTemplateInstanceItem(@Valid @RequestBody TemplateInstanceItemSaveReqVO updateReqVO) { + templateInstanceItemService.updateTemplateInstanceItem(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除实例条款值") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:template-instance-item:delete')") + public CommonResult deleteTemplateInstanceItem(@RequestParam("id") String id) { + templateInstanceItemService.deleteTemplateInstanceItem(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除实例条款值") + @PreAuthorize("@ss.hasPermission('base:template-instance-item:delete')") + public CommonResult deleteTemplateInstanceItemList(@RequestBody BatchDeleteReqVO req) { + List ids = req.getIds().stream().map(String::valueOf).toList(); + templateInstanceItemService.deleteTemplateInstanceItemListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得实例条款值") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:template-instance-item:query')") + public CommonResult getTemplateInstanceItem(@RequestParam("id") String id) { + TemplateInstanceItemDO templateInstanceItem = templateInstanceItemService.getTemplateInstanceItem(id); + return success(BeanUtils.toBean(templateInstanceItem, TemplateInstanceItemRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得实例条款值分页") + @PreAuthorize("@ss.hasPermission('base:template-instance-item:query')") + public CommonResult> getTemplateInstanceItemPage(@Valid TemplateInstanceItemPageReqVO pageReqVO) { + PageResult pageResult = templateInstanceItemService.getTemplateInstanceItemPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, TemplateInstanceItemRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出实例条款值 Excel") + @PreAuthorize("@ss.hasPermission('base:template-instance-item:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportTemplateInstanceItemExcel(@Valid TemplateInstanceItemPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = templateInstanceItemService.getTemplateInstanceItemPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "实例条款值.xls", "数据", TemplateInstanceItemRespVO.class, + BeanUtils.toBean(list, TemplateInstanceItemRespVO.class)); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplItmController.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplItmController.java new file mode 100644 index 00000000..32b65f7e --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplItmController.java @@ -0,0 +1,91 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.business.annotation.FileUploadController; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmpItmPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplItmRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplItmSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplItmDO; +import cn.iocoder.yudao.module.base.service.tmpltp.TmplItmService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +@Tag(name = "管理后台 - 模板条款") +@RestController +@RequestMapping("/base/tmpl-ltm") +@Validated +@FileUploadController(source = "bse.tmplltm") +@RequiredArgsConstructor +public class TmplItmController { + private final TmplItmService tmplItmService; + + @PostMapping("/create") + @Operation(summary = "创建模板条款") + public CommonResult createTmplItm(@Valid @RequestBody TmplItmSaveReqVO createReqVO) { + TmplItmRespVO tmplItm = tmplItmService.createTmplItm(createReqVO); + return success(tmplItm); + } + + @PutMapping("/update") + @Operation(summary = "更新模板条款") + public CommonResult updateTmplItm(@Valid @RequestBody TmplItmSaveReqVO updateReqVO) { + tmplItmService.updateTmplItm(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除模板条款", description = "") + public CommonResult deleteTmplItm(@RequestBody BatchDeleteReqVO req) { + return success(tmplItmService.deleteTmplItm(req.getIds())); + } + + @GetMapping("/id") + @Operation(summary = "根据id获得模板条款") + public CommonResult getTmplItm(@RequestBody String id) { + return success(BeanUtils.toBean(tmplItmService.getById(id), TmplItmRespVO.class)); + } + + @GetMapping("/list") + public CommonResult> listTmplItm(Map params) { + // 创建查询条件构造器 + QueryWrapper queryWrapper = new QueryWrapper<>(); + + // 遍历Map参数,动态添加查询条件 + if (params != null && !params.isEmpty()) { + for (Map.Entry entry : params.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + + // 过滤掉空值和空字符串 + if (value != null && + !(value instanceof String && StringUtils.isBlank((String) value))) { + queryWrapper.eq(key, value); + } + } + } + // 执行带条件的查询 + List list = tmplItmService.list(queryWrapper); + return success(BeanUtils.toBean(list, TmplItmRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "分页获得模板条款") + public CommonResult> pageTmplItm(@Validated TmpItmPageReqVO pageReqVO) { + PageResult pageResult = tmplItmService.pageTmplItm(pageReqVO); + return success(BeanUtils.toBean(pageResult, TmplItmRespVO.class)); + } +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplTpController.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplTpController.java new file mode 100644 index 00000000..ebf36c42 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplTpController.java @@ -0,0 +1,171 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp; + + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.*; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplTpDO; +import cn.iocoder.yudao.module.base.service.tmpltp.TmplTpService; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import cn.iocoder.yudao.framework.business.interceptor.BusinessControllerMarker; +import cn.iocoder.yudao.framework.business.annotation.FileUploadController; +import cn.iocoder.yudao.framework.business.controller.AbstractFileUploadController; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.PARAMS_IS_NULL_OR_ERR; + + +@Tag(name = "管理后台 - 模板分类") +@RestController +@RequestMapping("/base/tmpl-tp") +@Validated +@FileUploadController(source = "bse.tmpltp") +public class TmplTpController extends AbstractFileUploadController implements BusinessControllerMarker{ + + @Resource + private TmplTpService tmplTpService; + + @PostMapping("/create") + @Operation(summary = "创建模板分类") + @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:create')") + public CommonResult createTmplTp(@Valid @RequestBody TmplTpSaveReqVO createReqVO) { + return success(tmplTpService.createTmplTp(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新模板分类") + @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:update')") + public CommonResult updateTmplTp(@Valid @RequestBody TmplTpSaveReqVO updateReqVO) { + tmplTpService.updateTmplTp(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除模板分类") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:delete')") + public CommonResult deleteTmplTp(@RequestBody BatchDeleteReqVO req) { + tmplTpService.deleteTmplTp(req.getIds()); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除模板分类") + @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:delete')") + public CommonResult deleteTmplTpList(@RequestBody BatchDeleteReqVO req) { + tmplTpService.deleteTmplTpListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得模板分类") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:query')") + public CommonResult getTmplTp(@RequestParam("id") Long id) { + TmplTpDO tmplTp = tmplTpService.getTmplTp(id); + return success(BeanUtils.toBean(tmplTp, TmplTpRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得模板分类分页") + @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:query')") + public CommonResult> getTmplTpPage(@Valid TmplTpPageReqVO pageReqVO) { + PageResult pageResult = tmplTpService.getTmplTpPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, TmplTpRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出模板分类 Excel") + @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportTmplTpExcel(@Valid TmplTpPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = tmplTpService.getTmplTpPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "模板分类.xls", "数据", TmplTpRespVO.class, + BeanUtils.toBean(list, TmplTpRespVO.class)); + } + //字段和条款回显 + @GetMapping("/field-and-clause") + @Operation(summary = "获得字段和条款",description = "字段和条款回显,传入模版分类的id") + @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:query')") + public CommonResult> getFieldAndClause(@RequestParam("id") Long id) { + Map map = new HashMap<>(); + map.put("field", tmplTpService.getField(id)); + map.put("clause", tmplTpService.getClause(id)); + return success(map); + } + //获取分类树 + @GetMapping("/tree") + @Operation(summary = "获得分类树--上级") + public CommonResult> getTree() { + List tree = tmplTpService.buildTree(); + return success(tree); + } + + //更新类型状态 + @PutMapping("/updateStatus") + @Operation(summary = "更新模板类型状态") + @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:update')") + public CommonResult updateStatus(@RequestBody Map params) { + if (params == null){ + throw exception(PARAMS_IS_NULL_OR_ERR); + } + if (!params.containsKey("id") || !params.containsKey("sts")){ + throw exception(PARAMS_IS_NULL_OR_ERR); + } + tmplTpService.updateStatus(Long.valueOf(params.get("id").toString()), params.get("sts").toString()); + return success(true); + } + + //表单预览 +// @GetMapping("/preview") +// @Operation(summary = "表单预览",description = "传入模版分类的id") +// @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:query')") +// public CommonResult< List> preview(@Valid @RequestParam("id") Long id) { +// List field = tmplTpService.getField(id); +// return success(field); +// } + + // 字段编辑新增或者删除 + @PostMapping("/field-edit") + @Operation(summary = "字段编辑新增或者删除") + @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:update')") + public CommonResult fieldEdit(@Valid @RequestBody TmplTpEditOrDeleteReqVO reqVO) { + tmplTpService.fieldEdit(reqVO); + return success(true); + } + + @PostMapping("/ltm-edit") + @Operation(summary = "条款编辑新增或者删除") + @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:update')") + public CommonResult ltmEdit(@Valid @RequestBody TmplTpEditOrDeleteReqVO reqVO) { + tmplTpService.ltmEdit(reqVO); + return success(true); + } +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplTpFldController.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplTpFldController.java new file mode 100644 index 00000000..f115bdd2 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplTpFldController.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp; + +import cn.iocoder.yudao.framework.business.annotation.FileUploadController; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplFldPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplFldRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplTpFldSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplTpFldDO; +import cn.iocoder.yudao.module.base.service.tmpltp.TmplTpFldService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 模板字段") +@RestController +@RequestMapping("/base/tmpl-fld") +@Validated +@FileUploadController(source = "bse.tmplfld") +@RequiredArgsConstructor +public class TmplTpFldController { + private final TmplTpFldService tmplTpFldService; + @PostMapping("/create") + @Operation(summary = "创建模板字段") +// @PreAuthorize("@ss.hasPermission('bse:tmpl-tp-fld:create')") + public CommonResult createTmplFld(@Valid @RequestBody TmplTpFldSaveReqVO tmplTpFldSaveReqVO) { + return success(tmplTpFldService.createTmplFld(tmplTpFldSaveReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新模板字段") + @PreAuthorize("@ss.hasPermission('bse:tmpl-tp-fld:update')") + public CommonResult updateTmplTp(@Valid @RequestBody TmplTpFldSaveReqVO updateReqVO) { + tmplTpFldService.updateTmplFld(updateReqVO); + return success(true); + } + @DeleteMapping("/delete") + @Operation(summary = "删除模板字段") + @PreAuthorize("@ss.hasPermission('bse:tmpl-tp-fld:delete')") + public CommonResult deleteTmplTp(@RequestBody BatchDeleteReqVO req) { + tmplTpFldService.deleteTmplTpByIds(req.getIds()); + return success(true); + } + @GetMapping("/page") + @Operation(summary = "获得模板字段列表") + @PreAuthorize("@ss.hasPermission('bse:tmpl-tp-fld:list')") + public CommonResult> getTmplTpList( @Valid TmplFldPageReqVO pageReqVO) { + PageResult pageResult = tmplTpFldService.tmplTpFldPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, TmplFldRespVO.class)); + } +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/DepartmentInstanceRelativityPageReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/DepartmentInstanceRelativityPageReqVO.java new file mode 100644 index 00000000..f88b7205 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/DepartmentInstanceRelativityPageReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 部门与实例关联分页 Request VO") +@Data +public class DepartmentInstanceRelativityPageReqVO extends PageParam { + + @Schema(description = "部门主键", example = "2450") + private String companyDepartmentId; + + @Schema(description = "模板实例主键", example = "17846") + private String templateInstanceId; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/DepartmentInstanceRelativityRespVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/DepartmentInstanceRelativityRespVO.java new file mode 100644 index 00000000..244c82d9 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/DepartmentInstanceRelativityRespVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 部门与实例关联 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DepartmentInstanceRelativityRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4864") + @ExcelProperty("主键") + private String id; + + @Schema(description = "部门主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2450") + @ExcelProperty("部门主键") + private String companyDepartmentId; + + @Schema(description = "模板实例主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "17846") + @ExcelProperty("模板实例主键") + private String templateInstanceId; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDate createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/DepartmentInstanceRelativitySaveReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/DepartmentInstanceRelativitySaveReqVO.java new file mode 100644 index 00000000..298f747b --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/DepartmentInstanceRelativitySaveReqVO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 部门与实例关联新增/修改 Request VO") +@Data +public class DepartmentInstanceRelativitySaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4864") + private String id; + + @Schema(description = "部门主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2450") + @NotEmpty(message = "部门主键不能为空") + private String companyDepartmentId; + + @Schema(description = "模板实例主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "17846") + @NotEmpty(message = "模板实例主键不能为空") + private String templateInstanceId; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataPageReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataPageReqVO.java new file mode 100644 index 00000000..585e2e73 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataPageReqVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 实例字段值分页 Request VO") +@Data +public class TemplateInstanceDataPageReqVO extends PageParam { + + @Schema(description = "关联实例主键", example = "25824") + private String inscId; + + @Schema(description = "字段标识;关联字段库") + private String fldKy; + + @Schema(description = "用户填写的值") + private String fldVal; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataRespVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataRespVO.java new file mode 100644 index 00000000..345d6af3 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataRespVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 实例字段值 Response VO") +@Data +@ExcelIgnoreUnannotated +public class TemplateInstanceDataRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "10920") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "关联实例主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25824") + @ExcelProperty("关联实例主键") + private String inscId; + + @Schema(description = "字段标识;关联字段库", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("字段标识;关联字段库") + private String fldKy; + + @Schema(description = "用户填写的值", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("用户填写的值") + private String fldVal; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java new file mode 100644 index 00000000..7f8d67ab --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 实例字段值新增/修改 Request VO") +@Data +public class TemplateInstanceDataSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "10920") + private Long id; + + @Schema(description = "关联实例主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25824") + @NotEmpty(message = "关联实例主键不能为空") + private String inscId; + + @Schema(description = "字段标识;关联字段库", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "字段标识;关联字段库不能为空") + private String fldKy; + + @Schema(description = "用户填写的值", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "用户填写的值不能为空") + private String fldVal; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemPageReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemPageReqVO.java new file mode 100644 index 00000000..dcc825ea --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemPageReqVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 实例条款值分页 Request VO") +@Data +public class TemplateInstanceItemPageReqVO extends PageParam { + + @Schema(description = "关联实例主键", example = "28964") + private String inscId; + + @Schema(description = "条款库主键;关联字段库", example = "11278") + private String itmId; + + @Schema(description = "用户填写的值") + private String val; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemRespVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemRespVO.java new file mode 100644 index 00000000..cedae9ab --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemRespVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 实例条款值 Response VO") +@Data +@ExcelIgnoreUnannotated +public class TemplateInstanceItemRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25152") + @ExcelProperty("主键") + private String id; + + @Schema(description = "关联实例主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28964") + @ExcelProperty("关联实例主键") + private String inscId; + + @Schema(description = "条款库主键;关联字段库", requiredMode = Schema.RequiredMode.REQUIRED, example = "11278") + @ExcelProperty("条款库主键;关联字段库") + private String itmId; + + @Schema(description = "用户填写的值", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("用户填写的值") + private String val; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDate createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemSaveReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemSaveReqVO.java new file mode 100644 index 00000000..f63db78e --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemSaveReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 实例条款值新增/修改 Request VO") +@Data +public class TemplateInstanceItemSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25152") + private String id; + + @Schema(description = "关联实例主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28964") + @NotEmpty(message = "关联实例主键不能为空") + private String inscId; + + @Schema(description = "条款库主键;关联字段库", requiredMode = Schema.RequiredMode.REQUIRED, example = "11278") + @NotEmpty(message = "条款库主键;关联字段库不能为空") + private String itmId; + + @Schema(description = "用户填写的值", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "用户填写的值不能为空") + private String val; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstancePageReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstancePageReqVO.java new file mode 100644 index 00000000..af77ab33 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstancePageReqVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 模板实例分页 Request VO") +@Data +public class TemplateInstancePageReqVO extends PageParam { + + @Schema(description = "分类树主键", example = "7804") + private Long tpId; + + @Schema(description = "模板名称", example = "王五") + private String name; + + @Schema(description = "模板编码") + private String cdg; + + @Schema(description = "模板描述") + private String dsp; + + @Schema(description = "实例文件内容") + private String cntt; + + @Schema(description = "原始文件内容") + private String origCntt; + + @Schema(description = "文件类型", example = "1") + private String fileTp; + + @Schema(description = "版本号;如v1.0") + private String ver; + + @Schema(description = "状态", example = "2") + private String sts; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceRespVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceRespVO.java new file mode 100644 index 00000000..ed2017e1 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceRespVO.java @@ -0,0 +1,59 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 模板实例 Response VO") +@Data +@ExcelIgnoreUnannotated +public class TemplateInstanceRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "29024") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "分类树主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "7804") + @ExcelProperty("分类树主键") + private Long tpId; + + @Schema(description = "模板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("模板名称") + private String name; + + @Schema(description = "模板编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("模板编码") + private String cdg; + + @Schema(description = "模板描述") + @ExcelProperty("模板描述") + private String dsp; + + @Schema(description = "实例文件内容") + @ExcelProperty("实例文件内容") + private String cntt; + + @Schema(description = "原始文件内容", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("原始文件内容") + private String origCntt; + + @Schema(description = "文件类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("文件类型") + private String fileTp; + + @Schema(description = "版本号;如v1.0", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("版本号;如v1.0") + private String ver; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态") + private String sts; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceSaveReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceSaveReqVO.java new file mode 100644 index 00000000..9eb3d980 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceSaveReqVO.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 模板实例新增/修改 Request VO") +@Data +public class TemplateInstanceSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "29024") + private Long id; + + @Schema(description = "分类树主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "7804") + @NotNull(message = "分类树主键不能为空") + private Long tpId; + + @Schema(description = "模板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "模板名称不能为空") + private String name; + + @Schema(description = "模板编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "模板编码不能为空") + private String cdg; + + @Schema(description = "模板描述") + private String dsp; + + @Schema(description = "实例文件内容") + private String cntt; + + @Schema(description = "原始文件内容", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotEmpty(message = "原始文件内容不能为空") + private String origCntt; + + @Schema(description = "文件类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "文件类型不能为空") + private String fileTp; + + @Schema(description = "版本号;如v1.0", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "版本号;如v1.0不能为空") + private String ver; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "状态不能为空") + private String sts; + + + @Schema(description = "使用部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "使用部门编号不能为空") + private List deptIds; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmpItmPageReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmpItmPageReqVO.java new file mode 100644 index 00000000..e9702c50 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmpItmPageReqVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + + +@Schema(description = "管理后台 - 模板条款分页 Request VO") +@Data +public class TmpItmPageReqVO extends PageParam { + + @Schema(description = "主键", example = "") + private String id; + + @Schema(description = "条款编号") + private String itmNum; + + @Schema(description = "条款名称", example = "") + private String itmName; + + @Schema(description = "备注") + private String rmk; + + @Schema(description = "条款值") + private String itmVal; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] createTime; +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplFldPageReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplFldPageReqVO.java new file mode 100644 index 00000000..59bdf12d --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplFldPageReqVO.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + + +@Schema(description = "管理后台 - 模板字段分页 Request VO") +@Data +public class TmplFldPageReqVO extends PageParam { + + @Schema(description = "字段编码", example = "") + private String fldKy; + + @Schema(description = "字段名称") + private String fldName; + + @Schema(description = "数据类型", example = "") + private String datTp; + + @Schema(description = "字段结构") + private String fldDoc; + + @Schema(description = "备注") + private String rmk; + @Schema(description = "是否必填") + private String isMust; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplFldRespVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplFldRespVO.java new file mode 100644 index 00000000..b9565a70 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplFldRespVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; + +@Schema(description = "管理后台 - 模板分类 Response VO") +@Data +@ExcelIgnoreUnannotated +public class TmplFldRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "类型字段编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + @ExcelProperty("类型字段编码") + private String fldKy; + + @Schema(description = "字段名称", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("字段名称") + private String fldName; + + @Schema(description = "数据类型", example = "") + @ExcelProperty("数据类型") + private String datTp; + + @Schema(description = "字段结构", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("字段结构") + private String fldDoc; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("备注") + private String rmk; + + @Schema(description = "是否必填, 建议值:Y(是)、N(否),需在业务层做枚举校验", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否必填") + private String isMust; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplItmRespVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplItmRespVO.java new file mode 100644 index 00000000..0ddbec16 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplItmRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; + +@Schema(description = "管理后台 - 模板分类 Response VO") +@Data +@ExcelIgnoreUnannotated +public class TmplItmRespVO { + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + @ExcelProperty("主键") + private String id; + + + @Schema(description = "条款编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + @ExcelProperty("条款编码") + private String itmNum; + + + @Schema(description = "条款名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + @ExcelProperty("条款名称") + private String itmName; + + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + @ExcelProperty("备注") + private String rmk; + + + @Schema(description = "条款结构", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + @ExcelProperty("条款结构") + private String itmVal; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDate createTime; + + + @Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建人") + private String creator; +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplItmSaveReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplItmSaveReqVO.java new file mode 100644 index 00000000..7252dd78 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplItmSaveReqVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 模板条款新增/修改 Request VO") +@Data +public class TmplItmSaveReqVO { + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + private Long id; + + @Schema(description = "条款编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + private String itmNum; + + @Schema(description = "条款名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + private String itmName; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + private String rmk; + + @Schema(description = "条款值", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + private String itmVal; +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpEditOrDeleteReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpEditOrDeleteReqVO.java new file mode 100644 index 00000000..4e841849 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpEditOrDeleteReqVO.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import groovyjarjarantlr4.v4.runtime.misc.NotNull; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; +import lombok.NonNull; + + +import java.util.List; + +@Schema(description = "管理后台 - 模板编辑字段新增/删除 Request VO") +@Data +public class TmplTpEditOrDeleteReqVO { + + @Schema(description = "模版ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20895") + @NotEmpty(message = "模版id不能为空") + private String tpId; + + @Schema(description = "操作类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "create or delete") + @NotEmpty(message = "操作类型不能为空") + private String type; + + @Schema(description = "变更的ids", requiredMode = Schema.RequiredMode.REQUIRED, example = "[20895,23231]") + @NotEmpty(message = "变更的ids不能为空") + private List ids; +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpFldSaveReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpFldSaveReqVO.java new file mode 100644 index 00000000..05f7d065 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpFldSaveReqVO.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import com.alibaba.fastjson2.JSONObject; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 模板字段新增/修改 Request VO") +@Data +public class TmplTpFldSaveReqVO { + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "20895") + private Long id; + @Schema(description = "字段编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "code") + private String fldKy; + @Schema(description = "字段名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "代码") + private String fldName; + @Schema(description = "字段数据类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "string") + private String datTp; + @Schema(description = "字段描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "代码") + private JSONObject fldDoc; + @Schema(description = "字段备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "代码") + private String rmk; + @Schema(description = "是否必填", requiredMode = Schema.RequiredMode.REQUIRED, example = "Y or N") + private String isMust; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpPageReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpPageReqVO.java new file mode 100644 index 00000000..3284e561 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + + +@Schema(description = "管理后台 - 模板分类分页 Request VO") +@Data +public class TmplTpPageReqVO extends PageParam { + + @Schema(description = "类型名称", example = "王五") + private String name; + + @Schema(description = "类型编码") + private String num; + + @Schema(description = "父类型主键;顶级为NULL", example = "20414") + private Long prnId; + + @Schema(description = "同级排序序号") + private Long srt; + + @Schema(description = "状态") + private String sts; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpRespVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpRespVO.java new file mode 100644 index 00000000..f6a23f66 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpRespVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 模板分类 Response VO") +@Data +@ExcelIgnoreUnannotated +public class TmplTpRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "20895") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("类型名称") + private String name; + + @Schema(description = "类型编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("类型编码") + private String num; + + @Schema(description = "父类型主键;顶级为NULL", example = "20414") + @ExcelProperty("父类型主键;顶级为NULL") + private Long prnId; + + @Schema(description = "同级排序序号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("同级排序序号") + private Long srt; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("状态") + private String sts; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDate createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpSaveReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpSaveReqVO.java new file mode 100644 index 00000000..27b27599 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpSaveReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 模板分类新增/修改 Request VO") +@Data +public class TmplTpSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "20895") + private Long id; + + @Schema(description = "类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "类型名称不能为空") + private String name; + + @Schema(description = "类型编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "类型编码不能为空") + private String num; + + @Schema(description = "父类型主键;顶级为NULL", example = "20414") + private Long prnId; + + @Schema(description = "同级排序序号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "同级排序序号不能为空") + private Long srt; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED) + private String sts; + + private List tmplItmIds ; + + private List tmplTpFldIds; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpTreeVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpTreeVO.java new file mode 100644 index 00000000..9d0a3fae --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpTreeVO.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; +import java.util.List; +@Data +public class TmplTpTreeVO{ + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "20895") + private Long id; + + @Schema(description = "类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + private String name; + + @Schema(description = "类型编码", requiredMode = Schema.RequiredMode.REQUIRED) + private String num; + + @Schema(description = "父类型主键;顶级为NULL", example = "20414") + private Long prnId; + + @Schema(description = "同级排序序号", requiredMode = Schema.RequiredMode.REQUIRED) + private Long srt; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED) + private String sts; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDate createTime; + + private List children; +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/DepartmentInstanceRelativityDO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/DepartmentInstanceRelativityDO.java new file mode 100644 index 00000000..3aee2c54 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/DepartmentInstanceRelativityDO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.base.dal.dataobject.tmpltp; + +import lombok.*; +import java.util.*; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO; +/** +* 部门与实例关联 DO +* +* @author 后台管理 +*/ +@TableName("bse_dept_insc_rel") +@KeySequence("bse_dept_insc_rel_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class DepartmentInstanceRelativityDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.INPUT) + private String id; + /** + * 部门主键 + */ + @TableField("CPN_DEPT_ID") + private String companyDepartmentId; + /** + * 模板实例主键 + */ + @TableField("TMPL_INSC_ID") + private String templateInstanceId; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceDO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceDO.java new file mode 100644 index 00000000..e6ce1b54 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceDO.java @@ -0,0 +1,92 @@ +package cn.iocoder.yudao.module.base.dal.dataobject.tmpltp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO; +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +/** +* 模板实例 DO +* +* @author 后台管理 +*/ +@TableName("bse_tmpl_insc") +@KeySequence("bse_tmpl_insc_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class TemplateInstanceDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 分类树主键 + */ + private Long tpId; + /** + * 模板名称 + */ + private String name; + /** + * 模板编码 + */ + private String cdg; + /** + * 模板描述 + */ + private String dsp; + /** + * 实例文件内容 + */ + private String cntt; + /** + * 原始文件内容 + */ + private String origCntt; + /** + * 文件类型 + */ + private String fileTp; + /** + * 版本号;如v1.0 + */ + private String ver; + /** + * 状态 + */ + private String sts; +// /** +// * 公司编号 +// */ +// private Long companyId; +// /** +// * 公司名称 +// */ +// private String companyName; +// /** +// * 部门编号 +// */ +// private Long deptId; +// /** +// * 部门名称 +// */ +// private String deptName; +// /** +// * 岗位编号 +// */ +// private Long postId; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceDataDO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceDataDO.java new file mode 100644 index 00000000..0f69b155 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceDataDO.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.base.dal.dataobject.tmpltp; + +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO; +/** +* 实例字段值 DO +* +* @author 后台管理 +*/ +@TableName("bse_tmpl_insc_dat") +@KeySequence("bse_tmpl_insc_dat_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class TemplateInstanceDataDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 关联实例主键 + */ + @TableField("INSC_ID") + private String inscId; + /** + * 字段标识;关联字段库 + */ + @TableField("FLD_KY") + private String fldKy; + /** + * 用户填写的值 + */ + @TableField("FLD_VAL") + private String fldVal; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceItemDO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceItemDO.java new file mode 100644 index 00000000..59ef3199 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceItemDO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.base.dal.dataobject.tmpltp; + +import lombok.*; +import java.util.*; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO; +/** +* 实例条款值 DO +* +* @author 后台管理 +*/ +@TableName("bse_tmpl_insc_itm") +@KeySequence("bse_tmpl_insc_itm_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class TemplateInstanceItemDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.INPUT) + private String id; + /** + * 关联实例主键 + */ + @TableField("INSC_ID") + private String inscId; + /** + * 条款库主键;关联字段库 + */ + @TableField("ITM_ID") + private String itmId; + /** + * 用户填写的值 + */ + @TableField("VAL") + private String val; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplFldRelDO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplFldRelDO.java new file mode 100644 index 00000000..2317d81a --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplFldRelDO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.base.dal.dataobject.tmpltp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@TableName("BSE_TMPL_FLD_REL") +@KeySequence("BSE_TMPL_FLD_REL_SEQ") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TmplFldRelDO extends BusinessBaseDO { + + @TableId(type = IdType.ASSIGN_ID) + private String id; + + @TableField("TMPL_TP_ID") + private String tmplTpId; + + @TableField("TP_FLD_ID") + private String tpFldId; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplItmDO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplItmDO.java new file mode 100644 index 00000000..64824b90 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplItmDO.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.base.dal.dataobject.tmpltp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@TableName("BSE_TMPL_ITM") +@KeySequence("BSE_TMPL_ITM_SEQ") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TmplItmDO extends BusinessBaseDO { + + @TableId(type = IdType.ASSIGN_ID) + private String id; + + @TableField("ITM_NUM") + private String itmNum; + + @TableField("ITM_NAME") + private String itmName; + + @TableField("RMK") + private String rmk; + + @TableField("ITM_VAL") + private String itmVal; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplItmRelDO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplItmRelDO.java new file mode 100644 index 00000000..f11a1fda --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplItmRelDO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.base.dal.dataobject.tmpltp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@TableName("BSE_TMPL_ITM_REL") +@KeySequence("BSE_TMPL_ITM_REL_SEQ") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TmplItmRelDO extends BusinessBaseDO { + + @TableId(type = IdType.ASSIGN_ID) + private String id; + + @TableField("TMPL_TP_ID") + private String tmplTpId; + + @TableField("ITM_FLD_ID") + private String itmFldId; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplTpDO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplTpDO.java new file mode 100644 index 00000000..45dc95a9 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplTpDO.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.module.base.dal.dataobject.tmpltp; + +import lombok.*; +import java.util.*; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO; +/** +* 模板分类 DO +* +* @author 后台管理 +*/ +@TableName("bse_tmpl_tp") +@KeySequence("bse_tmpl_tp_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class TmplTpDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 类型名称 + */ + @TableField("NAME") + private String name; + /** + * 类型编码 + */ + @TableField("NUM") + private String num; + /** + * 父类型主键;顶级为NULL + */ + @TableField("PRN_ID") + private Long prnId; + /** + * 同级排序序号 + */ + @TableField("SRT") + private Long srt; + /** + * 状态 + */ + @TableField("STS") + private String sts; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplTpFldDO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplTpFldDO.java new file mode 100644 index 00000000..26a64a81 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TmplTpFldDO.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.base.dal.dataobject.tmpltp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.time.LocalDateTime; + +/** + * 字段库 DO + * 对应数据库表:BIZ_TMPL_TP_FLD + * + * @author 后台管理 + */ +@TableName("BIZ_TMPL_TP_FLD") +@KeySequence("BIZ_TMPL_TP_FLD_SEQ") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TmplTpFldDO extends BusinessBaseDO { // 继承业务基类,自动获取公司/部门/租户等公共字段 + + /** + * 主键(对应表中 ID 字段,VARCHAR2(64) 类型) + * 注意:表中 ID 为字符串类型,此处使用 String 而非 Long,与 TmplTpDO 区分 + */ + @TableId(type = IdType.ASSIGN_ID) // 手动输入主键(因表中 ID 是 VARCHAR2,非自增 Long) + private String id; + + /** + * 字段编码(对应表中 FLD_KY 字段,VARCHAR2(64) 类型,非空) + */ + @TableField("FLD_KY") + private String fldKy; + + /** + * 字段名称(对应表中 FLD_NAME 字段,VARCHAR2(90) 类型,非空) + */ + @TableField("FLD_NAME") + private String fldName; + + /** + * 数据类型(对应表中 DAT_TP 字段,VARCHAR2(10) 类型,非空) + * 示例值:VARCHAR、INT、DATE、CLOB 等,需与前端/后端数据类型映射 + */ + @TableField("DAT_TP") + private String datTp; + + /** + * 字段结构(对应表中 FLD_DOC 字段,CLOB(900) 类型,可空) + * 存储格式:JSON 字符串(前端传入的字段结构配置),后端可通过 JSON 工具反序列化为对象 + */ + @TableField("FLD_DOC") + private String fldDoc; + + /** + * 备注(对应表中 RMK 字段,CLOB(900) 类型,非空) + * 说明:用于区分同一公司下重复的条款名称 + */ + @TableField("RMK") + private String rmk; // 同 FLD_DOC,用 String 接收 CLOB 内容 + + /** + * 是否必填(对应表中 IS_MUST 字段,VARCHAR2(10) 类型,非空) + * 建议值:Y(是)、N(否),需在业务层做枚举校验 + */ + @TableField("IS_MUST") + private String isMust; +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/DepartmentInstanceRelativityMapper.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/DepartmentInstanceRelativityMapper.java new file mode 100644 index 00000000..ed5b17f0 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/DepartmentInstanceRelativityMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.base.dal.mysql.tmpltp; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.DepartmentInstanceRelativityPageReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.DepartmentInstanceRelativityDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 部门与实例关联 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface DepartmentInstanceRelativityMapper extends BaseMapperX { + + default PageResult selectPage(DepartmentInstanceRelativityPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DepartmentInstanceRelativityDO::getCompanyDepartmentId, reqVO.getCompanyDepartmentId()) + .eqIfPresent(DepartmentInstanceRelativityDO::getTemplateInstanceId, reqVO.getTemplateInstanceId()) + .betweenIfPresent(DepartmentInstanceRelativityDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(DepartmentInstanceRelativityDO::getId)); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java new file mode 100644 index 00000000..cd78e28f --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.base.dal.mysql.tmpltp; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataPageReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceDataDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 实例字段值 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface TemplateInstanceDataMapper extends BaseMapperX { + + default PageResult selectPage(TemplateInstanceDataPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(TemplateInstanceDataDO::getInscId, reqVO.getInscId()) + .eqIfPresent(TemplateInstanceDataDO::getFldKy, reqVO.getFldKy()) + .eqIfPresent(TemplateInstanceDataDO::getFldVal, reqVO.getFldVal()) + .betweenIfPresent(TemplateInstanceDataDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TemplateInstanceDataDO::getId)); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java new file mode 100644 index 00000000..18a39f34 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.base.dal.mysql.tmpltp; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemPageReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 实例条款值 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface TemplateInstanceItemMapper extends BaseMapperX { + + default PageResult selectPage(TemplateInstanceItemPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(TemplateInstanceItemDO::getInscId, reqVO.getInscId()) + .eqIfPresent(TemplateInstanceItemDO::getItmId, reqVO.getItmId()) + .eqIfPresent(TemplateInstanceItemDO::getVal, reqVO.getVal()) + .betweenIfPresent(TemplateInstanceItemDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TemplateInstanceItemDO::getId)); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceMapper.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceMapper.java new file mode 100644 index 00000000..35b30d92 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceMapper.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.base.dal.mysql.tmpltp; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstancePageReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 模板实例 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface TemplateInstanceMapper extends BaseMapperX { + + default PageResult selectPage(TemplateInstancePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(TemplateInstanceDO::getTpId, reqVO.getTpId()) + .likeIfPresent(TemplateInstanceDO::getName, reqVO.getName()) + .eqIfPresent(TemplateInstanceDO::getCdg, reqVO.getCdg()) + .eqIfPresent(TemplateInstanceDO::getDsp, reqVO.getDsp()) + .eqIfPresent(TemplateInstanceDO::getCntt, reqVO.getCntt()) + .eqIfPresent(TemplateInstanceDO::getOrigCntt, reqVO.getOrigCntt()) + .eqIfPresent(TemplateInstanceDO::getFileTp, reqVO.getFileTp()) + .eqIfPresent(TemplateInstanceDO::getVer, reqVO.getVer()) + .eqIfPresent(TemplateInstanceDO::getSts, reqVO.getSts()) + .betweenIfPresent(TemplateInstanceDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TemplateInstanceDO::getId)); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplFldRelMapper.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplFldRelMapper.java new file mode 100644 index 00000000..24153cb4 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplFldRelMapper.java @@ -0,0 +1,10 @@ +package cn.iocoder.yudao.module.base.dal.mysql.tmpltp; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; + +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplFldRelDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface TmplFldRelMapper extends BaseMapperX { +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplItmMapper.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplItmMapper.java new file mode 100644 index 00000000..6d6ed2fa --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplItmMapper.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.base.dal.mysql.tmpltp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmpItmPageReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplItmDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface TmplItmMapper extends BaseMapperX { + default PageResult selectPage(TmpItmPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(TmplItmDO::getItmVal, reqVO.getItmVal()) + .likeIfPresent(TmplItmDO::getItmName, reqVO.getItmName()) + .eqIfPresent(TmplItmDO::getItmNum, reqVO.getItmNum()) + .eqIfPresent(TmplItmDO::getRmk, reqVO.getRmk()) + .betweenIfPresent(TmplItmDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TmplItmDO::getId)); + } +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplItmRelMapper.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplItmRelMapper.java new file mode 100644 index 00000000..0ebb4894 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplItmRelMapper.java @@ -0,0 +1,10 @@ +package cn.iocoder.yudao.module.base.dal.mysql.tmpltp; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; + +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplItmRelDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface TmplItmRelMapper extends BaseMapperX { +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplTpFldMapper.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplTpFldMapper.java new file mode 100644 index 00000000..87112e7b --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplTpFldMapper.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.base.dal.mysql.tmpltp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplFldPageReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplTpFldDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface TmplTpFldMapper extends BaseMapperX { + + default PageResult selectPage(TmplFldPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(TmplTpFldDO::getFldName, reqVO.getFldName()) + .eqIfPresent(TmplTpFldDO::getFldKy, reqVO.getFldKy()) + .eqIfPresent(TmplTpFldDO::getFldDoc, reqVO.getFldDoc()) + .eqIfPresent(TmplTpFldDO::getIsMust, reqVO.getIsMust()) + .eqIfPresent(TmplTpFldDO::getDatTp, reqVO.getDatTp()) + .betweenIfPresent(TmplTpFldDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TmplTpFldDO::getId)); + } +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplTpMapper.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplTpMapper.java new file mode 100644 index 00000000..47fdb392 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplTpMapper.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.base.dal.mysql.tmpltp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; + + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplFldRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplItmRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplTpPageReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplTpDO; +import org.apache.ibatis.annotations.MapKey; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; + + +/** + * 模板分类 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface TmplTpMapper extends BaseMapperX { + + default PageResult selectPage(TmplTpPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(TmplTpDO::getName, reqVO.getName()) + .eqIfPresent(TmplTpDO::getNum, reqVO.getNum()) + .eqIfPresent(TmplTpDO::getPrnId, reqVO.getPrnId()) + .eqIfPresent(TmplTpDO::getSrt, reqVO.getSrt()) + .eqIfPresent(TmplTpDO::getSts, reqVO.getSts()) + .betweenIfPresent(TmplTpDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TmplTpDO::getId)); + } + + @MapKey("id") + List getField(@Param("id") Long id); + + @MapKey("id") + List getClause(@Param("id") Long id); + + TmplTpDO getTmplTpById(@Param("id") Long id); +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/framework/rpc/config/RpcConfiguration.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/framework/rpc/config/RpcConfiguration.java index 0688caca..81b9a44c 100644 --- a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/framework/rpc/config/RpcConfiguration.java +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/framework/rpc/config/RpcConfiguration.java @@ -1,10 +1,11 @@ package cn.iocoder.yudao.module.base.framework.rpc.config; +import cn.iocoder.yudao.module.infra.api.file.FileApi; import cn.iocoder.yudao.module.system.api.dept.DeptApi; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Configuration; @Configuration(value = "baseRpcConfiguration", proxyBeanMethods = false) -@EnableFeignClients(clients = {DeptApi.class}) +@EnableFeignClients(clients = {DeptApi.class, FileApi.class}) public class RpcConfiguration { } diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/DepartmentInstanceRelativityService.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/DepartmentInstanceRelativityService.java new file mode 100644 index 00000000..098a6de0 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/DepartmentInstanceRelativityService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import java.util.*; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.DepartmentInstanceRelativityPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.DepartmentInstanceRelativityRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.DepartmentInstanceRelativitySaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.DepartmentInstanceRelativityDO; +import jakarta.validation.*; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 部门与实例关联 Service 接口 + * + * @author 后台管理 + */ +public interface DepartmentInstanceRelativityService { + + /** + * 创建部门与实例关联 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + DepartmentInstanceRelativityRespVO createDepartmentInstanceRelativity(@Valid DepartmentInstanceRelativitySaveReqVO createReqVO); + + /** + * 更新部门与实例关联 + * + * @param updateReqVO 更新信息 + */ + void updateDepartmentInstanceRelativity(@Valid DepartmentInstanceRelativitySaveReqVO updateReqVO); + + /** + * 删除部门与实例关联 + * + * @param id 编号 + */ + void deleteDepartmentInstanceRelativity(String id); + + /** + * 批量删除部门与实例关联 + * + * @param ids 编号 + */ + void deleteDepartmentInstanceRelativityListByIds(List ids); + + /** + * 获得部门与实例关联 + * + * @param id 编号 + * @return 部门与实例关联 + */ + DepartmentInstanceRelativityDO getDepartmentInstanceRelativity(String id); + + /** + * 获得部门与实例关联分页 + * + * @param pageReqVO 分页查询 + * @return 部门与实例关联分页 + */ + PageResult getDepartmentInstanceRelativityPage(DepartmentInstanceRelativityPageReqVO pageReqVO); + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/DepartmentInstanceRelativityServiceImpl.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/DepartmentInstanceRelativityServiceImpl.java new file mode 100644 index 00000000..aeaa650a --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/DepartmentInstanceRelativityServiceImpl.java @@ -0,0 +1,97 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.DepartmentInstanceRelativityPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.DepartmentInstanceRelativityRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.DepartmentInstanceRelativitySaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.DepartmentInstanceRelativityDO; +import cn.iocoder.yudao.module.base.dal.mysql.tmpltp.DepartmentInstanceRelativityMapper; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + + + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList; +import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.DEPARTMENT_INSTANCE_RELATIVITY_NOT_EXISTS; + + +/** + * 部门与实例关联 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstanceRelativityService { + + @Resource + private DepartmentInstanceRelativityMapper departmentInstanceRelativityMapper; + + @Override + public DepartmentInstanceRelativityRespVO createDepartmentInstanceRelativity(DepartmentInstanceRelativitySaveReqVO createReqVO) { + // 插入 + DepartmentInstanceRelativityDO departmentInstanceRelativity = BeanUtils.toBean(createReqVO, DepartmentInstanceRelativityDO.class); + departmentInstanceRelativityMapper.insert(departmentInstanceRelativity); + // 返回 + return BeanUtils.toBean(departmentInstanceRelativity, DepartmentInstanceRelativityRespVO.class); + } + + @Override + public void updateDepartmentInstanceRelativity(DepartmentInstanceRelativitySaveReqVO updateReqVO) { + // 校验存在 + validateDepartmentInstanceRelativityExists(updateReqVO.getId()); + // 更新 + DepartmentInstanceRelativityDO updateObj = BeanUtils.toBean(updateReqVO, DepartmentInstanceRelativityDO.class); + departmentInstanceRelativityMapper.updateById(updateObj); + } + + @Override + public void deleteDepartmentInstanceRelativity(String id) { + // 校验存在 + validateDepartmentInstanceRelativityExists(id); + // 删除 + departmentInstanceRelativityMapper.deleteById(id); + } + + @Override + public void deleteDepartmentInstanceRelativityListByIds(List ids) { + // 校验存在 + validateDepartmentInstanceRelativityExists(ids); + // 删除 + departmentInstanceRelativityMapper.deleteByIds(ids); + } + + private void validateDepartmentInstanceRelativityExists(List ids) { + List list = departmentInstanceRelativityMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(DEPARTMENT_INSTANCE_RELATIVITY_NOT_EXISTS); + } + } + + private void validateDepartmentInstanceRelativityExists(String id) { + if (departmentInstanceRelativityMapper.selectById(id) == null) { + throw exception(DEPARTMENT_INSTANCE_RELATIVITY_NOT_EXISTS); + } + } + + @Override + public DepartmentInstanceRelativityDO getDepartmentInstanceRelativity(String id) { + return departmentInstanceRelativityMapper.selectById(id); + } + + @Override + public PageResult getDepartmentInstanceRelativityPage(DepartmentInstanceRelativityPageReqVO pageReqVO) { + return departmentInstanceRelativityMapper.selectPage(pageReqVO); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataService.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataService.java new file mode 100644 index 00000000..412871f2 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataService.java @@ -0,0 +1,83 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import java.util.*; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceDataDO; +import jakarta.validation.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 实例字段值 Service 接口 + * + * @author 后台管理 + */ +public interface TemplateInstanceDataService { + + /** + * 创建实例字段值 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + TemplateInstanceDataRespVO createTemplateInstanceData(@Valid TemplateInstanceDataSaveReqVO createReqVO); + + /** + * 更新实例字段值 + * + * @param updateReqVO 更新信息 + */ + void updateTemplateInstanceData(@Valid TemplateInstanceDataSaveReqVO updateReqVO); + + /** + * 删除实例字段值 + * + * @param id 编号 + */ + void deleteTemplateInstanceData(Long id); + + /** + * 批量删除实例字段值 + * + * @param ids 编号 + */ + void deleteTemplateInstanceDataListByIds(List ids); + + /** + * 获得实例字段值 + * + * @param id 编号 + * @return 实例字段值 + */ + TemplateInstanceDataDO getTemplateInstanceData(Long id); + + /** + * 获得实例字段值分页 + * + * @param pageReqVO 分页查询 + * @return 实例字段值分页 + */ + PageResult getTemplateInstanceDataPage(TemplateInstanceDataPageReqVO pageReqVO); + + /** + * 设置实例字段值 + * + * @param pageReqVOS 保存参数 + * @return 布尔类型 + */ + boolean setTemplateInstanceData(List pageReqVOS); + + + /** + * 清空实例字段值 + * + * @param instanceId ids + * @return 布尔类型 + */ + boolean clearTemplateInstanceData(String instanceId,List valIds); + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java new file mode 100644 index 00000000..f72988f5 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java @@ -0,0 +1,123 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceDataDO; +import cn.iocoder.yudao.module.base.dal.mysql.tmpltp.TemplateInstanceDataMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + + + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList; +import static cn.iocoder.yudao.module.base.enums.ErrorCodeConstants.*; +import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.*; +import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTANCE_DATA_NOT_EXISTS; + +/** + * 实例字段值 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataService { + + @Resource + private TemplateInstanceDataMapper templateInstanceDataMapper; + + @Override + public TemplateInstanceDataRespVO createTemplateInstanceData(TemplateInstanceDataSaveReqVO createReqVO) { + // 插入 + TemplateInstanceDataDO templateInstanceData = BeanUtils.toBean(createReqVO, TemplateInstanceDataDO.class); + templateInstanceDataMapper.insert(templateInstanceData); + // 返回 + return BeanUtils.toBean(templateInstanceData, TemplateInstanceDataRespVO.class); + } + + @Override + public void updateTemplateInstanceData(TemplateInstanceDataSaveReqVO updateReqVO) { + // 校验存在 + validateTemplateInstanceDataExists(updateReqVO.getId()); + // 更新 + TemplateInstanceDataDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceDataDO.class); + templateInstanceDataMapper.updateById(updateObj); + } + + @Override + public void deleteTemplateInstanceData(Long id) { + // 校验存在 + validateTemplateInstanceDataExists(id); + // 删除 + templateInstanceDataMapper.deleteById(id); + } + + @Override + public void deleteTemplateInstanceDataListByIds(List ids) { + // 校验存在 + validateTemplateInstanceDataExists(ids); + // 删除 + templateInstanceDataMapper.deleteByIds(ids); + } + + private void validateTemplateInstanceDataExists(List ids) { + List list = templateInstanceDataMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(TEMPLATE_INSTANCE_DATA_NOT_EXISTS); + } + } + + private void validateTemplateInstanceDataExists(Long id) { + if (templateInstanceDataMapper.selectById(id) == null) { + throw exception(TEMPLATE_INSTANCE_DATA_NOT_EXISTS); + } + } + + @Override + public TemplateInstanceDataDO getTemplateInstanceData(Long id) { + return templateInstanceDataMapper.selectById(id); + } + + @Override + public PageResult getTemplateInstanceDataPage(TemplateInstanceDataPageReqVO pageReqVO) { + return templateInstanceDataMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + public boolean setTemplateInstanceData(List pageReqVOS) { + if (CollUtil.isEmpty(pageReqVOS)) { + throw exception(PARAMS_IS_NULL_OR_ERR); + } + return templateInstanceDataMapper.insertBatch(pageReqVOS); + } + + @Override + @Transactional + public boolean clearTemplateInstanceData(String instanceId, List valIds) { + if (CollUtil.isEmpty(valIds)|| instanceId.isEmpty()) { + throw exception(PARAMS_IS_NULL_OR_ERR); + } + int update = templateInstanceDataMapper.update(new LambdaUpdateWrapper().eq(TemplateInstanceDataDO::getInscId, instanceId).in(TemplateInstanceDataDO::getFldKy).set(TemplateInstanceDataDO::getFldVal, "")); + if (valIds.size()!= update){ + throw exception(OPERATION_FAIL); + } + return true; + } + + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemService.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemService.java new file mode 100644 index 00000000..e20f7ba7 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemService.java @@ -0,0 +1,66 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import java.util.*; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; +import jakarta.validation.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 实例条款值 Service 接口 + * + * @author 后台管理 + */ +public interface TemplateInstanceItemService { + + /** + * 创建实例条款值 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + TemplateInstanceItemRespVO createTemplateInstanceItem(@Valid TemplateInstanceItemSaveReqVO createReqVO); + + /** + * 更新实例条款值 + * + * @param updateReqVO 更新信息 + */ + void updateTemplateInstanceItem(@Valid TemplateInstanceItemSaveReqVO updateReqVO); + + /** + * 删除实例条款值 + * + * @param id 编号 + */ + void deleteTemplateInstanceItem(String id); + + /** + * 批量删除实例条款值 + * + * @param ids 编号 + */ + void deleteTemplateInstanceItemListByIds(List ids); + + /** + * 获得实例条款值 + * + * @param id 编号 + * @return 实例条款值 + */ + TemplateInstanceItemDO getTemplateInstanceItem(String id); + + /** + * 获得实例条款值分页 + * + * @param pageReqVO 分页查询 + * @return 实例条款值分页 + */ + PageResult getTemplateInstanceItemPage(TemplateInstanceItemPageReqVO pageReqVO); + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java new file mode 100644 index 00000000..3977637b --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java @@ -0,0 +1,87 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; +import cn.iocoder.yudao.module.base.dal.mysql.tmpltp.TemplateInstanceItemMapper; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import java.util.*; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTANCE_ITEM_NOT_EXISTS; + +/** + * 实例条款值 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemService { + + @Resource + private TemplateInstanceItemMapper templateInstanceItemMapper; + + @Override + public TemplateInstanceItemRespVO createTemplateInstanceItem(TemplateInstanceItemSaveReqVO createReqVO) { + // 插入 + TemplateInstanceItemDO templateInstanceItem = BeanUtils.toBean(createReqVO, TemplateInstanceItemDO.class); + templateInstanceItemMapper.insert(templateInstanceItem); + // 返回 + return BeanUtils.toBean(templateInstanceItem, TemplateInstanceItemRespVO.class); + } + + @Override + public void updateTemplateInstanceItem(TemplateInstanceItemSaveReqVO updateReqVO) { + // 校验存在 + validateTemplateInstanceItemExists(updateReqVO.getId()); + // 更新 + TemplateInstanceItemDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceItemDO.class); + templateInstanceItemMapper.updateById(updateObj); + } + + @Override + public void deleteTemplateInstanceItem(String id) { + // 校验存在 + validateTemplateInstanceItemExists(id); + // 删除 + templateInstanceItemMapper.deleteById(id); + } + + @Override + public void deleteTemplateInstanceItemListByIds(List ids) { + // 校验存在 + validateTemplateInstanceItemExists(ids); + // 删除 + templateInstanceItemMapper.deleteByIds(ids); + } + + private void validateTemplateInstanceItemExists(List ids) { + List list = templateInstanceItemMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(TEMPLATE_INSTANCE_ITEM_NOT_EXISTS); + } + } + + private void validateTemplateInstanceItemExists(String id) { + if (templateInstanceItemMapper.selectById(id) == null) { + throw exception(TEMPLATE_INSTANCE_ITEM_NOT_EXISTS); + } + } + + @Override + public TemplateInstanceItemDO getTemplateInstanceItem(String id) { + return templateInstanceItemMapper.selectById(id); + } + + @Override + public PageResult getTemplateInstanceItemPage(TemplateInstanceItemPageReqVO pageReqVO) { + return templateInstanceItemMapper.selectPage(pageReqVO); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceService.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceService.java new file mode 100644 index 00000000..27c08b00 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceService.java @@ -0,0 +1,66 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import java.util.*; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstancePageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceDO; +import jakarta.validation.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 模板实例 Service 接口 + * + * @author 后台管理 + */ +public interface TemplateInstanceService { + + /** + * 创建模板实例 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + TemplateInstanceRespVO createTemplateInstance(@Valid TemplateInstanceSaveReqVO createReqVO); + + /** + * 更新模板实例 + * + * @param updateReqVO 更新信息 + */ + void updateTemplateInstance(@Valid TemplateInstanceSaveReqVO updateReqVO); + + /** + * 删除模板实例 + * + * @param id 编号 + */ + void deleteTemplateInstance(Long id); + + /** + * 批量删除模板实例 + * + * @param ids 编号 + */ + void deleteTemplateInstanceListByIds(List ids); + + /** + * 获得模板实例 + * + * @param id 编号 + * @return 模板实例 + */ + TemplateInstanceDO getTemplateInstance(Long id); + + /** + * 获得模板实例分页 + * + * @param pageReqVO 分页查询 + * @return 模板实例分页 + */ + PageResult getTemplateInstancePage(TemplateInstancePageReqVO pageReqVO); + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceServiceImpl.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceServiceImpl.java new file mode 100644 index 00000000..1c27e17d --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceServiceImpl.java @@ -0,0 +1,109 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstancePageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.DepartmentInstanceRelativityDO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceDO; +import cn.iocoder.yudao.module.base.dal.mysql.tmpltp.DepartmentInstanceRelativityMapper; +import cn.iocoder.yudao.module.base.dal.mysql.tmpltp.TemplateInstanceMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTANCE_NOT_EXISTS; + + +/** + * 模板实例 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class TemplateInstanceServiceImpl implements TemplateInstanceService { + + @Resource + private TemplateInstanceMapper templateInstanceMapper; + @Resource + private DepartmentInstanceRelativityMapper departmentInstanceRelativityMapper; + + @Override + public TemplateInstanceRespVO createTemplateInstance(TemplateInstanceSaveReqVO createReqVO) { + // 插入 + TemplateInstanceDO templateInstance = BeanUtils.toBean(createReqVO, TemplateInstanceDO.class); + templateInstanceMapper.insert(templateInstance); + + //构建使用部门 + List departmentInstanceRelativityDOS = new ArrayList<>(); + createReqVO.getDeptIds().forEach(deptId ->{ + DepartmentInstanceRelativityDO departmentInstanceRelativityDO = new DepartmentInstanceRelativityDO(); + departmentInstanceRelativityDO.setTemplateInstanceId(String.valueOf(templateInstance.getId())); + departmentInstanceRelativityDO.setCompanyId(deptId); + departmentInstanceRelativityDOS.add(departmentInstanceRelativityDO); + }); + departmentInstanceRelativityMapper.insertBatch(departmentInstanceRelativityDOS); + // 插入使用范围 + return BeanUtils.toBean(templateInstance, TemplateInstanceRespVO.class); + } + + @Override + public void updateTemplateInstance(TemplateInstanceSaveReqVO updateReqVO) { + // 校验存在 + validateTemplateInstanceExists(updateReqVO.getId()); +// TemplateInstanceDO templateInstanceDO = templateInstanceMapper.selectById(updateReqVO.getId()); +// //获取保存旧文件内容防止被更新 +// String originalContent = templateInstanceDO.getOriginalContent(); + // 更新 + TemplateInstanceDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceDO.class); + updateObj.setOrigCntt(null); //重新赋值,防止原始文件被更改 + templateInstanceMapper.updateById(updateObj); + } + + @Override + public void deleteTemplateInstance(Long id) { + // 校验存在 + validateTemplateInstanceExists(id); + // 删除 + templateInstanceMapper.deleteById(id); + } + + @Override + public void deleteTemplateInstanceListByIds(List ids) { + // 校验存在 + validateTemplateInstanceExists(ids); + // 删除 + templateInstanceMapper.deleteByIds(ids); + } + + private void validateTemplateInstanceExists(List ids) { + List list = templateInstanceMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(TEMPLATE_INSTANCE_NOT_EXISTS); + } + } + + private void validateTemplateInstanceExists(Long id) { + if (templateInstanceMapper.selectById(id) == null) { + throw exception(TEMPLATE_INSTANCE_NOT_EXISTS); + } + } + + @Override + public TemplateInstanceDO getTemplateInstance(Long id) { + return templateInstanceMapper.selectById(id); + } + + @Override + public PageResult getTemplateInstancePage(TemplateInstancePageReqVO pageReqVO) { + return templateInstanceMapper.selectPage(pageReqVO); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplItmService.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplItmService.java new file mode 100644 index 00000000..4d055b6f --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplItmService.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmpItmPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplItmRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplItmSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplItmDO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +public interface TmplItmService extends IService { + + TmplItmRespVO createTmplItm(TmplItmSaveReqVO tmplItmSaveReqVO) ; + void updateTmplItm(TmplItmSaveReqVO tmplItmSaveReqVO) ; + boolean deleteTmplItm(List ids); + + PageResult pageTmplItm(TmpItmPageReqVO pageReqVO); +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplItmServiceImpl.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplItmServiceImpl.java new file mode 100644 index 00000000..7526af5e --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplItmServiceImpl.java @@ -0,0 +1,66 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmpItmPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplItmRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplItmSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplItmDO; +import cn.iocoder.yudao.module.base.dal.mysql.tmpltp.TmplItmMapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.TMPL_ITM_NOT_EXISTS; + +@Service +@Validated +public class TmplItmServiceImpl extends ServiceImpl implements TmplItmService{ + @Override + public TmplItmRespVO createTmplItm(TmplItmSaveReqVO tmplItmSaveReqVO) { + tmplItmSaveReqVO.setId(null); + TmplItmDO bean = BeanUtils.toBean(tmplItmSaveReqVO, TmplItmDO.class); + baseMapper.insert(bean); + return BeanUtils.toBean(bean, TmplItmRespVO.class); + } + + @Override + public void updateTmplItm(TmplItmSaveReqVO tmplItmSaveReqVO) { + validateTmplLtmExists(tmplItmSaveReqVO.getId()); + TmplItmDO bean = BeanUtils.toBean(tmplItmSaveReqVO, TmplItmDO.class); + this.updateById(bean); + } + + + + + private void validateTmplLtmExists(List ids) { + List list = baseMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(TMPL_ITM_NOT_EXISTS); + } + } + + private void validateTmplLtmExists(Long id) { + if (baseMapper.selectById(id) == null) { + throw exception(TMPL_ITM_NOT_EXISTS); + } + } + + @Override + @Transactional + public boolean deleteTmplItm(List ids) { + validateTmplLtmExists(ids); + return removeBatchByIds(ids); + } + + @Override + public PageResult pageTmplItm(TmpItmPageReqVO pageReqVO) { + return baseMapper.selectPage(pageReqVO); + } +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpFldService.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpFldService.java new file mode 100644 index 00000000..c3ed5a29 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpFldService.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplFldPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplFldRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplTpFldSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplTpFldDO; +import com.baomidou.mybatisplus.extension.service.IService; +import jakarta.validation.Valid; + +import java.util.List; + +public interface TmplTpFldService extends IService { + TmplFldRespVO createTmplFld(@Valid TmplTpFldSaveReqVO tmplTpFldSaveReqVO); + void updateTmplFld(@Valid TmplTpFldSaveReqVO tmplTpFldSaveReqVO); + PageResult tmplTpFldPage(@Valid TmplFldPageReqVO pageReqVO); + void deleteTmplTpByIds(List< Long> ids); + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpFldServiceImpl.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpFldServiceImpl.java new file mode 100644 index 00000000..ecd33090 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpFldServiceImpl.java @@ -0,0 +1,76 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplFldPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplFldRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplTpFldSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplTpFldDO; +import cn.iocoder.yudao.module.base.dal.mysql.tmpltp.TmplTpFldMapper; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.TMPL_FLD_CODE_EXISTS; +import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.TMPL_FLD_NOT_EXISTS; + + +@Service +@Validated +public class TmplTpFldServiceImpl extends ServiceImpl implements TmplTpFldService { + @Override + public TmplFldRespVO createTmplFld(TmplTpFldSaveReqVO tmplTpFldSaveReqVO) { + TmplTpFldDO tmplTpFldDO = BeanUtils.toBean(tmplTpFldSaveReqVO, TmplTpFldDO.class); + validateTmplFldCodeExists(tmplTpFldSaveReqVO.getFldKy()); + baseMapper.insert(tmplTpFldDO); + return BeanUtils.toBean(tmplTpFldDO, TmplFldRespVO.class); + } + + @Override + public void updateTmplFld(TmplTpFldSaveReqVO tmplTpFldSaveReqVO) { + // 校验存在 + validateTmplFldExists(tmplTpFldSaveReqVO.getId()); + // 更新 + TmplTpFldDO updateObj = BeanUtils.toBean(tmplTpFldSaveReqVO, TmplTpFldDO.class); + baseMapper.updateById(updateObj); + } + + private void validateTmplFldCodeExists(String code){ + Long loginUserCompanyId = SecurityFrameworkUtils.getLoginUserCompanyId(); + if (baseMapper.selectCount(Wrappers.lambdaQuery().eq(TmplTpFldDO::getFldKy, code).eq(TmplTpFldDO::getCompanyId, loginUserCompanyId)) > 0) { + throw exception(TMPL_FLD_CODE_EXISTS); + } + } + + private void validateTmplFldExists(List ids) { + List list = baseMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(TMPL_FLD_NOT_EXISTS); + } + } + + private void validateTmplFldExists(Long id) { + if (baseMapper.selectById(id) == null) { + throw exception(TMPL_FLD_NOT_EXISTS); + } + } + + @Override + public PageResult tmplTpFldPage(TmplFldPageReqVO pageReqVO) { + return baseMapper.selectPage(pageReqVO); + } + + @Override + public void deleteTmplTpByIds(List ids) { + validateTmplFldExists(ids); + baseMapper.deleteByIds(ids); + } +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpService.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpService.java new file mode 100644 index 00000000..f303fa94 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpService.java @@ -0,0 +1,109 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import java.util.*; + + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.*; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplTpDO; +import com.baomidou.mybatisplus.extension.service.IService; +import jakarta.validation.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +/** + * 模板分类 Service 接口 + * + * @author 后台管理 + */ +public interface TmplTpService extends IService { + + /** + * 创建模板分类 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + TmplTpRespVO createTmplTp(@Valid TmplTpSaveReqVO createReqVO); + + /** + * 更新模板分类 + * + * @param updateReqVO 更新信息 + */ + void updateTmplTp(@Valid TmplTpSaveReqVO updateReqVO); + + /** + * 删除模板分类 + * + * @param ids 编号 + */ + void deleteTmplTp(List ids); + + /** + * 批量删除模板分类 + * + * @param ids 编号 + */ + void deleteTmplTpListByIds(List ids); + + /** + * 获得模板分类 + * + * @param id 编号 + * @return 模板分类 + */ + TmplTpDO getTmplTp(Long id); + + /** + * 获得模板分类分页 + * + * @param pageReqVO 分页查询 + * @return 模板分类分页 + */ + PageResult getTmplTpPage(TmplTpPageReqVO pageReqVO); + + /** + * 获得字段回显 + * + * @param id 编号 + * @return 模板分类 + */ + List getField(Long id); + + /** + * 获得条款回显 + * + * @param id 编号 + * @return 模板分类 + */ + List getClause(Long id); + + /** + * 树结构 + * + * @return 模板分类 + */ + List buildTree(); + + /** + * 更新模板分类状态 + * + * @param id 编号 + * @param status 状态 + */ + void updateStatus(Long id, String status); + + /** + * 字段编辑 + * + * @param reqVO 状态 + */ + void fieldEdit(TmplTpEditOrDeleteReqVO reqVO); + + /** + * 条款编辑 + * + * @param reqVO 状态 + */ + void ltmEdit(TmplTpEditOrDeleteReqVO reqVO); +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpServiceImpl.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpServiceImpl.java new file mode 100644 index 00000000..313fb074 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpServiceImpl.java @@ -0,0 +1,268 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import cn.hutool.core.collection.CollUtil; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.*; + +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplFldRelDO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplItmRelDO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplTpDO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplTpFldDO; +import cn.iocoder.yudao.module.base.dal.mysql.tmpltp.TmplFldRelMapper; +import cn.iocoder.yudao.module.base.dal.mysql.tmpltp.TmplItmRelMapper; +import cn.iocoder.yudao.module.base.dal.mysql.tmpltp.TmplTpMapper; +import cn.iocoder.yudao.module.tmpltp.enums.StatusEnum; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import java.util.stream.Collectors; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.*; + +/** + * 模板分类 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +@RequiredArgsConstructor +public class TmplTpServiceImpl extends ServiceImpl implements TmplTpService { + private final TmplFldRelMapper tmplFldRelMapper; + private final TmplItmRelMapper tmplItmRelMapper; + + + @Override + @Transactional + public TmplTpRespVO createTmplTp(TmplTpSaveReqVO createReqVO) { + //置空id + createReqVO.setId(null); + // 插入 + TmplTpDO tmplTp = BeanUtils.toBean(createReqVO, TmplTpDO.class); + tmplTp.setSts("Y"); + baseMapper.insert(tmplTp); + // 返回 + List tmplFldRelDOS = new ArrayList<>(); + List tmplItmRelDOS = new ArrayList<>(); + createReqVO.getTmplTpFldIds().forEach(tmplItmId -> { + TmplFldRelDO tmplFldRelDO = new TmplFldRelDO(); + tmplFldRelDO.setTmplTpId(String.valueOf(tmplTp.getId())); + tmplFldRelDO.setTpFldId(String.valueOf(tmplItmId)); + tmplFldRelDOS.add(tmplFldRelDO); + }); + createReqVO.getTmplItmIds().forEach(tmplFldId -> { + TmplItmRelDO tmplItmRelDO = new TmplItmRelDO(); + tmplItmRelDO.setTmplTpId(String.valueOf(tmplTp.getId())); + tmplItmRelDO.setItmFldId(String.valueOf(tmplFldId)); + tmplItmRelDOS.add(tmplItmRelDO); + }); + tmplFldRelMapper.insertBatch(tmplFldRelDOS); + tmplItmRelMapper.insertBatch(tmplItmRelDOS); + return BeanUtils.toBean(tmplTp, TmplTpRespVO.class); + } + + @Override + public void updateTmplTp(TmplTpSaveReqVO updateReqVO) { + // 校验存在 + validateTmplTpExists(updateReqVO.getId()); + // 更新 + TmplTpDO updateObj = BeanUtils.toBean(updateReqVO, TmplTpDO.class); + baseMapper.updateById(updateObj); + } + + @Override + @Transactional + public void deleteTmplTp(List ids) { + // 校验存在 + validateTmplTpExists(ids); + //校验能否进行删除 +// if (!validateStatusCanDelete(ids)){ +// throw exception(TMPL_TP_DEl_ERROR); +// } + // 删除 + baseMapper.deleteByIds(ids); + //删除对应的关联信息 + tmplFldRelMapper.delete(Wrappers.lambdaQuery().in(TmplFldRelDO::getTmplTpId, ids)); + tmplItmRelMapper.delete(Wrappers.lambdaQuery().in(TmplItmRelDO::getTmplTpId, ids)); + } + + @Override + public void deleteTmplTpListByIds(List ids) { + // 校验存在 + validateTmplTpExists(ids); + // 删除 + baseMapper.deleteByIds(ids); + } + + private void validateTmplTpExists(List ids) { + List list = baseMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(TMPL_TP_NOT_EXISTS); + } + } + + private void validateTmplTpExists(Long id) { + if (baseMapper.selectById(id) == null) { + throw exception(TMPL_TP_NOT_EXISTS); + } + } + + @Override + public TmplTpDO getTmplTp(Long id) { + return baseMapper.selectById(id); + } + + @Override + public PageResult getTmplTpPage(TmplTpPageReqVO pageReqVO) { + return baseMapper.selectPage(pageReqVO); + } + + @Override + public List getField(Long id) { + return baseMapper.getField(id); + } + + @Override + public List getClause(Long id) { + return baseMapper.getClause(id); + } + + @Override + public List buildTree() { + // 1. 查询所有数据 + List allNodes = baseMapper.selectList(new QueryWrapper<>()); + + // 2. 转换为树节点VO + List treeNodes = allNodes.stream() + .map(this::convertToTreeVO) + .collect(Collectors.toList()); + + // 3. 构建树形结构 + return buildTreeStructure(treeNodes); + } + + /** + * 转换实体类到树节点VO + */ + private TmplTpTreeVO convertToTreeVO(TmplTpDO entity) { + return BeanUtils.toBean(entity, TmplTpTreeVO.class); + } + + /** + * 构建树形结构 + */ + private List buildTreeStructure(List treeNodes) { + Map> groupByPrnId = treeNodes.stream() + .collect(Collectors.groupingBy(node -> + node.getPrnId() != null ? node.getPrnId().toString() : "null")); + + // 2. 设置子节点并排序 + treeNodes.forEach(node -> { + List children = groupByPrnId.get(node.getId().toString()); + if (children != null && !children.isEmpty()) { + // 按排序序号升序排列 + children.sort(Comparator.comparing(TmplTpTreeVO::getSrt)); + node.setChildren(children); + } + }); + + // 3. 返回根节点(父ID为NULL的节点) + return groupByPrnId.getOrDefault("0", new ArrayList<>()); + } + + + @Override + public void updateStatus(Long id, String status) { + //验证当前的能否变更为之后的状态 +// if (!validateStatusUpdate(id, status)) { +// throw exception(TMPL_TP_SATUS_ERROR); +// } + baseMapper.update(Wrappers.lambdaUpdate().set(TmplTpDO::getSts, status).eq(TmplTpDO::getId, id)); + } + + + private boolean validateStatusUpdate(Long id, String status) { + TmplTpDO tmplTpDO = baseMapper.getTmplTpById(id); + String currentSts = tmplTpDO.getSts(); + + // 获取当前状态对应的枚举实例 + StatusEnum currentStatus = StatusEnum.fromCode(currentSts); + + // 如果当前状态不合法,直接返回false + if (currentStatus == null) { + return false; + } + + // 校验状态转换是否合法 + return currentStatus.isTransitionAllowed(status); + } + +// private boolean validateStatusCanDelete(List ids) { +// Set sts = listByIds(ids).stream().map(TmplTpDO::getSts).collect(Collectors.toSet()); +// List result = new ArrayList<>(); +// sts.forEach(status -> { +// StatusEnum currentStatus = StatusEnum.fromCode(status); +// boolean transitionAllowed = false; +// if (currentStatus != null) { +// transitionAllowed = currentStatus.isTransitionAllowed(status); +// } else { +// result.add(false); +// } +// result.add(transitionAllowed); +// }); +// return !result.contains(false); +// } + + @Override + public void fieldEdit(TmplTpEditOrDeleteReqVO reqVO) { + if ("create".equals(reqVO.getType())) { + List tmplFldRelDOS = new ArrayList<>(); + reqVO.getIds().forEach(id -> { + TmplFldRelDO tmplFldRelDO = new TmplFldRelDO(); + tmplFldRelDO.setTmplTpId(reqVO.getTpId()); + tmplFldRelDO.setTpFldId(id); + tmplFldRelDOS.add(tmplFldRelDO); + }); + tmplFldRelMapper.insertBatch(tmplFldRelDOS); + }else if ("delete".equals(reqVO.getType())) { + tmplFldRelMapper.delete(Wrappers.lambdaQuery() + .eq(TmplFldRelDO::getTmplTpId, reqVO.getTpId()) + .in(TmplFldRelDO::getTpFldId, reqVO.getIds())); + }else { + throw exception(ILLEGAL_OPERATION_TYPE); + } + } + + @Override + public void ltmEdit(TmplTpEditOrDeleteReqVO reqVO) { + if ("create".equals(reqVO.getType())) { + List tmplItmRelDOS = new ArrayList<>(); + reqVO.getIds().forEach(id -> { + TmplItmRelDO tmplItmRelDO = new TmplItmRelDO(); + tmplItmRelDO.setTmplTpId(reqVO.getTpId()); + tmplItmRelDO.setItmFldId(id); + tmplItmRelDOS.add(tmplItmRelDO); + }); + tmplItmRelMapper.insertBatch(tmplItmRelDOS); + }else if ("delete".equals(reqVO.getType())) { + tmplItmRelMapper.delete(Wrappers.lambdaQuery() + .eq(TmplItmRelDO::getTmplTpId, reqVO.getTpId()) + .in(TmplItmRelDO::getItmFldId, reqVO.getIds())); + }else { + throw exception(ILLEGAL_OPERATION_TYPE); + } + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/DepartmentInstanceRelativityMapper.xml b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/DepartmentInstanceRelativityMapper.xml new file mode 100644 index 00000000..bee1d657 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/DepartmentInstanceRelativityMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml new file mode 100644 index 00000000..50f2447f --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml new file mode 100644 index 00000000..5addfc88 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceMapper.xml b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceMapper.xml new file mode 100644 index 00000000..3b4b22a7 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplFldRelMapper.xml b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplFldRelMapper.xml new file mode 100644 index 00000000..024b8452 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplFldRelMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplItmMapper.xml b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplItmMapper.xml new file mode 100644 index 00000000..c76c0d8c --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplItmMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplItmRelMapper.xml b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplItmRelMapper.xml new file mode 100644 index 00000000..77385406 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplItmRelMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplTpFldMapper.xml b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplTpFldMapper.xml new file mode 100644 index 00000000..63754226 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplTpFldMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplTpMapper.xml b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplTpMapper.xml new file mode 100644 index 00000000..5f4684cb --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplTpMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + diff --git a/yudao-module-contract-order/pom.xml b/yudao-module-contract-order/pom.xml index f2177c10..05c0b59b 100644 --- a/yudao-module-contract-order/pom.xml +++ b/yudao-module-contract-order/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - yudao + dsc-base cn.iocoder.cloud ${revision} diff --git a/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/ErrorCodeConstants.java b/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/ErrorCodeConstants.java index a9d76de6..97ad8224 100644 --- a/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/ErrorCodeConstants.java +++ b/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/ErrorCodeConstants.java @@ -11,7 +11,8 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode; */ public interface ErrorCodeConstants { - // ========== 示例模块 1-001-000-000 ========== - ErrorCode EXAMPLE_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在"); - + // ========== 合同模块 1-027-000-000 ========== + ErrorCode CONTRACT_NUM_TRANSFINITE = new ErrorCode(1_027_000_000, "系统合同编号超限,最大合同编号:999999"); + ErrorCode CONTRACT_NAME_EXISTS = new ErrorCode(1_027_000_001, "合同名已存在"); + ErrorCode CONTRACT_PAPER_NUMBER_EXISTS = new ErrorCode(1_027_000_002, "合同编号已存在"); } diff --git a/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/ContractDictTypeConstants.java b/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/ContractDictTypeConstants.java new file mode 100644 index 00000000..dbcce700 --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/ContractDictTypeConstants.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.module.contractorder.enums.contract; + +/** + * 合同字典类型常量 + * + * @author ZT + */ +public class ContractDictTypeConstants { + + // 合同状态 + public static String BSE_CTRT_STS = "BSE_CTRT_STS"; + // 合同类型(字典名:业务类型) + public static String BSN_TP = "BSN_TP"; +} diff --git a/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/ContractStatusEnum.java b/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/ContractStatusEnum.java new file mode 100644 index 00000000..9228c3f1 --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/ContractStatusEnum.java @@ -0,0 +1,67 @@ +package cn.iocoder.yudao.module.contractorder.enums.contract; + +/** + * 合同状态枚举 + */ +public enum ContractStatusEnum { + + /** + * 合同状态-草稿 + */ + DRAFT("草稿","DRAFT","可以删除"), + /** + * 合同状态-正在审核 + */ + UNDER_REVIEW("正在审核","UNDER_REVIEW","不允许任何操作"), + /** + * 合同状态-执行中 + */ + IN_PROGRESS("执行中","IN_PROGRESS","可以终止、归档"), + /** + * 合同状态-已驳回 + */ + REJECTED("已驳回","REJECTED","可以删除"), + /** + * 合同状态-已终止 + */ + TERMINATED("已终止","TERMINATED","只允许归档"), + /** + * 合同状态-已归档 + */ + ARCHIVED("已归档","ARCHIVED","不允许任何操作"), + /** + * 合同状态-已删除 + */ + DELETED("已删除","DELETED","不允许任何操作"); + + ContractStatusEnum(String label, String code, String remark) { + this.label = label; + this.code = code; + this.remark = remark; + } + + /** + * 字典标签 + */ + private final String label; + /** + * 字典编码 + */ + private final String code; + /** + * 备注 + */ + private final String remark; + + public String getLabel() { + return label; + } + + public String getCode() { + return code; + } + + public String getRemark() { + return remark; + } +} diff --git a/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/ContractTypeEnum.java b/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/ContractTypeEnum.java new file mode 100644 index 00000000..9e065f3c --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/ContractTypeEnum.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.contractorder.enums.contract; + +/** + * 合同类型枚举 + */ +public enum ContractTypeEnum { + + /** + * 采购 + */ + PRCH("采购","PRCH",null), + /** + * 销售 + */ + SALE("销售","SALE",null), + /** + * 委托加工 + */ + ENTT("委托加工","ENTT",null), + /** + * 来料加工 + */ + MKE("来料加工","MKE",null); + + ContractTypeEnum(String label, String code, String remark) { + this.label = label; + this.code = code; + this.remark = remark; + } + + /** + * 字典标签 + */ + private final String label; + /** + * 字典编码 + */ + private final String code; + /** + * 备注 + */ + private final String remark; + + public String getLabel() { + return label; + } + + public String getCode() { + return code; + } + + public String getRemark() { + return remark; + } +} diff --git a/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/DateConstants.java b/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/DateConstants.java new file mode 100644 index 00000000..70fef952 --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-api/src/main/java/cn/iocoder/yudao/module/contractorder/enums/contract/DateConstants.java @@ -0,0 +1,7 @@ +package cn.iocoder.yudao.module.contractorder.enums.contract; + +public class DateConstants { + + // 日期格式 + public static final String DATE_FORMAT_YEAR_MONTH_DAY_8_BIT = "yyyyMMdd"; +} diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/ContractOrderServerApplication.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/ContractOrderServerApplication.java index cffa1597..85284abb 100644 --- a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/ContractOrderServerApplication.java +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/ContractOrderServerApplication.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.contractorder; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; /** * ContractOrder 模块的启动类 diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/ContractController.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/ContractController.java new file mode 100644 index 00000000..51bc3521 --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/ContractController.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.contractorder.controller.admin.contract; + +import cn.iocoder.yudao.framework.business.interceptor.BusinessControllerMarker; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractPageReqVO; +import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractRespVO; +import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractSaveReqVO; +import cn.iocoder.yudao.module.contractorder.dal.dataobject.contract.ContractMainDO; +import cn.iocoder.yudao.module.contractorder.service.contract.ContractService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Slf4j +@Tag(name = "管理后台 - 合同管理") +@RestController +@RequestMapping("/base/contract-order/contract") +@Validated +public class ContractController implements BusinessControllerMarker { + + @Resource + private ContractService contractService; + + @GetMapping("/page") + @Operation(summary = "获得合同分页列表") + @PreAuthorize("@ss.hasPermission('base:contract-main:query')") + public CommonResult> getContractPage(@Valid ContractPageReqVO pageReqVO) { + PageResult pageResult = contractService.getContractPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ContractRespVO.class)); + } + + @PostMapping("/create") + @Operation(summary = "新增合同") + @PreAuthorize("@ss.hasPermission('system:contract-main:create')") + public CommonResult createContract(@Valid @RequestBody ContractSaveReqVO reqVO) { + Long id = contractService.createContract(reqVO); + return success(id); + } +} diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractDetailSaveReqVO.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractDetailSaveReqVO.java new file mode 100644 index 00000000..6f6d90e5 --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractDetailSaveReqVO.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Schema(description = "管理后台 - 合同明细新增/修改 Request VO") +@Data +public class ContractDetailSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "32609") + private Long id; + + @Schema(description = "合同主信息主键", example = "13595") + private Long contractMainId; + + @Schema(description = "物料名称", example = "张三") + private String materialName; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "数量") + private BigDecimal quantity; + + @Schema(description = "计量单位") + private String unit; + + @Schema(description = "含税单价", example = "28579") + private BigDecimal inTaxUnitPrice; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称", example = "赵六") + private String elementName; + + @Schema(description = "金属元素编码") + private String elementNumber; + + // 交货计划 + private List plans; +} \ No newline at end of file diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractPageReqVO.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractPageReqVO.java new file mode 100644 index 00000000..6399cb6a --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractPageReqVO.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 合同信息分页 Request VO") +@Data +public class ContractPageReqVO extends PageParam { + + @Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一", example = "芋艿") + private String contractName; + + @Schema(description = "合同编号;与ERP(HTBH)对应,校验唯一") + private String contractPaperNumber; + + @Schema(description = "甲方公司名称", example = "王五") + private String purchaseCompanyName; + + @Schema(description = "乙方公司名称", example = "王五") + private String salesCompanyName; + + @Schema(description = "收支性质;与ERP(SZXZ)对应") + private String direction; + + @Schema(description = "签署日期;与ERP(HTQDRQ)对应") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] signDate; + + @Schema(description = "本币金额;与ERP(HTBWBZJE)对应") + private BigDecimal basicAmount; +} \ No newline at end of file diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractPlanSaveReqVO.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractPlanSaveReqVO.java new file mode 100644 index 00000000..e5bb538a --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractPlanSaveReqVO.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 交货计划条款新增/修改 Request VO") +@Data +public class ContractPlanSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "27474") + private Long id; + + @Schema(description = "合同明细主键", example = "32763") + private Long contractDetailId; + + @Schema(description = "交货年份", requiredMode = Schema.RequiredMode.REQUIRED) + private Long contractDeliveryYear; + + @Schema(description = "交货月份") + private Long contractPlanDeliveryMonth; + + @Schema(description = "计划交货数量", requiredMode = Schema.RequiredMode.REQUIRED) + private BigDecimal contractPlanDeliveryQuantity; + + @Schema(description = "交货开始日期", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime contractDeliveryStartDate; + + @Schema(description = "交货结束日期", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime contractDeliveryEndDate; +} \ No newline at end of file diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractRespVO.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractRespVO.java new file mode 100644 index 00000000..bca61283 --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractRespVO.java @@ -0,0 +1,215 @@ +package cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 合同信息 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ContractRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2090") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "模板实例主键", example = "10196") + @ExcelProperty("模板实例主键") + private Long instanceId; + + @Schema(description = "系统合同编号;自动生成,校验唯一") + @ExcelProperty("系统合同编号;自动生成,校验唯一") + private String systemContractNumber; + + @Schema(description = "状态", example = "1") + @ExcelProperty("状态") + private String status; + + @Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一", example = "芋艿") + @ExcelProperty("合同名称;与ERP(HTMC)对应,校验唯一") + private String contractName; + + @Schema(description = "合同编号;与ERP(HTBH)对应,校验唯一") + @ExcelProperty("合同编号;与ERP(HTBH)对应,校验唯一") + private String contractPaperNumber; + + @Schema(description = "是否虚拟合同;与ERP(SFXNHT)对应") + @ExcelProperty("是否虚拟合同;与ERP(SFXNHT)对应") + private String contractVirtual; + + @Schema(description = "是否先款后货") + @ExcelProperty("是否先款后货") + private String hasPayable; + + @Schema(description = "收支性质;与ERP(SZXZ)对应") + @ExcelProperty("收支性质;与ERP(SZXZ)对应") + private String direction; + + @Schema(description = "合同类型", example = "1") + @ExcelProperty("合同类型") + private String contractType; + + @Schema(description = "签署日期;与ERP(HTQDRQ)对应") + @ExcelProperty("签署日期;与ERP(HTQDRQ)对应") + private LocalDateTime signDate; + + @Schema(description = "开始日期;与ERP(HTQSRQ)对应") + @ExcelProperty("开始日期;与ERP(HTQSRQ)对应") + private LocalDateTime startDate; + + @Schema(description = "结束日期;与ERP(HTZZRQ)对应") + @ExcelProperty("结束日期;与ERP(HTZZRQ)对应") + private LocalDateTime endDate; + + @Schema(description = "签署地") + @ExcelProperty("签署地") + private String signPlace; + + @Schema(description = "甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。") + @ExcelProperty("甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。") + private String purchaseCompanyNumber; + + @Schema(description = "甲方公司名称", example = "王五") + @ExcelProperty("甲方公司名称") + private String purchaseCompanyName; + + @Schema(description = "甲方地址") + @ExcelProperty("甲方地址") + private String purchaseAddress; + + @Schema(description = "甲方法定代表人") + @ExcelProperty("甲方法定代表人") + private String purchaseLeader; + + @Schema(description = "乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。") + @ExcelProperty("乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。") + private String salesCompanyNumber; + + @Schema(description = "乙方公司名称", example = "王五") + @ExcelProperty("乙方公司名称") + private String salesCompanyName; + + @Schema(description = "乙方地址") + @ExcelProperty("乙方地址") + private String salesAddress; + + @Schema(description = "乙方企业负责人") + @ExcelProperty("乙方企业负责人") + private String salesPurchaseLeader; + + @Schema(description = "币种;与ERP(BZBH)对应") + @ExcelProperty("币种;与ERP(BZBH)对应") + private String currency; + + @Schema(description = "原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") + @ExcelProperty("原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") + private BigDecimal cooAmount; + + @Schema(description = "本币金额;与ERP(HTBWBZJE)对应") + @ExcelProperty("本币金额;与ERP(HTBWBZJE)对应") + private BigDecimal basicAmount; + + @Schema(description = "是否有履约保证金;为是,则保证金必填。") + @ExcelProperty("是否有履约保证金;为是,则保证金必填。") + private String hasDeposit; + + @Schema(description = "原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") + @ExcelProperty("原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") + private BigDecimal cooAmountDeposit; + + @Schema(description = "本币履约保证金;与ERP(LYBZJBGQBWB)对应") + @ExcelProperty("本币履约保证金;与ERP(LYBZJBGQBWB)对应") + private BigDecimal basicAmountDeposit; + + @Schema(description = "是否有预付款;与ERP(SFYYFK)对应") + @ExcelProperty("是否有预付款;与ERP(SFYYFK)对应") + private String hasPrepayment; + + @Schema(description = "预付款比例;与ERP(YFKBL)对应") + @ExcelProperty("预付款比例;与ERP(YFKBL)对应") + private BigDecimal prepaymentRatio; + + @Schema(description = "预付款金额;与ERP(YFKJE)对应") + @ExcelProperty("预付款金额;与ERP(YFKJE)对应") + private BigDecimal prepaymentAmount; + + @Schema(description = "是否有质保金;与ERP(SFHZBJ)对应") + @ExcelProperty("是否有质保金;与ERP(SFHZBJ)对应") + private String hasQualityAmount; + + @Schema(description = "质保金比例;与ERP(ZBJBL)对应") + @ExcelProperty("质保金比例;与ERP(ZBJBL)对应") + private BigDecimal qualityRatio; + + @Schema(description = "质保金金额;与ERP(BZJJE)对应") + @ExcelProperty("质保金金额;与ERP(BZJJE)对应") + private BigDecimal qualityAmount; + + @Schema(description = "补充协议类型;变更协议/增加条款", example = "1") + @ExcelProperty("补充协议类型;变更协议/增加条款") + private String replenishAgreementType; + + @Schema(description = "备注;与ERP(BZXX)对应") + @ExcelProperty("备注;与ERP(BZXX)对应") + private String remark; + + @Schema(description = "施工类型编号;与ERP(HTLXBH)对应,拓展信息") + @ExcelProperty("施工类型编号;与ERP(HTLXBH)对应,拓展信息") + private String constructionTypeNumber; + + @Schema(description = "施工类型名称;与ERP(HTLXMC)对应,拓展信息", example = "张三") + @ExcelProperty("施工类型名称;与ERP(HTLXMC)对应,拓展信息") + private String constructionTypeName; + + @Schema(description = "代理方;与ERP(ZLIFNR)对应,拓展信息") + @ExcelProperty("代理方;与ERP(ZLIFNR)对应,拓展信息") + private String zlifnr; + + @Schema(description = "类别;与ERP(HTLB)对应,拓展信息") + @ExcelProperty("类别;与ERP(HTLB)对应,拓展信息") + private String category; + + @Schema(description = "原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") + @ExcelProperty("原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") + private BigDecimal changeCooAmount; + + @Schema(description = "本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息") + @ExcelProperty("本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息") + private BigDecimal changeBasicAmount; + + @Schema(description = "原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息") + @ExcelProperty("原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息") + private BigDecimal changeCooAmountDeposit; + + @Schema(description = "本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息") + @ExcelProperty("本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息") + private BigDecimal changeBasicAmountDeposit; + + @Schema(description = "是否框架合同;与ERP(SFKJHT)对应,拓展信息") + @ExcelProperty("是否框架合同;与ERP(SFKJHT)对应,拓展信息") + private String isFramework; + + @Schema(description = "境内/境外;与ERP(JNJW)对应,拓展信息") + @ExcelProperty("境内/境外;与ERP(JNJW)对应,拓展信息") + private String jnjw; + + @Schema(description = "建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填") + @ExcelProperty("建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填") + private String architectureServicePlace; + + @Schema(description = "达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") + @ExcelProperty("达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") + private BigDecimal payeeConditionAmount; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "步骤") + @ExcelProperty("步骤") + private Integer step; +} \ No newline at end of file diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractSaveReqVO.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractSaveReqVO.java new file mode 100644 index 00000000..21df898e --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contract/vo/preparaton/ContractSaveReqVO.java @@ -0,0 +1,230 @@ +package cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT; + +@Schema(description = "管理后台 - 合同信息新增/修改 Request VO") +@Data +public class ContractSaveReqVO { + + @Schema(description = "主键") + @ExcelProperty("主键") + private Long id; + + @NotNull(message = "步骤不能为空") + @Schema(description = "步骤", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("步骤") + private Integer step; + + // 合同基本信息 + @Schema(description = "甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。") + @ExcelProperty("甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。") + private String purchaseCompanyNumber; + + @Schema(description = "甲方公司名称", example = "王五") + @ExcelProperty("甲方公司名称") + private String purchaseCompanyName; + + @Schema(description = "甲方地址") + @ExcelProperty("甲方地址") + private String purchaseAddress; + + @Schema(description = "甲方法定代表人") + @ExcelProperty("甲方法定代表人") + private String purchaseLeader; + + @Schema(description = "乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。") + @ExcelProperty("乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。") + private String salesCompanyNumber; + + @Schema(description = "乙方公司名称", example = "王五") + @ExcelProperty("乙方公司名称") + private String salesCompanyName; + + @Schema(description = "乙方地址") + @ExcelProperty("乙方地址") + private String salesAddress; + + @Schema(description = "乙方企业负责人") + @ExcelProperty("乙方企业负责人") + private String salesPurchaseLeader; + + @NotBlank(message = "合同名称不能为空") + @Size(max = 90, message = "合同名称长度不能超过90个字符") + @Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一", example = "芋艿") + @ExcelProperty("合同名称;与ERP(HTMC)对应,校验唯一") + private String contractName; + + @Schema(description = "合同编号;与ERP(HTBH)对应,校验唯一") + @ExcelProperty("合同编号;与ERP(HTBH)对应,校验唯一") + private String contractPaperNumber; + + @NotBlank(message = "合同类型不能为空") + @Schema(description = "合同类型", example = "PRCH") + @ExcelProperty("合同类型") + private String contractType; + + @Schema(description = "收支性质;与ERP(SZXZ)对应") + @ExcelProperty("收支性质;与ERP(SZXZ)对应") + private String direction; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @JsonFormat(timezone = TIME_ZONE_DEFAULT, pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @Schema(description = "签署日期;与ERP(HTQDRQ)对应") + @ExcelProperty("签署日期;与ERP(HTQDRQ)对应") + private LocalDateTime signDate; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @JsonFormat(timezone = TIME_ZONE_DEFAULT, pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @Schema(description = "开始日期;与ERP(HTQSRQ)对应") + @ExcelProperty("开始日期;与ERP(HTQSRQ)对应") + private LocalDateTime startDate; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @JsonFormat(timezone = TIME_ZONE_DEFAULT, pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @Schema(description = "结束日期;与ERP(HTZZRQ)对应") + @ExcelProperty("结束日期;与ERP(HTZZRQ)对应") + private LocalDateTime endDate; + + @Schema(description = "签署地") + @ExcelProperty("签署地") + private String signPlace; + + // 金额信息 + @Schema(description = "币种;与ERP(BZBH)对应") + @ExcelProperty("币种;与ERP(BZBH)对应") + private String currency; + + @Schema(description = "本币金额;与ERP(HTBWBZJE)对应") + @ExcelProperty("本币金额;与ERP(HTBWBZJE)对应") + private BigDecimal basicAmount; + + @Schema(description = "原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") + @ExcelProperty("原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") + private BigDecimal cooAmount; + + @Schema(description = "是否有履约保证金;为是,则保证金必填。") + @ExcelProperty("是否有履约保证金;为是,则保证金必填。") + private String hasDeposit; + + @Schema(description = "原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") + @ExcelProperty("原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") + private BigDecimal cooAmountDeposit; + + @Schema(description = "本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息") + @ExcelProperty("本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息") + private BigDecimal changeBasicAmountDeposit; + + @Schema(description = "是否有预付款;与ERP(SFYYFK)对应") + @ExcelProperty("是否有预付款;与ERP(SFYYFK)对应") + private String hasPrepayment; + + @Schema(description = "预付款比例;与ERP(YFKBL)对应") + @ExcelProperty("预付款比例;与ERP(YFKBL)对应") + private BigDecimal prepaymentRatio; + + @Schema(description = "预付款金额;与ERP(YFKJE)对应") + @ExcelProperty("预付款金额;与ERP(YFKJE)对应") + private BigDecimal prepaymentAmount; + + @Schema(description = "是否有质保金;与ERP(SFHZBJ)对应") + @ExcelProperty("是否有质保金;与ERP(SFHZBJ)对应") + private String hasQualityAmount; + + @Schema(description = "质保金比例;与ERP(ZBJBL)对应") + @ExcelProperty("质保金比例;与ERP(ZBJBL)对应") + private BigDecimal qualityRatio; + + @Schema(description = "质保金金额;与ERP(BZJJE)对应") + @ExcelProperty("质保金金额;与ERP(BZJJE)对应") + private BigDecimal qualityAmount; + + @Schema(description = "是否先款后货") + @ExcelProperty("是否先款后货") + private String hasPayable; + + @Schema(description = "备注;与ERP(BZXX)对应") + @ExcelProperty("备注;与ERP(BZXX)对应") + private String remark; + + // 物料信息 + private List detail; + + // 扩展信息 + @Schema(description = "原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") + @ExcelProperty("原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") + private BigDecimal changeCooAmount; + + @Schema(description = "本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息") + @ExcelProperty("本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息") + private BigDecimal changeBasicAmount; + + @Schema(description = "原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息") + @ExcelProperty("原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息") + private BigDecimal changeCooAmountDeposit; + + @Schema(description = "本币履约保证金;与ERP(LYBZJBGQBWB)对应") + @ExcelProperty("本币履约保证金;与ERP(LYBZJBGQBWB)对应") + private BigDecimal basicAmountDeposit; + + @Schema(description = "是否框架合同;与ERP(SFKJHT)对应,拓展信息") + @ExcelProperty("是否框架合同;与ERP(SFKJHT)对应,拓展信息") + private String isFramework; + + @Schema(description = "境内/境外;与ERP(JNJW)对应,拓展信息") + @ExcelProperty("境内/境外;与ERP(JNJW)对应,拓展信息") + private String jnjw; + + @Schema(description = "施工类型编号;与ERP(HTLXBH)对应,拓展信息") + @ExcelProperty("施工类型编号;与ERP(HTLXBH)对应,拓展信息") + private String constructionTypeNumber; + + @Schema(description = "施工类型名称;与ERP(HTLXMC)对应,拓展信息", example = "张三") + @ExcelProperty("施工类型名称;与ERP(HTLXMC)对应,拓展信息") + private String constructionTypeName; + + @Schema(description = "代理方;与ERP(ZLIFNR)对应,拓展信息") + @ExcelProperty("代理方;与ERP(ZLIFNR)对应,拓展信息") + private String zlifnr; + + @Schema(description = "类别;与ERP(HTLB)对应,拓展信息") + @ExcelProperty("类别;与ERP(HTLB)对应,拓展信息") + private String category; + + // 模板部分查询 + @Schema(description = "模板实例主键", example = "10196") + @ExcelProperty("模板实例主键") + private Long instanceId; + // 合同动态表单 + // 合同动态条款 + + // TODO 未确认字段 + @Schema(description = "是否虚拟合同;与ERP(SFXNHT)对应") + @ExcelProperty("是否虚拟合同;与ERP(SFXNHT)对应") + private String contractVirtual; + + @Schema(description = "补充协议类型;变更协议/增加条款", example = "1") + @ExcelProperty("补充协议类型;变更协议/增加条款") + private String replenishAgreementType; + + @Schema(description = "建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填") + @ExcelProperty("建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填") + private String architectureServicePlace; + + @Schema(description = "达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") + @ExcelProperty("达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") + private BigDecimal payeeConditionAmount; +} \ No newline at end of file diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contractorder/ContractOrderController.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contractorder/ContractOrderController.java index 10748eb6..aa116665 100644 --- a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contractorder/ContractOrderController.java +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/controller/admin/contractorder/ContractOrderController.java @@ -1,12 +1,13 @@ package cn.iocoder.yudao.module.contractorder.controller.admin.contractorder; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; + import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; /** diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/dataobject/contract/ContractDetailDO.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/dataobject/contract/ContractDetailDO.java new file mode 100644 index 00000000..2dd8e3fd --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/dataobject/contract/ContractDetailDO.java @@ -0,0 +1,76 @@ +package cn.iocoder.yudao.module.contractorder.dal.dataobject.contract; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; +import java.math.BigDecimal; + +/** + * 合同明细 DO + * + * @author 后台管理 + */ +@TableName("bse_ctrt_dtl") +@KeySequence("bse_ctrt_dtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** + * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO + */ +public class ContractDetailDO extends BusinessBaseDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 合同主信息主键 + */ + @TableField("CTRT_MAIN_ID") + private Long contractMainId; + /** + * 物料名称 + */ + @TableField("MTRL_NAME") + private String materialName; + /** + * 物料编码 + */ + @TableField("MTRL_NUM") + private String materialNumber; + /** + * 数量 + */ + @TableField("QTY") + private BigDecimal quantity; + /** + * 计量单位 + */ + @TableField("UNT") + private String unit; + /** + * 含税单价 + */ + @TableField("IN_TAX_UPRC") + private BigDecimal inTaxUnitPrice; + /** + * 金属元素缩写 + */ + @TableField("ELEM_ABBR") + private String elementAbbreviation; + /** + * 金属元素名称 + */ + @TableField("ELEM_NAME") + private String elementName; + /** + * 金属元素编码 + */ + @TableField("ELEM_NUM") + private String elementNumber; +} diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/dataobject/contract/ContractMainDO.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/dataobject/contract/ContractMainDO.java new file mode 100644 index 00000000..0f21de7f --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/dataobject/contract/ContractMainDO.java @@ -0,0 +1,273 @@ +package cn.iocoder.yudao.module.contractorder.dal.dataobject.contract; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 合同主信息 DO + * + * @author 后台管理 + */ +@TableName("bse_ctrt_main") +@KeySequence("bse_ctrt_main_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** + * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO + */ +public class ContractMainDO extends BusinessBaseDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 模板实例主键 + */ + @TableField("INSC_ID") + private Long instanceId; + /** + * 系统合同编号;自动生成,校验唯一 + */ + @TableField("SYS_CTRT_NUM") + private String systemContractNumber; + /** + * 状态 + */ + @TableField("STS") + private String status; + /** + * 合同名称;与ERP(HTMC)对应,校验唯一 + */ + @TableField("CTRT_NAME") + private String contractName; + /** + * 合同编号;与ERP(HTBH)对应,校验唯一 + */ + @TableField("CTRT_PPR_NUM") + private String contractPaperNumber; + /** + * 是否虚拟合同;与ERP(SFXNHT)对应 + */ + @TableField("CTRT_VRTL") + private String contractVirtual; + /** + * 是否先款后货 + */ + @TableField("HS_PYBL") + private String hasPayable; + /** + * 收支性质;与ERP(SZXZ)对应 + */ + @TableField("DRCT") + private String direction; + /** + * 合同类型 + */ + @TableField("CTRT_TP") + private String contractType; + /** + * 签署日期;与ERP(HTQDRQ)对应 + */ + @TableField("SGN_DT") + private LocalDateTime signDate; + /** + * 开始日期;与ERP(HTQSRQ)对应 + */ + @TableField("STRT_DT") + private LocalDateTime startDate; + /** + * 结束日期;与ERP(HTZZRQ)对应 + */ + @TableField("END_DT") + private LocalDateTime endDate; + /** + * 签署地 + */ + @TableField("SGN_PLCE") + private String signPlace; + /** + * 甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。 + */ + @TableField("PRCH_CPN_NUM") + private String purchaseCompanyNumber; + /** + * 甲方公司名称 + */ + @TableField("PRCH_CPN_NAME") + private String purchaseCompanyName; + /** + * 甲方地址 + */ + @TableField("PRCH_ADR") + private String purchaseAddress; + /** + * 甲方法定代表人 + */ + @TableField("PRCH_LDR") + private String purchaseLeader; + /** + * 乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。 + */ + @TableField("SALE_CPN_NUM") + private String salesCompanyNumber; + /** + * 乙方公司名称 + */ + @TableField("SALE_CPN_NAME") + private String salesCompanyName; + /** + * 乙方地址 + */ + @TableField("SALE_ADR") + private String salesAddress; + /** + * 乙方企业负责人 + */ + @TableField("SALE_PRCH_LDR") + private String salesPurchaseLeader; + /** + * 币种;与ERP(BZBH)对应 + */ + @TableField("CUR") + private String currency; + /** + * 原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额 + */ + @TableField("COO_AMT") + private BigDecimal cooAmount; + /** + * 本币金额;与ERP(HTBWBZJE)对应 + */ + @TableField("BSC_AMT") + private BigDecimal basicAmount; + /** + * 是否有履约保证金;为是,则保证金必填。 + */ + @TableField("HS_DPST") + private String hasDeposit; + /** + * 原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额 + */ + @TableField("COO_AMT_DPST") + private BigDecimal cooAmountDeposit; + /** + * 本币履约保证金;与ERP(LYBZJBGQBWB)对应 + */ + @TableField("BSC_AMT_DPST") + private BigDecimal basicAmountDeposit; + /** + * 是否有预付款;与ERP(SFYYFK)对应 + */ + @TableField("HS_PPYM") + private String hasPrepayment; + /** + * 预付款比例;与ERP(YFKBL)对应 + */ + @TableField("PPYM_RTIO") + private BigDecimal prepaymentRatio; + /** + * 预付款金额;与ERP(YFKJE)对应 + */ + @TableField("PPYM_AMT") + private BigDecimal prepaymentAmount; + /** + * 是否有质保金;与ERP(SFHZBJ)对应 + */ + @TableField("HS_QLT_AMT") + private String hasQualityAmount; + /** + * 质保金比例;与ERP(ZBJBL)对应 + */ + @TableField("QLT_RTIO") + private BigDecimal qualityRatio; + /** + * 质保金金额;与ERP(BZJJE)对应 + */ + @TableField("QLT_AMT") + private BigDecimal qualityAmount; + /** + * 补充协议类型;变更协议/增加条款 + */ + @TableField("RPL_AGR_TP") + private String replenishAgreementType; + /** + * 备注;与ERP(BZXX)对应 + */ + @TableField("RMK") + private String remark; + /** + * 施工类型编号;与ERP(HTLXBH)对应,拓展信息 + */ + @TableField("CON_TP_NUM") + private String constructionTypeNumber; + /** + * 施工类型名称;与ERP(HTLXMC)对应,拓展信息 + */ + @TableField("CON_TP_NAME") + private String constructionTypeName; + /** + * 代理方;与ERP(ZLIFNR)对应,拓展信息 + */ + @TableField("ZLIFNR") + private String zlifnr; + /** + * 类别;与ERP(HTLB)对应,拓展信息 + */ + @TableField("CTGR") + private String category; + /** + * 原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息 + */ + @TableField("CHG_COO_AMT") + private BigDecimal changeCooAmount; + /** + * 本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息 + */ + @TableField("CHG_BSC_AMT") + private BigDecimal changeBasicAmount; + /** + * 原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息 + */ + @TableField("CHG_COO_AMT_DPST") + private BigDecimal changeCooAmountDeposit; + /** + * 本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息 + */ + @TableField("CHG_BSC_AMT_DPST") + private BigDecimal changeBasicAmountDeposit; + /** + * 是否框架合同;与ERP(SFKJHT)对应,拓展信息 + */ + @TableField("IS_FMWK") + private String isFramework; + /** + * 境内/境外;与ERP(JNJW)对应,拓展信息 + */ + @TableField("JNJW") + private String jnjw; + /** + * 建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填 + */ + @TableField("ARCH_SVC_PLCE") + private String architectureServicePlace; + /** + * 达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填 + */ + @TableField("PYEE_CND_AMT") + private BigDecimal payeeConditionAmount; + /** + * 步骤 + */ + @TableField("STP") + private Integer step; +} \ No newline at end of file diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/dataobject/contract/ContractPlanDO.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/dataobject/contract/ContractPlanDO.java new file mode 100644 index 00000000..e8474546 --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/dataobject/contract/ContractPlanDO.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.contractorder.dal.dataobject.contract; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 交货计划条款 DO + * + * @author 后台管理 + */ +@TableName("bse_ctrt_pln") +@KeySequence("bse_ctrt_pln_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** + * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO + */ +public class ContractPlanDO extends BusinessBaseDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 合同明细主键 + */ + @TableField("CTRT_DTL_ID") + private Long contractDetailId; + /** + * 交货年份 + */ + @TableField("CTRT_DLVY_YR") + private Long contractDeliveryYear; + /** + * 交货月份 + */ + @TableField("CTRT_PLN_DLVY_MNT") + private Long contractPlanDeliveryMonth; + /** + * 计划交货数量 + */ + @TableField("CTRT_PLN_DLVY_QTY") + private BigDecimal contractPlanDeliveryQuantity; + /** + * 交货开始日期 + */ + @TableField("CTRT_DLVY_STRT_DT") + private LocalDateTime contractDeliveryStartDate; + /** + * 交货结束日期 + */ + @TableField("CTRT_DLVY_END_DT") + private LocalDateTime contractDeliveryEndDate; +} \ No newline at end of file diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/mysql/contract/ContractDetailMapper.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/mysql/contract/ContractDetailMapper.java new file mode 100644 index 00000000..71fbe573 --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/mysql/contract/ContractDetailMapper.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.module.contractorder.dal.mysql.contract; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.contractorder.dal.dataobject.contract.ContractDetailDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 合同明细 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ContractDetailMapper extends BaseMapperX { +} \ No newline at end of file diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/mysql/contract/ContractMainMapper.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/mysql/contract/ContractMainMapper.java new file mode 100644 index 00000000..9dd2903c --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/dal/mysql/contract/ContractMainMapper.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.contractorder.dal.mysql.contract; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractPageReqVO; +import cn.iocoder.yudao.module.contractorder.dal.dataobject.contract.ContractMainDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 合同主信息 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ContractMainMapper extends BaseMapperX { + default PageResult selectContractPage(ContractPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ContractMainDO::getContractName, reqVO.getContractName()) + .eqIfPresent(ContractMainDO::getContractPaperNumber, reqVO.getContractPaperNumber()) + .eqIfPresent(ContractMainDO::getDirection, reqVO.getDirection()) + .betweenIfPresent(ContractMainDO::getSignDate, reqVO.getSignDate()) + .likeIfPresent(ContractMainDO::getPurchaseCompanyName, reqVO.getPurchaseCompanyName()) + .eqIfPresent(ContractMainDO::getBasicAmount, reqVO.getBasicAmount()) + .orderByDesc(ContractMainDO::getCreateTime)); + } +} \ No newline at end of file diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/service/contract/ContractService.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/service/contract/ContractService.java new file mode 100644 index 00000000..a1c42e72 --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/service/contract/ContractService.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.contractorder.service.contract; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractPageReqVO; +import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractSaveReqVO; +import cn.iocoder.yudao.module.contractorder.dal.dataobject.contract.ContractMainDO; +import jakarta.validation.Valid; + +/** + * 后台合同编制 Service 接口 + * + * @author ZT + */ +public interface ContractService { + + /** + * 获得合同分页列表 + * + * @param pageReqVO 分页条件 + * @return 分页列表 + */ + PageResult getContractPage(@Valid ContractPageReqVO pageReqVO); + + /** + * 新增合同 + * + * @param reqVO 用户信息 + * @return 合同ID + */ + Long createContract(@Valid ContractSaveReqVO reqVO); +} diff --git a/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/service/contract/ContractServiceImpl.java b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/service/contract/ContractServiceImpl.java new file mode 100644 index 00000000..77f25322 --- /dev/null +++ b/yudao-module-contract-order/yudao-module-contract-order-server/src/main/java/cn/iocoder/yudao/module/contractorder/service/contract/ContractServiceImpl.java @@ -0,0 +1,113 @@ +package cn.iocoder.yudao.module.contractorder.service.contract; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.tenant.core.context.CompanyContextHolder; +import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractPageReqVO; +import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractSaveReqVO; +import cn.iocoder.yudao.module.contractorder.dal.dataobject.contract.ContractMainDO; +import cn.iocoder.yudao.module.contractorder.dal.mysql.contract.ContractMainMapper; +import cn.iocoder.yudao.module.contractorder.enums.contract.ContractStatusEnum; +import cn.iocoder.yudao.module.contractorder.enums.contract.DateConstants; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.contractorder.enums.ErrorCodeConstants.*; + +/** + * 后台合同编制 Service 实现类 + * + * @author ZT + */ +@Slf4j +@Service +public class ContractServiceImpl implements ContractService { + + @Resource + private ContractMainMapper contractMainMapper; + + @Override + public PageResult getContractPage(ContractPageReqVO pageReqVO) { + return contractMainMapper.selectContractPage(pageReqVO); + } + + @Override + public Long createContract(ContractSaveReqVO reqVO) { + + // 校验合同名称是否存在 + ContractMainDO contract = contractMainMapper.selectOne("CTRT_NAME", reqVO.getContractName()); + if (contract != null) { + throw exception(CONTRACT_NAME_EXISTS); + } + + if (StringUtils.isNotEmpty(reqVO.getContractPaperNumber())) { + // 校验合同编号是否存在 + contract = contractMainMapper.selectOne("CTRT_PPR_NUM", reqVO.getContractPaperNumber()); + if (contract != null) { + throw exception(CONTRACT_PAPER_NUMBER_EXISTS); + } + } + + // 合同主信息 + ContractMainDO contractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class); + // 合同状态保存为草稿 + contractMainDO.setStatus(ContractStatusEnum.DRAFT.getCode()); + // 生成系统合同编号 + contractMainDO.setSystemContractNumber(generateSystemContractNumber(reqVO.getContractType())); + + // 保存合同主信息 + contractMainMapper.insert(contractMainDO); + + System.out.println(contractMainDO); + return contractMainDO.getId(); + } + + /** + * 生成系统合同编号 + * + * 单据号生成规则说明 + * 单据名称(拼音)-类型-公司编码-年月日-六位编号 + * 如请款单: QKD-ZGQK-3000-20250915-00001 + * + * @param contractType 合同类型 + * + * @return 系统合同编号 + */ + private String generateSystemContractNumber(String contractType) { + + // 单据名称(拼音) + String documentName = "XTHT"; + // 公司编码 + String companyId = CompanyContextHolder.getCompanyId().toString(); + // 年月日 + String yearMounth8Bit = LocalDate.now() + .format(DateTimeFormatter.ofPattern(DateConstants.DATE_FORMAT_YEAR_MONTH_DAY_8_BIT)); + // 查询最大编号 + String numPrefix = documentName+"-"+contractType+"-"+companyId+"-"+yearMounth8Bit; + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.likeRight("SYS_CTRT_NUM", numPrefix); + queryWrapper.orderByDesc("SYS_CTRT_NUM"); + queryWrapper.last("limit 1"); + ContractMainDO contract = contractMainMapper.selectOne(queryWrapper); + // 获取最大的6位编号+1作为生成的编号 + String num = null; + if (contract == null) { + num = "000001"; + } else { + String[] systemContractNumberSplit = contract.getSystemContractNumber().split("-"); + int numInt = Integer.parseInt(systemContractNumberSplit[systemContractNumberSplit.length - 1]) + 1; + if (numInt > 999999) { + throw exception(CONTRACT_NUM_TRANSFINITE); + } + num = String.format("%06d", numInt); + } + return numPrefix + "-" + num; + } +} diff --git a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java new file mode 100644 index 00000000..506f8a23 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.erp.enums; +import cn.iocoder.yudao.framework.common.exception.ErrorCode;// TODO 待办:请将下面的错误码复制到 yudao-module-sply 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! +// ========== ERP客商主数据 TODO 补充编号 ========== + +public interface ErrorCodeConstants { + + // ========== 示例模块 1-001-000-000 ========== + ErrorCode ERP_CUSTOMER_NOT_EXISTS = new ErrorCode(1_001_000_001, "ERP客商主数据不存在"); + ErrorCode ERP_MATERIAL_NOT_EXISTS = new ErrorCode(1_001_000_002, "ERP物料数据不存在"); + ErrorCode ERP_COMPANY_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_BOM_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_BOM_DETAIL_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_PROCESS_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_PROCESS_DETAIL_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_FACTORY_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_COSTCENTER_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_PRODUCTIVE_VERSION_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_PURCHASE_ORGANIZATION_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_INTERNAL_ORDER_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_SALES_ORGANIZATION_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_WAREHOUSE_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_ASSET_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_CONTRACT_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_PRODUCTIVE_ORDER_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/ErpServerApplication.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/ErpServerApplication.java new file mode 100644 index 00000000..20b12f49 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/ErpServerApplication.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.module.erp; + +import org.springframework.boot.SpringApplication; + +/** + * ContractOrder 模块的启动类 + * + * @author ZT + */ +//@SpringBootApplication +public class ErpServerApplication { + + public static void main(String[] args) { + SpringApplication.run(ErpServerApplication.class, args); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/ErpConfig.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/ErpConfig.java new file mode 100644 index 00000000..639f86b3 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/ErpConfig.java @@ -0,0 +1,167 @@ +package cn.iocoder.yudao.module.erp.common.conf; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +import java.util.*; +import java.util.stream.Collectors; + +import static dm.jdbc.util.DriverUtil.log; + +@Configuration +public class ErpConfig { + + @Value("${erp.address}") + private String erpAddress; + + @Value("${erp.sapsys}") + private String sapsys; + + @Resource + private RedisTemplate redisTemplate; + + + /** + * 调用ERP接口获取公司数据 + */ + public JSONArray fetchDataFromERP(String funcnr, Map req) { + try { + // 构建完整URL + String url = "http://" + erpAddress + "/api/rfc/get"; + // 构建请求参数 + JSONObject requestBody = new JSONObject(); + requestBody.put("sapsys", sapsys); + requestBody.put("funcnr", funcnr); // 获取枚举值 + if (req != null) { + requestBody.put("req", req); + } + + // 设置请求头 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + // 创建HTTP请求实体 + HttpEntity requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers); + + // 发送POST请求 + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); + + // 解析响应结果 + String responseBody = response.getBody(); + if (responseBody.isEmpty()) { + log.warn("无所选条件的查询数据"+req); + } + + JSONObject jsonResponse = JSON.parseObject(responseBody); + if (jsonResponse == null) { + log.warn("ERP接口响应无法解析为JSON"); + } + + // 正确获取E_DATA数组 + JSONObject dataObject = jsonResponse.getJSONObject("data"); + if (dataObject != null && "S".equals(dataObject.getString("E_FLAG"))) { + return dataObject.getJSONArray("E_DATA"); + } else { + log.warn("ERP接口调用失败或返回错误标志"); + return null; + } + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + return null; + } + } + + + public Map> numbers(JSONArray dataArray, String key,String dataKey) { + // 使用 Redis 获取缓存数据 + Map> numbers = new HashMap<>(); + List cachedNumbers = (List) redisTemplate.opsForValue().get(key); + if (cachedNumbers == null) { + cachedNumbers = new ArrayList<>(); + } + + // 提取有效的 BUKRS 编号 + List existingNumbers = new ArrayList<>(); + if (dataArray != null) { + // 将dataKey按"-"分割成多个部分 + String[] keyParts = dataKey.split("-"); + existingNumbers = dataArray.stream() + .filter(Objects::nonNull) + .map(dataJson -> { + JSONObject jsonObject = (JSONObject) dataJson; + // 根据每个部分逐级获取值并拼接 + StringBuilder sb = new StringBuilder(); + for (String part : keyParts) { + String value = jsonObject.getString(part); + if (value != null) { + if (sb.length() > 0) { + sb.append("-"); + } + sb.append(value.trim()); + } else { + // 如果某一部分为空,则整个值视为无效 + return null; + } + } + return sb.toString(); + }) + .filter(Objects::nonNull) // 过滤掉无效值 + .collect(Collectors.toList()); + } + + // 找出共同存在的编号 + Set cachedNumberSet = new HashSet<>(cachedNumbers != null ? cachedNumbers : new ArrayList<>()); + List commonNumbers = existingNumbers.stream() + .filter(cachedNumberSet::contains) + .collect(Collectors.toList()); + numbers.put("com", commonNumbers); + + List newNumbers = existingNumbers.stream() + .filter(num -> !cachedNumberSet.contains(num)) + .collect(Collectors.toList()); + + // 合并所有编号 + List allNumbers = new ArrayList<>(cachedNumbers); + allNumbers.addAll(newNumbers); + numbers.put("all", allNumbers); + return numbers; + } + + public void updateRedisCache(String key, List allnumbers) { + // 使用 Redis 更新缓存数据 + redisTemplate.opsForValue().set(key, allnumbers); + } + + public List getRedisCache(String key) { + // 使用 Redis 更新缓存数据 + return (List)redisTemplate.opsForValue().get("erp"+key); + } + + + public Map numbersMap(String key) { + // 使用 Redis 获取缓存数据 + Map result = (Map) redisTemplate.opsForValue().get(key); + return result; + } + +// public void updateRedisCache(String key, List allnumbers) { +// // 使用 Redis 更新缓存数据 +// redisTemplate.opsForValue().set(key, allnumbers); +// } +// +// public List getRedisCache(String key) { +// // 使用 Redis 更新缓存数据 +// return (List)redisTemplate.opsForValue().get("erp"+key); +// } +} diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/MyRedisConfig.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/MyRedisConfig.java new file mode 100644 index 00000000..d8dfa42f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/MyRedisConfig.java @@ -0,0 +1,165 @@ +package cn.iocoder.yudao.module.erp.common.conf; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; +//import redis.clients.jedis.JedisPoolConfig; + + +/** + * @author wuxz + * @create 2022-06-07 20:54 + */ +@Primary +@Configuration +public class MyRedisConfig { + +/* + @Value("${spring.redis.database}") + private Integer database; + + @Value("${spring.redis.host}") + private String host; + + @Value("${spring.redis.port}") + private Integer port; + + @Value("${spring.redis.password}") + private String password; + + @Value("${spring.redis.jedis.pool.max-idle}") + private Integer max_idle; + + @Value("${spring.redis.jedis.pool.min-idle}") + private Integer min_idle; + + @Value("${spring.redis.jedis.pool.max-active}") + private Integer max_active; + + @Value("${spring.redis.jedis.pool.max-wait}") + private Integer max_wait; +*/ + + + + + + @Bean(value = "MyRedisTemplate") + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(redisConnectionFactory); + + // 通过 Jackson 组件进行序列化 + RedisSerializer serializer = redisSerializer(); + + // key 和 value + // 一般来说, redis-key采用字符串序列化; + // redis-value采用json序列化, json的体积小,可读性高,不需要实现serializer接口。 + redisTemplate.setKeySerializer(new StringRedisSerializer()); + redisTemplate.setValueSerializer(serializer); + + redisTemplate.setHashKeySerializer(new StringRedisSerializer()); + redisTemplate.setHashValueSerializer(serializer); + + redisTemplate.afterPropertiesSet(); + return redisTemplate; + } + + + @Bean + public RedisSerializer redisSerializer() { + //创建JSON序列化器 + Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<>(Object.class); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + // objectMapper.enableDefaultTyping()被弃用 + objectMapper.activateDefaultTyping( + LaissezFaireSubTypeValidator.instance, + ObjectMapper.DefaultTyping.NON_FINAL, + JsonTypeInfo.As.WRAPPER_ARRAY); + serializer.setObjectMapper(objectMapper); + return serializer; + } + + + + + +// @Bean +// public JedisPoolConfig jedisPoolConfig() { +// JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); +// //最小空闲连接数 +// jedisPoolConfig.setMinIdle(min_idle); +// jedisPoolConfig.setMaxIdle(max_idle); +// jedisPoolConfig.setMaxTotal(max_active); +// //当池内没有可用的连接时,最大等待时间 +// jedisPoolConfig.setMaxWaitMillis(max_wait); +// //------其他属性根据需要自行添加------------- +// return jedisPoolConfig; +// } +// +// +// /** +// * jedis连接工厂 +// * @param jedisPoolConfig +// * @return +// */ +// @Bean +// public RedisConnectionFactory redisConnectionFactory(JedisPoolConfig jedisPoolConfig) { +// //单机版jedis +// RedisStandaloneConfiguration redisStandaloneConfiguration = +// new RedisStandaloneConfiguration(); +// //设置redis服务器的host或者ip地址 +// redisStandaloneConfiguration.setHostName(host); +// //设置默认使用的数据库 +// redisStandaloneConfiguration.setDatabase(database); +// //设置密码 +// redisStandaloneConfiguration.setPassword(password); +// //设置redis的服务的端口号 +// redisStandaloneConfiguration.setPort(port); +// //获得默认的连接池构造器 +// JedisClientConfiguration.JedisPoolingClientConfigurationBuilder jc = +// (JedisClientConfiguration.JedisPoolingClientConfigurationBuilder)JedisClientConfiguration.builder(); +// //指定jedisPoolConifig +// jc.poolConfig(jedisPoolConfig); +// //通过构造器来构造jedis客户端配置 +// JedisClientConfiguration jedisClientConfiguration = jc.build(); +// return new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration); +// } +// +// +// @Bean +// @ConditionalOnMissingBean(name = {"redisTemplate"}) +// public RedisTemplate redisTemplate(JedisConnectionFactory jedisConnectionFactory){ +// RedisTemplate redisTemplate = new RedisTemplate<>(); +// redisTemplate.setKeySerializer(new StringRedisSerializer()); +// redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); +// redisTemplate.setConnectionFactory(jedisConnectionFactory); +// return redisTemplate; +// } + + + /** + * 序列化乱码问题解决 + */ +// @Bean +// public RedisTemplate redisTemplate(JedisConnectionFactory jedisConnectionFactory){ +// RedisTemplate redisTemplate = new RedisTemplate<>(); +// redisTemplate.setKeySerializer(new StringRedisSerializer()); +// redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); +// redisTemplate.setConnectionFactory(jedisConnectionFactory); +// return redisTemplate; +// } + + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/enums/OftenEnum.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/enums/OftenEnum.java new file mode 100644 index 00000000..8754f98a --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/enums/OftenEnum.java @@ -0,0 +1,72 @@ +package cn.iocoder.yudao.module.erp.common.enums; + +import lombok.Data; + +/** + * @ClassName oftenEnum + * @Description TODO + * @Author chen + * @Date 2023/9/5 + **/ +@Data +public class OftenEnum { + + //接口编号枚举 + public enum FuncnrEnum { + 公司代码("001", "BUKRS", ""), + 工厂信息("002", "WERKS", ""), + 客商信息("003", "PARTNER", "DATUM"), + 成本中心("004", "", ""), + 内部订单("005", "", ""), + 库位信息("006", "", ""), + 采购组织("007", "", ""), + 销售组织("008", "", ""), + 合同信息("009", "", ""), + 资产卡片("010", "ANLN1-BUKRS", "ERDAT"), + 库存信息("011", "", ""), + 辅组编码("012", "", ""), + 生产订单("013", "", ""), + BOM清单("014", "MATNR-STLAL-WERKS", ""), + 工艺路线("015", "", ""), + 生产版本("016", "", ""), + 生产投料("017", "", ""), + 生产订单明细("018", "", ""), + 库存明细("019", "", ""), + 发票状态("020", "", ""), + 物料数据("021", "", "ERSDA"); + + private final String funcnr; + private final String datakey; + private final String datekey; + + FuncnrEnum(String funcnr, String datakey,String datekey) { + this.funcnr = funcnr; + this.datakey = datakey; + this.datekey = datekey; + } + + public String getFuncnr() { + return funcnr; + } + + public String getDatakey() { + return datakey; + } + + public String getDatekey() { + return datekey; + } + } + + //接口编号枚举 + public enum ModeTypeEnum { + 供应商("K"), + 客户("D"); + + public String modetype = null; + + ModeTypeEnum(String modetype) { + this.modetype = modetype; + } + } +} diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticstask.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticstask.java new file mode 100644 index 00000000..ed38050c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticstask.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.erp.common.task; + +import cn.iocoder.yudao.module.erp.service.erp.ErpCompanyService; +import jakarta.annotation.Resource; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.transaction.annotation.Transactional; + +/** + * @ClassName energyTask + * @Description TODO + * @Author chen + * @Date 2023/9/25 + **/ +@Configuration +@EnableScheduling +public class statisticstask { + + @Resource + private ErpCompanyService erpCompanyService; + + //能源定时每日获取成本配置机台水电数据 + @Scheduled(cron = "0 0 12 * * ?") + @Transactional + public void erpCompany(){ + erpCompanyService.callErpRfcInterface(); + } + + + +} diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpAssetController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpAssetController.java new file mode 100644 index 00000000..705d71c1 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpAssetController.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpAssetDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpAssetService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP资产卡片") +@RestController +@RequestMapping("/sply/erp-asset") +@Validated +public class ErpAssetController { + + + @Resource + private ErpAssetService erpAssetService; + + @PostMapping("/create") + @Operation(summary = "创建ERP资产卡片") + @PreAuthorize("@ss.hasPermission('sply:erp-asset:create')") + public CommonResult createErpAsset(@Valid @RequestBody ErpAssetSaveReqVO createReqVO) { + return success(erpAssetService.createErpAsset(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP资产卡片") + @PreAuthorize("@ss.hasPermission('sply:erp-asset:update')") + public CommonResult updateErpAsset(@Valid @RequestBody ErpAssetSaveReqVO updateReqVO) { + erpAssetService.updateErpAsset(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP资产卡片") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-asset:delete')") + public CommonResult deleteErpAsset(@RequestParam("id") Long id) { + erpAssetService.deleteErpAsset(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP资产卡片") + @PreAuthorize("@ss.hasPermission('sply:erp-asset:delete')") + public CommonResult deleteErpAssetList(@RequestBody BatchDeleteReqVO req) { + erpAssetService.deleteErpAssetListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP资产卡片") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-asset:query')") + public CommonResult getErpAsset(@RequestParam("id") Long id) { + ErpAssetDO erpAsset = erpAssetService.getErpAsset(id); + return success(BeanUtils.toBean(erpAsset, ErpAssetRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP资产卡片分页") + @PreAuthorize("@ss.hasPermission('sply:erp-asset:query')") + public CommonResult> getErpAssetPage(@Valid ErpAssetPageReqVO pageReqVO) { + PageResult pageResult = erpAssetService.getErpAssetPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpAssetRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP资产卡片 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-asset:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpAssetExcel(@Valid ErpAssetPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpAssetService.getErpAssetPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP资产卡片.xls", "数据", ErpAssetRespVO.class, + BeanUtils.toBean(list, ErpAssetRespVO.class)); + } + + @PostMapping("/getErpAssetTask") + @Operation(summary = "定时获得erp更新资产卡片") + @PreAuthorize("@ss.hasPermission('sply:erp-asset:query')") + public void getErpCompanyTask() { + erpAssetService.callErpRfcInterface(); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomController.java new file mode 100644 index 00000000..34c0b68d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomController.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpBomService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP物料清单(BOM)") +@RestController +@RequestMapping("/sply/erp-bom") +@Validated +public class ErpBomController { + + + @Resource + private ErpBomService erpBomService; + + @PostMapping("/create") + @Operation(summary = "创建ERP物料清单(BOM)") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:create')") + public CommonResult createErpBom(@Valid @RequestBody ErpBomSaveReqVO createReqVO) { + return success(erpBomService.createErpBom(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP物料清单(BOM)") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:update')") + public CommonResult updateErpBom(@Valid @RequestBody ErpBomSaveReqVO updateReqVO) { + erpBomService.updateErpBom(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP物料清单(BOM)") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-bom:delete')") + public CommonResult deleteErpBom(@RequestParam("id") Long id) { + erpBomService.deleteErpBom(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP物料清单(BOM)") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:delete')") + public CommonResult deleteErpBomList(@RequestBody BatchDeleteReqVO req) { + erpBomService.deleteErpBomListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP物料清单(BOM)") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:query')") + public CommonResult getErpBom(@RequestParam("id") Long id) { + ErpBomDO erpBom = erpBomService.getErpBom(id); + return success(BeanUtils.toBean(erpBom, ErpBomRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP物料清单(BOM)分页") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:query')") + public CommonResult> getErpBomPage(@Valid ErpBomPageReqVO pageReqVO) { + PageResult pageResult = erpBomService.getErpBomPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpBomRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP物料清单(BOM) Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpBomExcel(@Valid ErpBomPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpBomService.getErpBomPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP物料清单(BOM).xls", "数据", ErpBomRespVO.class, + BeanUtils.toBean(list, ErpBomRespVO.class)); + } + + @PostMapping("/getErpBomTask") + @Operation(summary = "定时获得erp更新物料清单(BOM)") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:query')") + public void getErpBomTask() { + erpBomService.callErpRfcInterface(); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomDetailController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomDetailController.java new file mode 100644 index 00000000..1e6768e3 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomDetailController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpBomDetailService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP物料清单(BOM)明细") +@RestController +@RequestMapping("/sply/erp-bom-detail") +@Validated +public class ErpBomDetailController { + + + @Resource + private ErpBomDetailService erpBomDetailService; + + @PostMapping("/create") + @Operation(summary = "创建ERP物料清单(BOM)明细") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:create')") + public CommonResult createErpBomDetail(@Valid @RequestBody ErpBomDetailSaveReqVO createReqVO) { + return success(erpBomDetailService.createErpBomDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP物料清单(BOM)明细") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:update')") + public CommonResult updateErpBomDetail(@Valid @RequestBody ErpBomDetailSaveReqVO updateReqVO) { + erpBomDetailService.updateErpBomDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP物料清单(BOM)明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:delete')") + public CommonResult deleteErpBomDetail(@RequestParam("id") Long id) { + erpBomDetailService.deleteErpBomDetail(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP物料清单(BOM)明细") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:delete')") + public CommonResult deleteErpBomDetailList(@RequestBody BatchDeleteReqVO req) { + erpBomDetailService.deleteErpBomDetailListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP物料清单(BOM)明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:query')") + public CommonResult getErpBomDetail(@RequestParam("id") Long id) { + ErpBomDetailDO erpBomDetail = erpBomDetailService.getErpBomDetail(id); + return success(BeanUtils.toBean(erpBomDetail, ErpBomDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP物料清单(BOM)明细分页") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:query')") + public CommonResult> getErpBomDetailPage(@Valid ErpBomDetailPageReqVO pageReqVO) { + PageResult pageResult = erpBomDetailService.getErpBomDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpBomDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP物料清单(BOM)明细 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpBomDetailExcel(@Valid ErpBomDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpBomDetailService.getErpBomDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP物料清单(BOM)明细.xls", "数据", ErpBomDetailRespVO.class, + BeanUtils.toBean(list, ErpBomDetailRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java new file mode 100644 index 00000000..07474b0e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java @@ -0,0 +1,113 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanySaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCompanyDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpCompanyService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP公司") +@RestController +@RequestMapping("/sply/erp-company") +@Validated +public class ErpCompanyController { + + + @Resource + private ErpCompanyService erpCompanyService; + + @PostMapping("/create") + @Operation(summary = "创建ERP公司") + @PreAuthorize("@ss.hasPermission('sply:erp-company:create')") + public CommonResult createErpCompany(@Valid @RequestBody ErpCompanySaveReqVO createReqVO) { + return success(erpCompanyService.createErpCompany(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP公司") + @PreAuthorize("@ss.hasPermission('sply:erp-company:update')") + public CommonResult updateErpCompany(@Valid @RequestBody ErpCompanySaveReqVO updateReqVO) { + erpCompanyService.updateErpCompany(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP公司") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-company:delete')") + public CommonResult deleteErpCompany(@RequestParam("id") Long id) { + erpCompanyService.deleteErpCompany(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP公司") + @PreAuthorize("@ss.hasPermission('sply:erp-company:delete')") + public CommonResult deleteErpCompanyList(@RequestBody BatchDeleteReqVO req) { + erpCompanyService.deleteErpCompanyListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP公司") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-company:query')") + public CommonResult getErpCompany(@RequestParam("id") Long id) { + ErpCompanyDO erpCompany = erpCompanyService.getErpCompany(id); + return success(BeanUtils.toBean(erpCompany, ErpCompanyRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP公司分页") + @PreAuthorize("@ss.hasPermission('sply:erp-company:query')") + public CommonResult> getErpCompanyPage(@Valid ErpCompanyPageReqVO pageReqVO) { + PageResult pageResult = erpCompanyService.getErpCompanyPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpCompanyRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP公司 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-company:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpCompanyExcel(@Valid ErpCompanyPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpCompanyService.getErpCompanyPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP公司.xls", "数据", ErpCompanyRespVO.class, + BeanUtils.toBean(list, ErpCompanyRespVO.class)); + } + + @PostMapping("/getErpCompanyTask") + @Operation(summary = "定时获得erp更新公司") + @PreAuthorize("@ss.hasPermission('sply:erp-company:query')") + public void getErpCompanyTask() { + erpCompanyService.callErpRfcInterface(); + } + + + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpContractController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpContractController.java new file mode 100644 index 00000000..14c9ef5d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpContractController.java @@ -0,0 +1,110 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpContractDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpContractService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP合同映射") +@RestController +@RequestMapping("/bse/erp-contract") +@Validated +public class ErpContractController { + + + @Resource + private ErpContractService erpContractService; + + @PostMapping("/create") + @Operation(summary = "创建ERP合同映射") + @PreAuthorize("@ss.hasPermission('bse:erp-contract:create')") + public CommonResult createErpContract(@Valid @RequestBody ErpContractSaveReqVO createReqVO) { + return success(erpContractService.createErpContract(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP合同映射") + @PreAuthorize("@ss.hasPermission('bse:erp-contract:update')") + public CommonResult updateErpContract(@Valid @RequestBody ErpContractSaveReqVO updateReqVO) { + erpContractService.updateErpContract(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP合同映射") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('bse:erp-contract:delete')") + public CommonResult deleteErpContract(@RequestParam("id") Long id) { + erpContractService.deleteErpContract(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP合同映射") + @PreAuthorize("@ss.hasPermission('bse:erp-contract:delete')") + public CommonResult deleteErpContractList(@RequestBody BatchDeleteReqVO req) { + erpContractService.deleteErpContractListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP合同映射") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('bse:erp-contract:query')") + public CommonResult getErpContract(@RequestParam("id") Long id) { + ErpContractDO erpContract = erpContractService.getErpContract(id); + return success(BeanUtils.toBean(erpContract, ErpContractRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP合同映射分页") + @PreAuthorize("@ss.hasPermission('bse:erp-contract:query')") + public CommonResult> getErpContractPage(@Valid ErpContractPageReqVO pageReqVO) { + PageResult pageResult = erpContractService.getErpContractPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpContractRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP合同映射 Excel") + @PreAuthorize("@ss.hasPermission('bse:erp-contract:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpContractExcel(@Valid ErpContractPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpContractService.getErpContractPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP合同映射.xls", "数据", ErpContractRespVO.class, + BeanUtils.toBean(list, ErpContractRespVO.class)); + } + + @PostMapping("/getErpContractTask") + @Operation(summary = "定时获得erp更新合同") + @PreAuthorize("@ss.hasPermission('sply:erp-contract:query')") + public void getErpContractTask() { + erpContractService.callErpRfcInterface(); + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpController.java deleted file mode 100644 index ae7d537c..00000000 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpController.java +++ /dev/null @@ -1,35 +0,0 @@ -package cn.iocoder.yudao.module.erp.controller.admin.erp; - -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import cn.iocoder.yudao.framework.common.pojo.CommonResult; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; - -/** - * ERP 控制器 - * - * @author ERP Module - */ -@Tag(name = "管理后台 - ERP") -@RestController -@RequestMapping("/admin/erp/erp") -public class ErpController { - - @GetMapping("/hello") - @Operation(summary = "Hello ERP") - public CommonResult hello() { - return success("Hello, ERP!"); - } - - @GetMapping("/info") - @Operation(summary = "ERP 模块信息") - public CommonResult info() { - return success("ERP 模块已成功创建并运行"); - } - -} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCostcenterController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCostcenterController.java new file mode 100644 index 00000000..ef1c613b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCostcenterController.java @@ -0,0 +1,112 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCostcenterDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpCostcenterService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP成本中心") +@RestController +@RequestMapping("/sply/erp-costcenter") +@Validated +public class ErpCostcenterController { + + + @Resource + private ErpCostcenterService erpCostcenterService; + + @PostMapping("/create") + @Operation(summary = "创建ERP成本中心") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:create')") + public CommonResult createErpCostcenter(@Valid @RequestBody ErpCostcenterSaveReqVO createReqVO) { + return success(erpCostcenterService.createErpCostcenter(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP成本中心") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:update')") + public CommonResult updateErpCostcenter(@Valid @RequestBody ErpCostcenterSaveReqVO updateReqVO) { + erpCostcenterService.updateErpCostcenter(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP成本中心") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:delete')") + public CommonResult deleteErpCostcenter(@RequestParam("id") Long id) { + erpCostcenterService.deleteErpCostcenter(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP成本中心") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:delete')") + public CommonResult deleteErpCostcenterList(@RequestBody BatchDeleteReqVO req) { + erpCostcenterService.deleteErpCostcenterListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP成本中心") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:query')") + public CommonResult getErpCostcenter(@RequestParam("id") Long id) { + ErpCostcenterDO erpCostcenter = erpCostcenterService.getErpCostcenter(id); + return success(BeanUtils.toBean(erpCostcenter, ErpCostcenterRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP成本中心分页") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:query')") + public CommonResult> getErpCostcenterPage(@Valid ErpCostcenterPageReqVO pageReqVO) { + PageResult pageResult = erpCostcenterService.getErpCostcenterPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpCostcenterRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP成本中心 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpCostcenterExcel(@Valid ErpCostcenterPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpCostcenterService.getErpCostcenterPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP成本中心.xls", "数据", ErpCostcenterRespVO.class, + BeanUtils.toBean(list, ErpCostcenterRespVO.class)); + } + + @PostMapping("/getErpCostcenterTask") + @Operation(summary = "定时获得erp更新成本中心") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:query')") + public void getErpCostcenterTask() { + erpCostcenterService.callErpRfcInterface(); + } + + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java new file mode 100644 index 00000000..5dde0d41 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java @@ -0,0 +1,118 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpCustomerService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP客商信息") +@RestController +@RequestMapping("/sply/erp-customer") +@Validated +public class ErpCustomerController { + + + @Resource + private ErpCustomerService erpCustomerService; + + @PostMapping("/create") + @Operation(summary = "创建ERP客商主数据") + @PreAuthorize("@ss.hasPermission('sply:erp-customer:create')") + public CommonResult createErpCustomer(@Valid @RequestBody ErpCustomerSaveReqVO createReqVO) { + return success(erpCustomerService.createErpCustomer(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP客商主数据") + @PreAuthorize("@ss.hasPermission('sply:erp-customer:update')") + public CommonResult updateErpCustomer(@Valid @RequestBody ErpCustomerSaveReqVO updateReqVO) { + erpCustomerService.updateErpCustomer(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP客商主数据") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-customer:delete')") + public CommonResult deleteErpCustomer(@RequestParam("id") Long id) { + erpCustomerService.deleteErpCustomer(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP客商主数据") + @PreAuthorize("@ss.hasPermission('sply:erp-customer:delete')") + public CommonResult deleteErpCustomerList(@RequestBody BatchDeleteReqVO req) { + erpCustomerService.deleteErpCustomerListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP客商主数据") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-customer:query')") + public CommonResult getErpCustomer(@RequestParam("id") Long id) { + ErpCustomerDO erpCustomer = erpCustomerService.getErpCustomer(id); + return success(BeanUtils.toBean(erpCustomer, ErpCustomerRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP客商主数据分页") + @PreAuthorize("@ss.hasPermission('sply:erp-customer:query')") + public CommonResult> getErpCustomerPage(@Valid ErpCustomerPageReqVO pageReqVO) { + PageResult pageResult = erpCustomerService.getErpCustomerPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpCustomerRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP客商主数据 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-customer:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpCustomerExcel(@Valid ErpCustomerPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpCustomerService.getErpCustomerPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP客商主数据.xls", "数据", ErpCustomerRespVO.class, + BeanUtils.toBean(list, ErpCustomerRespVO.class)); + } + + @PostMapping("/getErpCustomerTask") + @Operation(summary = "定时获得erp更新客商主数据") + @PreAuthorize("@ss.hasPermission('sply:erp-customer:create')") + public void getErpCustomerTask() { + erpCustomerService.callErpRfcInterface(); + } + + @PostMapping("/initialize") + @Operation(summary = "把数据库数据number搞到redis") + @PreAuthorize("@ss.hasPermission('sply:erp-customer:create')") + public void initialize() { + erpCustomerService.initialize(); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpFactoryController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpFactoryController.java new file mode 100644 index 00000000..df3812f8 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpFactoryController.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactorySaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpFactoryDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpFactoryService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP工厂") +@RestController +@RequestMapping("/sply/erp-factory") +@Validated +public class ErpFactoryController { + + + @Resource + private ErpFactoryService erpFactoryService; + + @PostMapping("/create") + @Operation(summary = "创建ERP工厂") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:create')") + public CommonResult createErpFactory(@Valid @RequestBody ErpFactorySaveReqVO createReqVO) { + return success(erpFactoryService.createErpFactory(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP工厂") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:update')") + public CommonResult updateErpFactory(@Valid @RequestBody ErpFactorySaveReqVO updateReqVO) { + erpFactoryService.updateErpFactory(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP工厂") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-factory:delete')") + public CommonResult deleteErpFactory(@RequestParam("id") Long id) { + erpFactoryService.deleteErpFactory(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP工厂") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:delete')") + public CommonResult deleteErpFactoryList(@RequestBody BatchDeleteReqVO req) { + erpFactoryService.deleteErpFactoryListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP工厂") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:query')") + public CommonResult getErpFactory(@RequestParam("id") Long id) { + ErpFactoryDO erpFactory = erpFactoryService.getErpFactory(id); + return success(BeanUtils.toBean(erpFactory, ErpFactoryRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP工厂分页") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:query')") + public CommonResult> getErpFactoryPage(@Valid ErpFactoryPageReqVO pageReqVO) { + PageResult pageResult = erpFactoryService.getErpFactoryPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpFactoryRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP工厂 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpFactoryExcel(@Valid ErpFactoryPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpFactoryService.getErpFactoryPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP工厂.xls", "数据", ErpFactoryRespVO.class, + BeanUtils.toBean(list, ErpFactoryRespVO.class)); + } + + @PostMapping("/getErpFactoryTask") + @Operation(summary = "定时获得erp工厂数据") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:create')") + public void getErpFactoryTask() { + erpFactoryService.callErpRfcInterface(); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpInternalOrderController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpInternalOrderController.java new file mode 100644 index 00000000..ba7e369c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpInternalOrderController.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpInternalOrderDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpInternalOrderService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP内部订单") +@RestController +@RequestMapping("/sply/erp-internal-order") +@Validated +public class ErpInternalOrderController { + + + @Resource + private ErpInternalOrderService erpInternalOrderService; + + @PostMapping("/create") + @Operation(summary = "创建ERP内部订单") + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:create')") + public CommonResult createErpInternalOrder(@Valid @RequestBody ErpInternalOrderSaveReqVO createReqVO) { + return success(erpInternalOrderService.createErpInternalOrder(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP内部订单") + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:update')") + public CommonResult updateErpInternalOrder(@Valid @RequestBody ErpInternalOrderSaveReqVO updateReqVO) { + erpInternalOrderService.updateErpInternalOrder(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP内部订单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:delete')") + public CommonResult deleteErpInternalOrder(@RequestParam("id") Long id) { + erpInternalOrderService.deleteErpInternalOrder(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP内部订单") + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:delete')") + public CommonResult deleteErpInternalOrderList(@RequestBody BatchDeleteReqVO req) { + erpInternalOrderService.deleteErpInternalOrderListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP内部订单") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:query')") + public CommonResult getErpInternalOrder(@RequestParam("id") Long id) { + ErpInternalOrderDO erpInternalOrder = erpInternalOrderService.getErpInternalOrder(id); + return success(BeanUtils.toBean(erpInternalOrder, ErpInternalOrderRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP内部订单分页") + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:query')") + public CommonResult> getErpInternalOrderPage(@Valid ErpInternalOrderPageReqVO pageReqVO) { + PageResult pageResult = erpInternalOrderService.getErpInternalOrderPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpInternalOrderRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP内部订单 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpInternalOrderExcel(@Valid ErpInternalOrderPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpInternalOrderService.getErpInternalOrderPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP内部订单.xls", "数据", ErpInternalOrderRespVO.class, + BeanUtils.toBean(list, ErpInternalOrderRespVO.class)); + } + + @PostMapping("/getErpInternalOrderTask") + @Operation(summary = "定时获得erp更新内部订单数据") + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:create')") + public void getErpInternalOrderTask() { + erpInternalOrderService.callErpRfcInterface(); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java new file mode 100644 index 00000000..2a271161 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java @@ -0,0 +1,118 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpMaterialDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpMaterialService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP物料信息") +@RestController +@RequestMapping("/sply/erp-material") +@Validated +public class ErpMaterialController { + + + @Resource + private ErpMaterialService erpMaterialService; + + @PostMapping("/create") + @Operation(summary = "创建ERP物料数据") + @PreAuthorize("@ss.hasPermission('sply:erp-material:create')") + public CommonResult createErpMaterial(@Valid @RequestBody ErpMaterialSaveReqVO createReqVO) { + return success(erpMaterialService.createErpMaterial(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP物料数据") + @PreAuthorize("@ss.hasPermission('sply:erp-material:update')") + public CommonResult updateErpMaterial(@Valid @RequestBody ErpMaterialSaveReqVO updateReqVO) { + erpMaterialService.updateErpMaterial(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP物料数据") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-material:delete')") + public CommonResult deleteErpMaterial(@RequestParam("id") Long id) { + erpMaterialService.deleteErpMaterial(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP物料数据") + @PreAuthorize("@ss.hasPermission('sply:erp-material:delete')") + public CommonResult deleteErpMaterialList(@RequestBody BatchDeleteReqVO req) { + erpMaterialService.deleteErpMaterialListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP物料数据") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-material:query')") + public CommonResult getErpMaterial(@RequestParam("id") Long id) { + ErpMaterialDO erpMaterial = erpMaterialService.getErpMaterial(id); + return success(BeanUtils.toBean(erpMaterial, ErpMaterialRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP物料数据分页") + @PreAuthorize("@ss.hasPermission('sply:erp-material:query')") + public CommonResult> getErpMaterialPage(@Valid ErpMaterialPageReqVO pageReqVO) { + PageResult pageResult = erpMaterialService.getErpMaterialPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpMaterialRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP物料数据 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-material:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpMaterialExcel(@Valid ErpMaterialPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpMaterialService.getErpMaterialPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP物料数据.xls", "数据", ErpMaterialRespVO.class, + BeanUtils.toBean(list, ErpMaterialRespVO.class)); + } + + @PostMapping("/getErpMaterialTask") + @Operation(summary = "定时获得erp更新公司") + @PreAuthorize("@ss.hasPermission('sply:erp-material:create')") + public void getErpMaterialTask() { + erpMaterialService.callErpRfcInterface(); + } + + @PostMapping("/initialize") + @Operation(summary = "把数据库数据number搞到redis") + @PreAuthorize("@ss.hasPermission('sply:erp-material:create')") + public void initialize() { + erpMaterialService.initialize(); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessController.java new file mode 100644 index 00000000..85c77c4c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessController.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpProcessService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP工艺路线") +@RestController +@RequestMapping("/sply/erp-process") +@Validated +public class ErpProcessController { + + + @Resource + private ErpProcessService erpProcessService; + + @PostMapping("/create") + @Operation(summary = "创建ERP工艺路线") + @PreAuthorize("@ss.hasPermission('sply:erp-process:create')") + public CommonResult createErpProcess(@Valid @RequestBody ErpProcessSaveReqVO createReqVO) { + return success(erpProcessService.createErpProcess(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP工艺路线") + @PreAuthorize("@ss.hasPermission('sply:erp-process:update')") + public CommonResult updateErpProcess(@Valid @RequestBody ErpProcessSaveReqVO updateReqVO) { + erpProcessService.updateErpProcess(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP工艺路线") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-process:delete')") + public CommonResult deleteErpProcess(@RequestParam("id") Long id) { + erpProcessService.deleteErpProcess(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP工艺路线") + @PreAuthorize("@ss.hasPermission('sply:erp-process:delete')") + public CommonResult deleteErpProcessList(@RequestBody BatchDeleteReqVO req) { + erpProcessService.deleteErpProcessListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP工艺路线") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-process:query')") + public CommonResult getErpProcess(@RequestParam("id") Long id) { + ErpProcessDO erpProcess = erpProcessService.getErpProcess(id); + return success(BeanUtils.toBean(erpProcess, ErpProcessRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP工艺路线分页") + @PreAuthorize("@ss.hasPermission('sply:erp-process:query')") + public CommonResult> getErpProcessPage(@Valid ErpProcessPageReqVO pageReqVO) { + PageResult pageResult = erpProcessService.getErpProcessPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpProcessRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP工艺路线 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-process:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpProcessExcel(@Valid ErpProcessPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpProcessService.getErpProcessPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP工艺路线.xls", "数据", ErpProcessRespVO.class, + BeanUtils.toBean(list, ErpProcessRespVO.class)); + } + + @PostMapping("/getErpProcessTask") + @Operation(summary = "定时获得erp更新工艺路线") + @PreAuthorize("@ss.hasPermission('sply:erp-process:create')") + public void getErpProcessTask() { + erpProcessService.callErpRfcInterface(); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessDetailController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessDetailController.java new file mode 100644 index 00000000..a7358fc9 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessDetailController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpProcessDetailService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP工艺路线明细") +@RestController +@RequestMapping("/sply/erp-process-detail") +@Validated +public class ErpProcessDetailController { + + + @Resource + private ErpProcessDetailService erpProcessDetailService; + + @PostMapping("/create") + @Operation(summary = "创建ERP工艺路线明细") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:create')") + public CommonResult createErpProcessDetail(@Valid @RequestBody ErpProcessDetailSaveReqVO createReqVO) { + return success(erpProcessDetailService.createErpProcessDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP工艺路线明细") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:update')") + public CommonResult updateErpProcessDetail(@Valid @RequestBody ErpProcessDetailSaveReqVO updateReqVO) { + erpProcessDetailService.updateErpProcessDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP工艺路线明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:delete')") + public CommonResult deleteErpProcessDetail(@RequestParam("id") Long id) { + erpProcessDetailService.deleteErpProcessDetail(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP工艺路线明细") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:delete')") + public CommonResult deleteErpProcessDetailList(@RequestBody BatchDeleteReqVO req) { + erpProcessDetailService.deleteErpProcessDetailListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP工艺路线明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:query')") + public CommonResult getErpProcessDetail(@RequestParam("id") Long id) { + ErpProcessDetailDO erpProcessDetail = erpProcessDetailService.getErpProcessDetail(id); + return success(BeanUtils.toBean(erpProcessDetail, ErpProcessDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP工艺路线明细分页") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:query')") + public CommonResult> getErpProcessDetailPage(@Valid ErpProcessDetailPageReqVO pageReqVO) { + PageResult pageResult = erpProcessDetailService.getErpProcessDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpProcessDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP工艺路线明细 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpProcessDetailExcel(@Valid ErpProcessDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpProcessDetailService.getErpProcessDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP工艺路线明细.xls", "数据", ErpProcessDetailRespVO.class, + BeanUtils.toBean(list, ErpProcessDetailRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveOrderController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveOrderController.java new file mode 100644 index 00000000..93a3ae74 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveOrderController.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveOrderDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpProductiveOrderService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP生产订单") +@RestController +@RequestMapping("/sply/erp-productive-order") +@Validated +public class ErpProductiveOrderController { + + + @Resource + private ErpProductiveOrderService erpProductiveOrderService; + + @PostMapping("/create") + @Operation(summary = "创建ERP生产订单") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:create')") + public CommonResult createErpProductiveOrder(@Valid @RequestBody ErpProductiveOrderSaveReqVO createReqVO) { + return success(erpProductiveOrderService.createErpProductiveOrder(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP生产订单") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:update')") + public CommonResult updateErpProductiveOrder(@Valid @RequestBody ErpProductiveOrderSaveReqVO updateReqVO) { + erpProductiveOrderService.updateErpProductiveOrder(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP生产订单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:delete')") + public CommonResult deleteErpProductiveOrder(@RequestParam("id") Long id) { + erpProductiveOrderService.deleteErpProductiveOrder(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP生产订单") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:delete')") + public CommonResult deleteErpProductiveOrderList(@RequestBody BatchDeleteReqVO req) { + erpProductiveOrderService.deleteErpProductiveOrderListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP生产订单") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:query')") + public CommonResult getErpProductiveOrder(@RequestParam("id") Long id) { + ErpProductiveOrderDO erpProductiveOrder = erpProductiveOrderService.getErpProductiveOrder(id); + return success(BeanUtils.toBean(erpProductiveOrder, ErpProductiveOrderRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP生产订单分页") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:query')") + public CommonResult> getErpProductiveOrderPage(@Valid ErpProductiveOrderPageReqVO pageReqVO) { + PageResult pageResult = erpProductiveOrderService.getErpProductiveOrderPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpProductiveOrderRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP生产订单 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpProductiveOrderExcel(@Valid ErpProductiveOrderPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpProductiveOrderService.getErpProductiveOrderPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP生产订单.xls", "数据", ErpProductiveOrderRespVO.class, + BeanUtils.toBean(list, ErpProductiveOrderRespVO.class)); + } + + @PostMapping("/getErpProductiveOrderTask") + @Operation(summary = "定时获得erp更新生产订单") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-order:create')") + public void getErpProductiveOrderTask() { + erpProductiveOrderService.callErpRfcInterface(); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveVersionController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveVersionController.java new file mode 100644 index 00000000..8b262996 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveVersionController.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpProductiveVersionService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP生产版本") +@RestController +@RequestMapping("/sply/erp-productive-version") +@Validated +public class ErpProductiveVersionController { + + + @Resource + private ErpProductiveVersionService erpProductiveVersionService; + + @PostMapping("/create") + @Operation(summary = "创建ERP生产版本") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:create')") + public CommonResult createErpProductiveVersion(@Valid @RequestBody ErpProductiveVersionSaveReqVO createReqVO) { + return success(erpProductiveVersionService.createErpProductiveVersion(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP生产版本") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:update')") + public CommonResult updateErpProductiveVersion(@Valid @RequestBody ErpProductiveVersionSaveReqVO updateReqVO) { + erpProductiveVersionService.updateErpProductiveVersion(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP生产版本") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:delete')") + public CommonResult deleteErpProductiveVersion(@RequestParam("id") Long id) { + erpProductiveVersionService.deleteErpProductiveVersion(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP生产版本") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:delete')") + public CommonResult deleteErpProductiveVersionList(@RequestBody BatchDeleteReqVO req) { + erpProductiveVersionService.deleteErpProductiveVersionListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP生产版本") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:query')") + public CommonResult getErpProductiveVersion(@RequestParam("id") Long id) { + ErpProductiveVersionDO erpProductiveVersion = erpProductiveVersionService.getErpProductiveVersion(id); + return success(BeanUtils.toBean(erpProductiveVersion, ErpProductiveVersionRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP生产版本分页") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:query')") + public CommonResult> getErpProductiveVersionPage(@Valid ErpProductiveVersionPageReqVO pageReqVO) { + PageResult pageResult = erpProductiveVersionService.getErpProductiveVersionPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpProductiveVersionRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP生产版本 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpProductiveVersionExcel(@Valid ErpProductiveVersionPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpProductiveVersionService.getErpProductiveVersionPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP生产版本.xls", "数据", ErpProductiveVersionRespVO.class, + BeanUtils.toBean(list, ErpProductiveVersionRespVO.class)); + } + + @PostMapping("/getErpProductiveVersionTask") + @Operation(summary = "定时获得erp更新生产版本") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:create')") + public void getErpProductiveVersionTask() { + erpProductiveVersionService.callErpRfcInterface(); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpPurchaseOrganizationController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpPurchaseOrganizationController.java new file mode 100644 index 00000000..f5c848c8 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpPurchaseOrganizationController.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpPurchaseOrganizationService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP采购组织") +@RestController +@RequestMapping("/sply/erp-purchase-organization") +@Validated +public class ErpPurchaseOrganizationController { + + + @Resource + private ErpPurchaseOrganizationService erpPurchaseOrganizationService; + + @PostMapping("/create") + @Operation(summary = "创建ERP采购组织") + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:create')") + public CommonResult createErpPurchaseOrganization(@Valid @RequestBody ErpPurchaseOrganizationSaveReqVO createReqVO) { + return success(erpPurchaseOrganizationService.createErpPurchaseOrganization(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP采购组织") + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:update')") + public CommonResult updateErpPurchaseOrganization(@Valid @RequestBody ErpPurchaseOrganizationSaveReqVO updateReqVO) { + erpPurchaseOrganizationService.updateErpPurchaseOrganization(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP采购组织") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:delete')") + public CommonResult deleteErpPurchaseOrganization(@RequestParam("id") Long id) { + erpPurchaseOrganizationService.deleteErpPurchaseOrganization(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP采购组织") + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:delete')") + public CommonResult deleteErpPurchaseOrganizationList(@RequestBody BatchDeleteReqVO req) { + erpPurchaseOrganizationService.deleteErpPurchaseOrganizationListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP采购组织") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:query')") + public CommonResult getErpPurchaseOrganization(@RequestParam("id") Long id) { + ErpPurchaseOrganizationDO erpPurchaseOrganization = erpPurchaseOrganizationService.getErpPurchaseOrganization(id); + return success(BeanUtils.toBean(erpPurchaseOrganization, ErpPurchaseOrganizationRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP采购组织分页") + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:query')") + public CommonResult> getErpPurchaseOrganizationPage(@Valid ErpPurchaseOrganizationPageReqVO pageReqVO) { + PageResult pageResult = erpPurchaseOrganizationService.getErpPurchaseOrganizationPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpPurchaseOrganizationRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP采购组织 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpPurchaseOrganizationExcel(@Valid ErpPurchaseOrganizationPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpPurchaseOrganizationService.getErpPurchaseOrganizationPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP采购组织.xls", "数据", ErpPurchaseOrganizationRespVO.class, + BeanUtils.toBean(list, ErpPurchaseOrganizationRespVO.class)); + } + + @PostMapping("/getErpPurchaseOrganizationTask") + @Operation(summary = "定时获得erp更新采购组织") + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:create')") + public void getErpPurchaseOrganizationTask() { + erpPurchaseOrganizationService.callErpRfcInterface(); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpSalesOrganizationController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpSalesOrganizationController.java new file mode 100644 index 00000000..2418fb52 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpSalesOrganizationController.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpSalesOrganizationService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP销售组织") +@RestController +@RequestMapping("/sply/erp-sales-organization") +@Validated +public class ErpSalesOrganizationController { + + + @Resource + private ErpSalesOrganizationService erpSalesOrganizationService; + + @PostMapping("/create") + @Operation(summary = "创建ERP销售组织") + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:create')") + public CommonResult createErpSalesOrganization(@Valid @RequestBody ErpSalesOrganizationSaveReqVO createReqVO) { + return success(erpSalesOrganizationService.createErpSalesOrganization(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP销售组织") + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:update')") + public CommonResult updateErpSalesOrganization(@Valid @RequestBody ErpSalesOrganizationSaveReqVO updateReqVO) { + erpSalesOrganizationService.updateErpSalesOrganization(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP销售组织") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:delete')") + public CommonResult deleteErpSalesOrganization(@RequestParam("id") Long id) { + erpSalesOrganizationService.deleteErpSalesOrganization(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP销售组织") + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:delete')") + public CommonResult deleteErpSalesOrganizationList(@RequestBody BatchDeleteReqVO req) { + erpSalesOrganizationService.deleteErpSalesOrganizationListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP销售组织") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:query')") + public CommonResult getErpSalesOrganization(@RequestParam("id") Long id) { + ErpSalesOrganizationDO erpSalesOrganization = erpSalesOrganizationService.getErpSalesOrganization(id); + return success(BeanUtils.toBean(erpSalesOrganization, ErpSalesOrganizationRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP销售组织分页") + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:query')") + public CommonResult> getErpSalesOrganizationPage(@Valid ErpSalesOrganizationPageReqVO pageReqVO) { + PageResult pageResult = erpSalesOrganizationService.getErpSalesOrganizationPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpSalesOrganizationRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP销售组织 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpSalesOrganizationExcel(@Valid ErpSalesOrganizationPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpSalesOrganizationService.getErpSalesOrganizationPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP销售组织.xls", "数据", ErpSalesOrganizationRespVO.class, + BeanUtils.toBean(list, ErpSalesOrganizationRespVO.class)); + } + + @PostMapping("/getErpSalesOrganizationTask") + @Operation(summary = "定时获得erp更新销售组织") + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:create')") + public void getErpSalesOrganizationTask() { + erpSalesOrganizationService.callErpRfcInterface(); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpWarehouseController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpWarehouseController.java new file mode 100644 index 00000000..875f296c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpWarehouseController.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehousePageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehouseRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehouseSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpWarehouseDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpWarehouseService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP库位") +@RestController +@RequestMapping("/sply/erp-warehouse") +@Validated +public class ErpWarehouseController { + + + @Resource + private ErpWarehouseService erpWarehouseService; + + @PostMapping("/create") + @Operation(summary = "创建ERP库位") + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:create')") + public CommonResult createErpWarehouse(@Valid @RequestBody ErpWarehouseSaveReqVO createReqVO) { + return success(erpWarehouseService.createErpWarehouse(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP库位") + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:update')") + public CommonResult updateErpWarehouse(@Valid @RequestBody ErpWarehouseSaveReqVO updateReqVO) { + erpWarehouseService.updateErpWarehouse(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP库位") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:delete')") + public CommonResult deleteErpWarehouse(@RequestParam("id") Long id) { + erpWarehouseService.deleteErpWarehouse(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP库位") + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:delete')") + public CommonResult deleteErpWarehouseList(@RequestBody BatchDeleteReqVO req) { + erpWarehouseService.deleteErpWarehouseListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP库位") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:query')") + public CommonResult getErpWarehouse(@RequestParam("id") Long id) { + ErpWarehouseDO erpWarehouse = erpWarehouseService.getErpWarehouse(id); + return success(BeanUtils.toBean(erpWarehouse, ErpWarehouseRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP库位分页") + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:query')") + public CommonResult> getErpWarehousePage(@Valid ErpWarehousePageReqVO pageReqVO) { + PageResult pageResult = erpWarehouseService.getErpWarehousePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpWarehouseRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP库位 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpWarehouseExcel(@Valid ErpWarehousePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpWarehouseService.getErpWarehousePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP库位.xls", "数据", ErpWarehouseRespVO.class, + BeanUtils.toBean(list, ErpWarehouseRespVO.class)); + } + + @PostMapping("/getErpWarehouseTask") + @Operation(summary = "定时获得erp更新库位") + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:create')") + public void getErpWarehouseTask() { + erpWarehouseService.callErpRfcInterface(); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetPageReqVO.java new file mode 100644 index 00000000..a596aeac --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetPageReqVO.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - ERP资产卡片分页 Request VO") +@Data +public class ErpAssetPageReqVO extends PageParam { + + @Schema(description = "公司编号") + private String companyNumber; + + @Schema(description = "资产主编码") + private String mainAssetNumber; + + @Schema(description = "记录创建日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] recordCreateDate; + + @Schema(description = "更改用户名", example = "芋艿") + private String updateUserName; + + @Schema(description = "资产类编号") + private String assetTypeNumber; + + @Schema(description = "资产类描述", example = "李四") + private String assetTypeName; + + @Schema(description = "资产资本化日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] assetDate; + + @Schema(description = "基本计量单位") + private String uom; + + @Schema(description = "数量") + private BigDecimal quantity; + + @Schema(description = "资产描述") + private String assetDescription; + + @Schema(description = "附加资产描述") + private String assetDescriptionAttach; + + @Schema(description = "折旧计算开始日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] depreciationStartDate; + + @Schema(description = "计划年使用期") + private String planYearDate; + + @Schema(description = "成本中心编码") + private String costcenterNumber; + + @Schema(description = "责任成本中心") + private String dutyCostcenterNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetRespVO.java new file mode 100644 index 00000000..53e6f709 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetRespVO.java @@ -0,0 +1,80 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - ERP资产卡片 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpAssetRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31799") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "公司编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("公司编号") + private String companyNumber; + + @Schema(description = "资产主编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("资产主编码") + private String mainAssetNumber; + + @Schema(description = "记录创建日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("记录创建日期") + private LocalDateTime recordCreateDate; + + @Schema(description = "更改用户名", example = "芋艿") + @ExcelProperty("更改用户名") + private String updateUserName; + + @Schema(description = "资产类编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("资产类编号") + private String assetTypeNumber; + + @Schema(description = "资产类描述", example = "李四") + @ExcelProperty("资产类描述") + private String assetTypeName; + + @Schema(description = "资产资本化日期") + @ExcelProperty("资产资本化日期") + private LocalDateTime assetDate; + + @Schema(description = "基本计量单位") + @ExcelProperty("基本计量单位") + private String uom; + + @Schema(description = "数量") + @ExcelProperty("数量") + private BigDecimal quantity; + + @Schema(description = "资产描述") + @ExcelProperty("资产描述") + private String assetDescription; + + @Schema(description = "附加资产描述") + @ExcelProperty("附加资产描述") + private String assetDescriptionAttach; + + @Schema(description = "折旧计算开始日期") + @ExcelProperty("折旧计算开始日期") + private LocalDateTime depreciationStartDate; + + @Schema(description = "计划年使用期") + @ExcelProperty("计划年使用期") + private String planYearDate; + + @Schema(description = "成本中心编码") + @ExcelProperty("成本中心编码") + private String costcenterNumber; + + @Schema(description = "责任成本中心") + @ExcelProperty("责任成本中心") + private String dutyCostcenterNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetSaveReqVO.java new file mode 100644 index 00000000..1cf1b97f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpAssetSaveReqVO.java @@ -0,0 +1,67 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - ERP资产卡片新增/修改 Request VO") +@Data +public class ErpAssetSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31799") + private Long id; + + @Schema(description = "公司编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "公司编号不能为空") + private String companyNumber; + + @Schema(description = "资产主编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "资产主编码不能为空") + private String mainAssetNumber; + + @Schema(description = "记录创建日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "记录创建日期不能为空") + private LocalDateTime recordCreateDate; + + @Schema(description = "更改用户名", example = "芋艿") + private String updateUserName; + + @Schema(description = "资产类编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "资产类编号不能为空") + private String assetTypeNumber; + + @Schema(description = "资产类描述", example = "李四") + private String assetTypeName; + + @Schema(description = "资产资本化日期") + private LocalDateTime assetDate; + + @Schema(description = "基本计量单位") + private String uom; + + @Schema(description = "数量") + private BigDecimal quantity; + + @Schema(description = "资产描述") + private String assetDescription; + + @Schema(description = "附加资产描述") + private String assetDescriptionAttach; + + @Schema(description = "折旧计算开始日期") + private LocalDateTime depreciationStartDate; + + @Schema(description = "计划年使用期") + private String planYearDate; + + @Schema(description = "成本中心编码") + private String costcenterNumber; + + @Schema(description = "责任成本中心") + private String dutyCostcenterNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java new file mode 100644 index 00000000..04f836fe --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)明细分页 Request VO") +@Data +public class ErpBomDetailPageReqVO extends PageParam { + + @Schema(description = "BOM主键", example = "24876") + private String bomId; + + @Schema(description = "ERP物料清单主键", example = "14731") + private String erpBomId; + + @Schema(description = "子项物料编码") + private String childMaterialNumber; + + @Schema(description = "子项物料描述") + private BigDecimal childMaterialDescription; + + @Schema(description = "子项类别") + private String category; + + @Schema(description = "基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位") + private String unit; + + @Schema(description = "物料标识", example = "2") + private String identificationType; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java new file mode 100644 index 00000000..976de611 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)明细 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpBomDetailRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2110") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "BOM主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24876") + @ExcelProperty("BOM主键") + private String bomId; + + @Schema(description = "ERP物料清单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14731") + @ExcelProperty("ERP物料清单主键") + private String erpBomId; + + @Schema(description = "子项物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子项物料编码") + private String childMaterialNumber; + + @Schema(description = "子项物料描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子项物料描述") + private BigDecimal childMaterialDescription; + + @Schema(description = "子项类别", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子项类别") + private String category; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本单位") + private String unit; + + @Schema(description = "物料标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("物料标识") + private String identificationType; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java new file mode 100644 index 00000000..5c834f70 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)明细新增/修改 Request VO") +@Data +public class ErpBomDetailSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2110") + private Long id; + + @Schema(description = "BOM主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24876") + @NotEmpty(message = "BOM主键不能为空") + private String bomId; + + @Schema(description = "ERP物料清单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14731") + @NotEmpty(message = "ERP物料清单主键不能为空") + private String erpBomId; + + @Schema(description = "子项物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "子项物料编码不能为空") + private String childMaterialNumber; + + @Schema(description = "子项物料描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "子项物料描述不能为空") + private BigDecimal childMaterialDescription; + + @Schema(description = "子项类别", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "子项类别不能为空") + private String category; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "基本数量不能为空") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "基本单位不能为空") + private String unit; + + @Schema(description = "物料标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "物料标识不能为空") + private String identificationType; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomPageReqVO.java new file mode 100644 index 00000000..50756a99 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomPageReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)分页 Request VO") +@Data +public class ErpBomPageReqVO extends PageParam { + + @Schema(description = "工厂编码") + private String factoryNumber; + + @Schema(description = "顶层物料编码") + private String upMaterial; + + @Schema(description = "可选BOM") + private String useItem; + + @Schema(description = "物料描述") + private String materialDescription; + + @Schema(description = "基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位") + private String unit; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomRespVO.java new file mode 100644 index 00000000..51210c06 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomRespVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM) Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpBomRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31348") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private String factoryNumber; + + @Schema(description = "顶层物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("顶层物料编码") + private String upMaterial; + + @Schema(description = "可选BOM", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("可选BOM") + private String useItem; + + @Schema(description = "物料描述") + @ExcelProperty("物料描述") + private String materialDescription; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本单位") + private String unit; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomSaveReqVO.java new file mode 100644 index 00000000..5233e6f5 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomSaveReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)新增/修改 Request VO") +@Data +public class ErpBomSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31348") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工厂编码不能为空") + private String factoryNumber; + + @Schema(description = "顶层物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "顶层物料编码不能为空") + private String upMaterial; + + @Schema(description = "可选BOM", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "可选BOM不能为空") + private String useItem; + + @Schema(description = "物料描述") + private String materialDescription; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "基本数量不能为空") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "基本单位不能为空") + private String unit; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyPageReqVO.java new file mode 100644 index 00000000..54db8447 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyPageReqVO.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - ERP公司分页 Request VO") +@Data +public class ErpCompanyPageReqVO extends PageParam { + + @Schema(description = "公司名称", example = "王五") + private String name; + + @Schema(description = "公司编码;唯一") + private String number; + + @Schema(description = "本位币") + private String currency; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyRespVO.java new file mode 100644 index 00000000..81946150 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyRespVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - ERP公司 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpCompanyRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4807") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("公司名称") + private String name; + + @Schema(description = "公司编码;唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("公司编码;唯一") + private String number; + + @Schema(description = "本位币", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("本位币") + private String currency; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanySaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanySaveReqVO.java new file mode 100644 index 00000000..6c636382 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanySaveReqVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +@Schema(description = "管理后台 - ERP公司新增/修改 Request VO") +@Data +public class ErpCompanySaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4807") + private Long id; + + @Schema(description = "公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "公司名称不能为空") + private String name; + + @Schema(description = "公司编码;唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "公司编码;唯一不能为空") + private String number; + + @Schema(description = "本位币", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "本位币不能为空") + private String currency; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractPageReqVO.java new file mode 100644 index 00000000..0746cab9 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractPageReqVO.java @@ -0,0 +1,180 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDate; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - ERP合同映射分页 Request VO") +@Data +public class ErpContractPageReqVO extends PageParam { + + @Schema(description = "操作标识", example = "3035") + private String operationId; + + @Schema(description = "合同主信息主键", example = "10259") + private Long contractMainId; + + @Schema(description = "合同编号") + private String contractPaperNumber; + + @Schema(description = "合同名称", example = "芋艿") + private String contractName; + + @Schema(description = "合同类型编号") + private String contractTypeNumber; + + @Schema(description = "合同类型名称", example = "李四") + private String contractTypeName; + + @Schema(description = "合同类别") + private String contractCategory; + + @Schema(description = "是否虚拟合同") + private String isVirtualContract; + + @Schema(description = "客户/供应商编号;SAP客商公司代码") + private String supplierNumber; + + @Schema(description = "客户/供应商名称;SAP客商公司名称", example = "张三") + private String supplierName; + + @Schema(description = "代理方;SAP客商公司代码") + private String agent; + + @Schema(description = "合同实施主体编号;SAP公司代码") + private String contractImplementNumber; + + @Schema(description = "合同签订主体编号;SAP公司代码") + private String contractSignNumber; + + @Schema(description = "合同签订日期;格式:YYYY-MM-DD") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] signDate; + + @Schema(description = "合同起始日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] startDate; + + @Schema(description = "合同终止日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] stopDate; + + @Schema(description = "币种编号") + private String currency; + + @Schema(description = "合同总金额(原币-含税);非长单合同:合同金额 长单合同:默认1000000000000000.00") + private BigDecimal sourceAmount; + + @Schema(description = "合同总金额(本位币-含税);非长单合同:合同金额*合同的临时汇率 长单合同:默认1000000000000000.00") + private BigDecimal basicAmount; + + @Schema(description = "变更后合同总金额(原币-含税);如果未做合同变更,金额等于合同总金额(原币-含税)") + private BigDecimal changeSourceAmount; + + @Schema(description = "变更后合同总金额(本位币-含税);如果未做合同变更,金额等于合同总金额(本位币-含税)") + private BigDecimal changeBasicAmount; + + @Schema(description = "合同状态编号") + private String statusNumber; + + @Schema(description = "合同状态名称", example = "赵六") + private String statusName; + + @Schema(description = "是否有预付款;长单合同:否,非长单:取合同的预付款") + private String isPrepayment; + + @Schema(description = "预付款比例;有预付款则需要填写") + private BigDecimal prepaymentRatio; + + @Schema(description = "预付款金额;有预付款则需要填写(通过计算得出)") + private BigDecimal prepaymentAmount; + + @Schema(description = "履约保证金-变更前(原币)") + private BigDecimal sourceBeforeBond; + + @Schema(description = "履约保证金-变更前(本位币)") + private BigDecimal basicBeforeBond; + + @Schema(description = "履约保证金-变更后(原币)") + private BigDecimal sourceAfterBond; + + @Schema(description = "履约保证金-变更后(本位币)") + private BigDecimal basicAfterBond; + + @Schema(description = "是否含质保金") + private String isQualityassuranceAmount; + + @Schema(description = "质保金比例;有质保金则需要填写") + private BigDecimal qualityassuranceRatio; + + @Schema(description = "质保金金额;有质保金则需要填写") + private BigDecimal qualityassuranceAmount; + + @Schema(description = "是否内部企业") + private String isInternal; + + @Schema(description = "收支性质") + private String nature; + + @Schema(description = "备注信息;提交ERP") + private String remark; + + @Schema(description = "累计结算金额(原币-含税);暂定不传") + private BigDecimal sourceAccumulateSettlementAmount; + + @Schema(description = "累计结算金额(本位币-含税);暂定不传") + private BigDecimal basicAccumulateSettlementAmount; + + @Schema(description = "累计已收付款金额(原币-含税);暂定不传") + private BigDecimal sourceUseAmount; + + @Schema(description = "累计已收付款金额(本位币-含税);暂定不传") + private BigDecimal basicUseAmount; + + @Schema(description = "累计已开收票金额(原币-含税);暂定不传") + private BigDecimal sourceInvoiceAmount; + + @Schema(description = "累计已开收票金额(本位币-含税);暂定不传") + private BigDecimal basicInvoiceAmount; + + @Schema(description = "累计预付款金额(原币-含税);暂定不传") + private BigDecimal sourceAccumulatePrepayment; + + @Schema(description = "累计预付款金额(本位币-含税);暂定不传") + private BigDecimal basicAccumulatePrepayment; + + @Schema(description = "履约保证金累计付款金额(原币);暂定不传") + private BigDecimal sourceAccumulateBond; + + @Schema(description = "履约保证金累计付款金额(本位币);暂定不传") + private BigDecimal basicAccumulateBond; + + @Schema(description = "履约保证金累计收款金额(原币);暂定不传") + private BigDecimal sourceAccumulateAmount; + + @Schema(description = "履约保证金累计收款金额(本位币);暂定不传") + private BigDecimal basicAccumulateAmount; + + @Schema(description = "是否框架合同;如果为是,合同总金额(本币)、合同总金额(原币)、变更后合同总金额(原币-含税)、变更后合同总金额(本位币-含税)赋默认值为:1000000000000000.00") + private String isFramework; + + @Schema(description = "境内/境外") + private String isDomestic; + + @Schema(description = "建筑服务发生地;销售合同,且类型为SAP02COSR必填") + private String architectureService‌Place; + + @Schema(description = "达到收款条件金额;销售合同,且类型为SAP02COSR必填") + private BigDecimal payeeConditionAmount; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractRespVO.java new file mode 100644 index 00000000..3dd9ebc3 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractRespVO.java @@ -0,0 +1,232 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; + +@Schema(description = "管理后台 - ERP合同映射 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpContractRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9114") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "操作标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "3035") + @ExcelProperty("操作标识") + private String operationId; + + @Schema(description = "合同主信息主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "10259") + @ExcelProperty("合同主信息主键") + private Long contractMainId; + + @Schema(description = "合同编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同编号") + private String contractPaperNumber; + + @Schema(description = "合同名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("合同名称") + private String contractName; + + @Schema(description = "合同类型编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同类型编号") + private String contractTypeNumber; + + @Schema(description = "合同类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("合同类型名称") + private String contractTypeName; + + @Schema(description = "合同类别", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同类别") + private String contractCategory; + + @Schema(description = "是否虚拟合同", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否虚拟合同") + private String isVirtualContract; + + @Schema(description = "客户/供应商编号;SAP客商公司代码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("客户/供应商编号;SAP客商公司代码") + private String supplierNumber; + + @Schema(description = "客户/供应商名称;SAP客商公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("客户/供应商名称;SAP客商公司名称") + private String supplierName; + + @Schema(description = "代理方;SAP客商公司代码") + @ExcelProperty("代理方;SAP客商公司代码") + private String agent; + + @Schema(description = "合同实施主体编号;SAP公司代码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同实施主体编号;SAP公司代码") + private String contractImplementNumber; + + @Schema(description = "合同签订主体编号;SAP公司代码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同签订主体编号;SAP公司代码") + private String contractSignNumber; + + @Schema(description = "合同签订日期;格式:YYYY-MM-DD", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同签订日期;格式:YYYY-MM-DD") + private LocalDate signDate; + + @Schema(description = "合同起始日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同起始日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期") + private LocalDate startDate; + + @Schema(description = "合同终止日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同终止日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期") + private LocalDate stopDate; + + @Schema(description = "币种编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("币种编号") + private String currency; + + @Schema(description = "合同总金额(原币-含税);非长单合同:合同金额 长单合同:默认1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同总金额(原币-含税);非长单合同:合同金额 长单合同:默认1000000000000000.00") + private BigDecimal sourceAmount; + + @Schema(description = "合同总金额(本位币-含税);非长单合同:合同金额*合同的临时汇率 长单合同:默认1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同总金额(本位币-含税);非长单合同:合同金额*合同的临时汇率 长单合同:默认1000000000000000.00") + private BigDecimal basicAmount; + + @Schema(description = "变更后合同总金额(原币-含税);如果未做合同变更,金额等于合同总金额(原币-含税)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("变更后合同总金额(原币-含税);如果未做合同变更,金额等于合同总金额(原币-含税)") + private BigDecimal changeSourceAmount; + + @Schema(description = "变更后合同总金额(本位币-含税);如果未做合同变更,金额等于合同总金额(本位币-含税)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("变更后合同总金额(本位币-含税);如果未做合同变更,金额等于合同总金额(本位币-含税)") + private BigDecimal changeBasicAmount; + + @Schema(description = "合同状态编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同状态编号") + private String statusNumber; + + @Schema(description = "合同状态名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("合同状态名称") + private String statusName; + + @Schema(description = "是否有预付款;长单合同:否,非长单:取合同的预付款", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否有预付款;长单合同:否,非长单:取合同的预付款") + private String isPrepayment; + + @Schema(description = "预付款比例;有预付款则需要填写") + @ExcelProperty("预付款比例;有预付款则需要填写") + private BigDecimal prepaymentRatio; + + @Schema(description = "预付款金额;有预付款则需要填写(通过计算得出)") + @ExcelProperty("预付款金额;有预付款则需要填写(通过计算得出)") + private BigDecimal prepaymentAmount; + + @Schema(description = "履约保证金-变更前(原币)") + @ExcelProperty("履约保证金-变更前(原币)") + private BigDecimal sourceBeforeBond; + + @Schema(description = "履约保证金-变更前(本位币)") + @ExcelProperty("履约保证金-变更前(本位币)") + private BigDecimal basicBeforeBond; + + @Schema(description = "履约保证金-变更后(原币)") + @ExcelProperty("履约保证金-变更后(原币)") + private BigDecimal sourceAfterBond; + + @Schema(description = "履约保证金-变更后(本位币)") + @ExcelProperty("履约保证金-变更后(本位币)") + private BigDecimal basicAfterBond; + + @Schema(description = "是否含质保金", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否含质保金") + private String isQualityassuranceAmount; + + @Schema(description = "质保金比例;有质保金则需要填写") + @ExcelProperty("质保金比例;有质保金则需要填写") + private BigDecimal qualityassuranceRatio; + + @Schema(description = "质保金金额;有质保金则需要填写") + @ExcelProperty("质保金金额;有质保金则需要填写") + private BigDecimal qualityassuranceAmount; + + @Schema(description = "是否内部企业", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否内部企业") + private String isInternal; + + @Schema(description = "收支性质", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("收支性质") + private String nature; + + @Schema(description = "备注信息;提交ERP") + @ExcelProperty("备注信息;提交ERP") + private String remark; + + @Schema(description = "累计结算金额(原币-含税);暂定不传") + @ExcelProperty("累计结算金额(原币-含税);暂定不传") + private BigDecimal sourceAccumulateSettlementAmount; + + @Schema(description = "累计结算金额(本位币-含税);暂定不传") + @ExcelProperty("累计结算金额(本位币-含税);暂定不传") + private BigDecimal basicAccumulateSettlementAmount; + + @Schema(description = "累计已收付款金额(原币-含税);暂定不传") + @ExcelProperty("累计已收付款金额(原币-含税);暂定不传") + private BigDecimal sourceUseAmount; + + @Schema(description = "累计已收付款金额(本位币-含税);暂定不传") + @ExcelProperty("累计已收付款金额(本位币-含税);暂定不传") + private BigDecimal basicUseAmount; + + @Schema(description = "累计已开收票金额(原币-含税);暂定不传") + @ExcelProperty("累计已开收票金额(原币-含税);暂定不传") + private BigDecimal sourceInvoiceAmount; + + @Schema(description = "累计已开收票金额(本位币-含税);暂定不传") + @ExcelProperty("累计已开收票金额(本位币-含税);暂定不传") + private BigDecimal basicInvoiceAmount; + + @Schema(description = "累计预付款金额(原币-含税);暂定不传") + @ExcelProperty("累计预付款金额(原币-含税);暂定不传") + private BigDecimal sourceAccumulatePrepayment; + + @Schema(description = "累计预付款金额(本位币-含税);暂定不传") + @ExcelProperty("累计预付款金额(本位币-含税);暂定不传") + private BigDecimal basicAccumulatePrepayment; + + @Schema(description = "履约保证金累计付款金额(原币);暂定不传") + @ExcelProperty("履约保证金累计付款金额(原币);暂定不传") + private BigDecimal sourceAccumulateBond; + + @Schema(description = "履约保证金累计付款金额(本位币);暂定不传") + @ExcelProperty("履约保证金累计付款金额(本位币);暂定不传") + private BigDecimal basicAccumulateBond; + + @Schema(description = "履约保证金累计收款金额(原币);暂定不传") + @ExcelProperty("履约保证金累计收款金额(原币);暂定不传") + private BigDecimal sourceAccumulateAmount; + + @Schema(description = "履约保证金累计收款金额(本位币);暂定不传") + @ExcelProperty("履约保证金累计收款金额(本位币);暂定不传") + private BigDecimal basicAccumulateAmount; + + @Schema(description = "是否框架合同;如果为是,合同总金额(本币)、合同总金额(原币)、变更后合同总金额(原币-含税)、变更后合同总金额(本位币-含税)赋默认值为:1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否框架合同;如果为是,合同总金额(本币)、合同总金额(原币)、变更后合同总金额(原币-含税)、变更后合同总金额(本位币-含税)赋默认值为:1000000000000000.00") + private String isFramework; + + @Schema(description = "境内/境外", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("境内/境外") + private String isDomestic; + + @Schema(description = "建筑服务发生地;销售合同,且类型为SAP02COSR必填") + @ExcelProperty("建筑服务发生地;销售合同,且类型为SAP02COSR必填") + private String architectureService‌Place; + + @Schema(description = "达到收款条件金额;销售合同,且类型为SAP02COSR必填") + @ExcelProperty("达到收款条件金额;销售合同,且类型为SAP02COSR必填") + private BigDecimal payeeConditionAmount; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDate createTime; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractSaveReqVO.java new file mode 100644 index 00000000..9821b122 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpContractSaveReqVO.java @@ -0,0 +1,202 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; + +@Schema(description = "管理后台 - ERP合同映射新增/修改 Request VO") +@Data +public class ErpContractSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9114") + private Long id; + + @Schema(description = "操作标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "3035") + @NotEmpty(message = "操作标识不能为空") + private String operationId; + + @Schema(description = "合同主信息主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "10259") + @NotNull(message = "合同主信息主键不能为空") + private Long contractMainId; + + @Schema(description = "合同编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "合同编号不能为空") + private String contractPaperNumber; + + @Schema(description = "合同名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "合同名称不能为空") + private String contractName; + + @Schema(description = "合同类型编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "合同类型编号不能为空") + private String contractTypeNumber; + + @Schema(description = "合同类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "合同类型名称不能为空") + private String contractTypeName; + + @Schema(description = "合同类别", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "合同类别不能为空") + private String contractCategory; + + @Schema(description = "是否虚拟合同", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "是否虚拟合同不能为空") + private String isVirtualContract; + + @Schema(description = "客户/供应商编号;SAP客商公司代码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "客户/供应商编号;SAP客商公司代码不能为空") + private String supplierNumber; + + @Schema(description = "客户/供应商名称;SAP客商公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotEmpty(message = "客户/供应商名称;SAP客商公司名称不能为空") + private String supplierName; + + @Schema(description = "代理方;SAP客商公司代码") + private String agent; + + @Schema(description = "合同实施主体编号;SAP公司代码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "合同实施主体编号;SAP公司代码不能为空") + private String contractImplementNumber; + + @Schema(description = "合同签订主体编号;SAP公司代码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "合同签订主体编号;SAP公司代码不能为空") + private String contractSignNumber; + + @Schema(description = "合同签订日期;格式:YYYY-MM-DD", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同签订日期;格式:YYYY-MM-DD不能为空") + private LocalDate signDate; + + @Schema(description = "合同起始日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同起始日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期不能为空") + private LocalDate startDate; + + @Schema(description = "合同终止日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同终止日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期不能为空") + private LocalDate stopDate; + + @Schema(description = "币种编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "币种编号不能为空") + private String currency; + + @Schema(description = "合同总金额(原币-含税);非长单合同:合同金额 长单合同:默认1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同总金额(原币-含税);非长单合同:合同金额 长单合同:默认1000000000000000.00不能为空") + private BigDecimal sourceAmount; + + @Schema(description = "合同总金额(本位币-含税);非长单合同:合同金额*合同的临时汇率 长单合同:默认1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同总金额(本位币-含税);非长单合同:合同金额*合同的临时汇率 长单合同:默认1000000000000000.00不能为空") + private BigDecimal basicAmount; + + @Schema(description = "变更后合同总金额(原币-含税);如果未做合同变更,金额等于合同总金额(原币-含税)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "变更后合同总金额(原币-含税);如果未做合同变更,金额等于合同总金额(原币-含税)不能为空") + private BigDecimal changeSourceAmount; + + @Schema(description = "变更后合同总金额(本位币-含税);如果未做合同变更,金额等于合同总金额(本位币-含税)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "变更后合同总金额(本位币-含税);如果未做合同变更,金额等于合同总金额(本位币-含税)不能为空") + private BigDecimal changeBasicAmount; + + @Schema(description = "合同状态编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "合同状态编号不能为空") + private String statusNumber; + + @Schema(description = "合同状态名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "合同状态名称不能为空") + private String statusName; + + @Schema(description = "是否有预付款;长单合同:否,非长单:取合同的预付款", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "是否有预付款;长单合同:否,非长单:取合同的预付款不能为空") + private String isPrepayment; + + @Schema(description = "预付款比例;有预付款则需要填写") + private BigDecimal prepaymentRatio; + + @Schema(description = "预付款金额;有预付款则需要填写(通过计算得出)") + private BigDecimal prepaymentAmount; + + @Schema(description = "履约保证金-变更前(原币)") + private BigDecimal sourceBeforeBond; + + @Schema(description = "履约保证金-变更前(本位币)") + private BigDecimal basicBeforeBond; + + @Schema(description = "履约保证金-变更后(原币)") + private BigDecimal sourceAfterBond; + + @Schema(description = "履约保证金-变更后(本位币)") + private BigDecimal basicAfterBond; + + @Schema(description = "是否含质保金", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "是否含质保金不能为空") + private String isQualityassuranceAmount; + + @Schema(description = "质保金比例;有质保金则需要填写") + private BigDecimal qualityassuranceRatio; + + @Schema(description = "质保金金额;有质保金则需要填写") + private BigDecimal qualityassuranceAmount; + + @Schema(description = "是否内部企业", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "是否内部企业不能为空") + private String isInternal; + + @Schema(description = "收支性质", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "收支性质不能为空") + private String nature; + + @Schema(description = "备注信息;提交ERP") + private String remark; + + @Schema(description = "累计结算金额(原币-含税);暂定不传") + private BigDecimal sourceAccumulateSettlementAmount; + + @Schema(description = "累计结算金额(本位币-含税);暂定不传") + private BigDecimal basicAccumulateSettlementAmount; + + @Schema(description = "累计已收付款金额(原币-含税);暂定不传") + private BigDecimal sourceUseAmount; + + @Schema(description = "累计已收付款金额(本位币-含税);暂定不传") + private BigDecimal basicUseAmount; + + @Schema(description = "累计已开收票金额(原币-含税);暂定不传") + private BigDecimal sourceInvoiceAmount; + + @Schema(description = "累计已开收票金额(本位币-含税);暂定不传") + private BigDecimal basicInvoiceAmount; + + @Schema(description = "累计预付款金额(原币-含税);暂定不传") + private BigDecimal sourceAccumulatePrepayment; + + @Schema(description = "累计预付款金额(本位币-含税);暂定不传") + private BigDecimal basicAccumulatePrepayment; + + @Schema(description = "履约保证金累计付款金额(原币);暂定不传") + private BigDecimal sourceAccumulateBond; + + @Schema(description = "履约保证金累计付款金额(本位币);暂定不传") + private BigDecimal basicAccumulateBond; + + @Schema(description = "履约保证金累计收款金额(原币);暂定不传") + private BigDecimal sourceAccumulateAmount; + + @Schema(description = "履约保证金累计收款金额(本位币);暂定不传") + private BigDecimal basicAccumulateAmount; + + @Schema(description = "是否框架合同;如果为是,合同总金额(本币)、合同总金额(原币)、变更后合同总金额(原币-含税)、变更后合同总金额(本位币-含税)赋默认值为:1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "是否框架合同;如果为是,合同总金额(本币)、合同总金额(原币)、变更后合同总金额(原币-含税)、变更后合同总金额(本位币-含税)赋默认值为:1000000000000000.00不能为空") + private String isFramework; + + @Schema(description = "境内/境外", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "境内/境外不能为空") + private String isDomestic; + + @Schema(description = "建筑服务发生地;销售合同,且类型为SAP02COSR必填") + private String architectureService‌Place; + + @Schema(description = "达到收款条件金额;销售合同,且类型为SAP02COSR必填") + private BigDecimal payeeConditionAmount; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterPageReqVO.java new file mode 100644 index 00000000..f699a2e6 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterPageReqVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - ERP成本中心分页 Request VO") +@Data +public class ErpCostcenterPageReqVO extends PageParam { + + @Schema(description = "成本中心编码") + private String number; + + @Schema(description = "成本中心描述", example = "赵六") + private String name; + + @Schema(description = "工区必填;使用这个基础数据是,如果为X时必须和工区使用") + private String isUse; + + @Schema(description = "功能范围") + private String scopeNumber; + + @Schema(description = "功能范围描述", example = "赵六") + private String scopeName; + + @Schema(description = "起始日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] startDate; + + @Schema(description = "截止日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endDate; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterRespVO.java new file mode 100644 index 00000000..4ddac56e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - ERP成本中心 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpCostcenterRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "23318") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "成本中心编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("成本中心编码") + private String number; + + @Schema(description = "成本中心描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("成本中心描述") + private String name; + + @Schema(description = "工区必填;使用这个基础数据是,如果为X时必须和工区使用", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工区必填;使用这个基础数据是,如果为X时必须和工区使用") + private String isUse; + + @Schema(description = "功能范围", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("功能范围") + private String scopeNumber; + + @Schema(description = "功能范围描述", example = "赵六") + @ExcelProperty("功能范围描述") + private String scopeName; + + @Schema(description = "起始日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("起始日期") + private LocalDateTime startDate; + + @Schema(description = "截止日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("截止日期") + private LocalDateTime endDate; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterSaveReqVO.java new file mode 100644 index 00000000..005eed4a --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterSaveReqVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - ERP成本中心新增/修改 Request VO") +@Data +public class ErpCostcenterSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "23318") + private Long id; + + @Schema(description = "成本中心编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "成本中心编码不能为空") + private String number; + + @Schema(description = "成本中心描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "成本中心描述不能为空") + private String name; + + @Schema(description = "工区必填;使用这个基础数据是,如果为X时必须和工区使用", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工区必填;使用这个基础数据是,如果为X时必须和工区使用不能为空") + private String isUse; + + @Schema(description = "功能范围", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "功能范围不能为空") + private String scopeNumber; + + @Schema(description = "功能范围描述", example = "赵六") + private String scopeName; + + @Schema(description = "起始日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "起始日期不能为空") + private LocalDateTime startDate; + + @Schema(description = "截止日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "截止日期不能为空") + private LocalDateTime endDate; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerPageReqVO.java new file mode 100644 index 00000000..f5b4e386 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerPageReqVO.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - ERP客商主数据分页 Request VO") +@Data +public class ErpCustomerPageReqVO extends PageParam { + + @Schema(description = "编码") + private String number; + + @Schema(description = "名称", example = "芋艿") + private String name; + + @Schema(description = "账户组") + private String accountGroup; + + @Schema(description = "简称") + private String description; + + @Schema(description = "中铝编号") + private String centerNumber; + + @Schema(description = "创建日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createDate; + + @Schema(description = "修改日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] repairDate; + + @Schema(description = "归档标识") + private String isGiveback; + + @Schema(description = "冻结标识") + private String isProvisional; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerRespVO.java new file mode 100644 index 00000000..1f68cc41 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerRespVO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - ERP客商主数据 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpCustomerRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30882") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("编码") + private String number; + + @Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("名称") + private String name; + + @Schema(description = "账户组", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("账户组") + private String accountGroup; + + @Schema(description = "简称") + @ExcelProperty("简称") + private String description; + + @Schema(description = "中铝编号") + @ExcelProperty("中铝编号") + private String centerNumber; + + @Schema(description = "创建日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建日期") + private LocalDateTime createDate; + + @Schema(description = "修改日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("修改日期") + private LocalDateTime repairDate; + + @Schema(description = "归档标识") + @ExcelProperty("归档标识") + private String isGiveback; + + @Schema(description = "冻结标识") + @ExcelProperty("冻结标识") + private String isProvisional; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerSaveReqVO.java new file mode 100644 index 00000000..dd593e7a --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerSaveReqVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - ERP客商主数据新增/修改 Request VO") +@Data +public class ErpCustomerSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30882") + private Long id; + + @Schema(description = "编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "编码不能为空") + private String number; + + @Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "名称不能为空") + private String name; + + @Schema(description = "账户组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "账户组不能为空") + private String accountGroup; + + @Schema(description = "简称") + private String description; + + @Schema(description = "中铝编号") + private String centerNumber; + + @Schema(description = "创建日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "创建日期不能为空") + private LocalDateTime createDate; + + @Schema(description = "修改日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "修改日期不能为空") + private LocalDateTime repairDate; + + @Schema(description = "归档标识") + private String isGiveback; + + @Schema(description = "冻结标识") + private String isProvisional; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryPageReqVO.java new file mode 100644 index 00000000..fd4dda52 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryPageReqVO.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - ERP工厂分页 Request VO") +@Data +public class ErpFactoryPageReqVO extends PageParam { + + @Schema(description = "工厂名称", example = "赵六") + private String name; + + @Schema(description = "工厂编码") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryRespVO.java new file mode 100644 index 00000000..e8208c0b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryRespVO.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - ERP工厂 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpFactoryRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9235") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("工厂名称") + private String name; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactorySaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactorySaveReqVO.java new file mode 100644 index 00000000..b2de5689 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactorySaveReqVO.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +@Schema(description = "管理后台 - ERP工厂新增/修改 Request VO") +@Data +public class ErpFactorySaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9235") + private Long id; + + @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "工厂名称不能为空") + private String name; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工厂编码不能为空") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderPageReqVO.java new file mode 100644 index 00000000..a14fc069 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderPageReqVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - ERP内部订单分页 Request VO") +@Data +public class ErpInternalOrderPageReqVO extends PageParam { + + @Schema(description = "内部订单编号") + private String number; + + @Schema(description = "内部订单描述", example = "王五") + private String name; + + @Schema(description = "内部订单类型", example = "2") + private String type; + + @Schema(description = "是否已关闭;使用这个基础数据是,如果为X时必须和工区使用") + private String isOff; + + @Schema(description = "是否已完成") + private String isFinish; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderRespVO.java new file mode 100644 index 00000000..aa6965c8 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderRespVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - ERP内部订单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpInternalOrderRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19327") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "内部订单编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("内部订单编号") + private String number; + + @Schema(description = "内部订单描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("内部订单描述") + private String name; + + @Schema(description = "内部订单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("内部订单类型") + private String type; + + @Schema(description = "是否已关闭;使用这个基础数据是,如果为X时必须和工区使用", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否已关闭;使用这个基础数据是,如果为X时必须和工区使用") + private String isOff; + + @Schema(description = "是否已完成") + @ExcelProperty("是否已完成") + private String isFinish; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderSaveReqVO.java new file mode 100644 index 00000000..5b073363 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderSaveReqVO.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +@Schema(description = "管理后台 - ERP内部订单新增/修改 Request VO") +@Data +public class ErpInternalOrderSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19327") + private Long id; + + @Schema(description = "内部订单编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "内部订单编号不能为空") + private String number; + + @Schema(description = "内部订单描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "内部订单描述不能为空") + private String name; + + @Schema(description = "内部订单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "内部订单类型不能为空") + private String type; + + @Schema(description = "是否已关闭;使用这个基础数据是,如果为X时必须和工区使用", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "是否已关闭;使用这个基础数据是,如果为X时必须和工区使用不能为空") + private String isOff; + + @Schema(description = "是否已完成") + private String isFinish; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java new file mode 100644 index 00000000..3e6bf9ec --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - ERP物料数据分页 Request VO") +@Data +public class ErpMaterialPageReqVO extends PageParam { + + @Schema(description = "中铜物料编码;系统使用时使用该编码") + private String downCenterNumber; + + @Schema(description = "中铝物料编码") + private String centerNumber; + + @Schema(description = "创建日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createDate; + + @Schema(description = "物料类型", example = "2") + private String materialType; + + @Schema(description = "物料大类组") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private String[] materialGroupDate; + + @Schema(description = "外部物料小类组") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private String[] externalMaterialGroupDate; + + @Schema(description = "计量单位编码") + private String unit; + + @Schema(description = "计量单位描述") + private String unitDescription; + + @Schema(description = "物料类型描述") + private String materialTypeDescription; + + @Schema(description = "物料组描述") + private String materialGroupDescription; + + @Schema(description = "外部物料小类组描述") + private String externalMaterialGroupDescription; + + @Schema(description = "物料名称", example = "李四") + private String materialName; + + @Schema(description = "物料长描述") + private String materialLengthDescription; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java new file mode 100644 index 00000000..459108ab --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - ERP物料数据 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpMaterialRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2038") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "中铜物料编码;系统使用时使用该编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("中铜物料编码;系统使用时使用该编码") + private String downCenterNumber; + + @Schema(description = "中铝物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("中铝物料编码") + private String centerNumber; + + @Schema(description = "创建日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建日期") + private LocalDateTime createDate; + + @Schema(description = "物料类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("物料类型") + private String materialType; + + @Schema(description = "物料大类组", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料大类组") + private String materialGroupDate; + + @Schema(description = "外部物料小类组", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("外部物料小类组") + private String externalMaterialGroupDate; + + @Schema(description = "计量单位编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("计量单位编码") + private String unit; + + @Schema(description = "计量单位描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("计量单位描述") + private String unitDescription; + + @Schema(description = "物料类型描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料类型描述") + private String materialTypeDescription; + + @Schema(description = "物料组描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料组描述") + private String materialGroupDescription; + + @Schema(description = "外部物料小类组描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("外部物料小类组描述") + private String externalMaterialGroupDescription; + + @Schema(description = "物料名称", example = "李四") + @ExcelProperty("物料名称") + private String materialName; + + @Schema(description = "物料长描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料长描述") + private String materialLengthDescription; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java new file mode 100644 index 00000000..705608fd --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java @@ -0,0 +1,68 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - ERP物料数据新增/修改 Request VO") +@Data +public class ErpMaterialSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2038") + private Long id; + + @Schema(description = "中铜物料编码;系统使用时使用该编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "中铜物料编码;系统使用时使用该编码不能为空") + private String downCenterNumber; + + @Schema(description = "中铝物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "中铝物料编码不能为空") + private String centerNumber; + + @Schema(description = "创建日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "创建日期不能为空") + private LocalDateTime createDate; + + @Schema(description = "物料类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "物料类型不能为空") + private String materialType; + + @Schema(description = "物料大类组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "物料大类组不能为空") + private String materialGroupDate; + + @Schema(description = "外部物料小类组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "外部物料小类组不能为空") + private String externalMaterialGroupDate; + + @Schema(description = "计量单位编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "计量单位编码不能为空") + private String unit; + + @Schema(description = "计量单位描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "计量单位描述不能为空") + private String unitDescription; + + @Schema(description = "物料类型描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "物料类型描述不能为空") + private String materialTypeDescription; + + @Schema(description = "物料组描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "物料组描述不能为空") + private String materialGroupDescription; + + @Schema(description = "外部物料小类组描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "外部物料小类组描述不能为空") + private String externalMaterialGroupDescription; + + @Schema(description = "物料名称", example = "李四") + private String materialName; + + @Schema(description = "物料长描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "物料长描述不能为空") + private String materialLengthDescription; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailPageReqVO.java new file mode 100644 index 00000000..aaf2a03d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailPageReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线明细分页 Request VO") +@Data +public class ErpProcessDetailPageReqVO extends PageParam { + + @Schema(description = "ERP工艺路线主键", example = "30589") + private String processId; + + @Schema(description = "工序编码") + private BigDecimal processingNumber; + + @Schema(description = "工序描述", example = "李四") + private String processingName; + + @Schema(description = "作业的计量单位") + private String uom; + + @Schema(description = "工作中心编号") + private String workCenterNumber; + + @Schema(description = "工作中心描述", example = "张三") + private String workCenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailRespVO.java new file mode 100644 index 00000000..e98e30fb --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailRespVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线明细 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpProcessDetailRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5707") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "ERP工艺路线主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30589") + @ExcelProperty("ERP工艺路线主键") + private String processId; + + @Schema(description = "工序编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工序编码") + private BigDecimal processingNumber; + + @Schema(description = "工序描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("工序描述") + private String processingName; + + @Schema(description = "作业的计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("作业的计量单位") + private String uom; + + @Schema(description = "工作中心编号") + @ExcelProperty("工作中心编号") + private String workCenterNumber; + + @Schema(description = "工作中心描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("工作中心描述") + private String workCenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailSaveReqVO.java new file mode 100644 index 00000000..73ae23ca --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailSaveReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线明细新增/修改 Request VO") +@Data +public class ErpProcessDetailSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5707") + private Long id; + + @Schema(description = "ERP工艺路线主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30589") + @NotEmpty(message = "ERP工艺路线主键不能为空") + private String processId; + + @Schema(description = "工序编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工序编码不能为空") + private BigDecimal processingNumber; + + @Schema(description = "工序描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "工序描述不能为空") + private String processingName; + + @Schema(description = "作业的计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "作业的计量单位不能为空") + private String uom; + + @Schema(description = "工作中心编号") + private String workCenterNumber; + + @Schema(description = "工作中心描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotEmpty(message = "工作中心描述不能为空") + private String workCenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessPageReqVO.java new file mode 100644 index 00000000..886e57d4 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessPageReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线分页 Request VO") +@Data +public class ErpProcessPageReqVO extends PageParam { + + @Schema(description = "工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "物料描述", example = "李四") + private String materialName; + + @Schema(description = "工艺路线组") + private String blineGroup; + + @Schema(description = "组计数器", example = "27504") + private Long groupCount; + + @Schema(description = "工艺路线描述") + private String blineDescription; + + @Schema(description = "计量单位") + private String uom; + + @Schema(description = "用途") + private String useDescription; + + @Schema(description = "状态", example = "2") + private String status; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessRespVO.java new file mode 100644 index 00000000..55854f95 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessRespVO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpProcessRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "13200") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料编码") + private String materialNumber; + + @Schema(description = "物料描述", example = "李四") + @ExcelProperty("物料描述") + private String materialName; + + @Schema(description = "工艺路线组", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺路线组") + private String blineGroup; + + @Schema(description = "组计数器", requiredMode = Schema.RequiredMode.REQUIRED, example = "27504") + @ExcelProperty("组计数器") + private Long groupCount; + + @Schema(description = "工艺路线描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺路线描述") + private String blineDescription; + + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("计量单位") + private String uom; + + @Schema(description = "用途") + @ExcelProperty("用途") + private String useDescription; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态") + private String status; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessSaveReqVO.java new file mode 100644 index 00000000..71458584 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessSaveReqVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线新增/修改 Request VO") +@Data +public class ErpProcessSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "13200") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工厂编码不能为空") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "物料编码不能为空") + private String materialNumber; + + @Schema(description = "物料描述", example = "李四") + private String materialName; + + @Schema(description = "工艺路线组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺路线组不能为空") + private String blineGroup; + + @Schema(description = "组计数器", requiredMode = Schema.RequiredMode.REQUIRED, example = "27504") + @NotNull(message = "组计数器不能为空") + private Long groupCount; + + @Schema(description = "工艺路线描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺路线描述不能为空") + private String blineDescription; + + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "计量单位不能为空") + private String uom; + + @Schema(description = "用途") + private String useDescription; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "状态不能为空") + private String status; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderPageReqVO.java new file mode 100644 index 00000000..b9aaa02b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderPageReqVO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - ERP生产订单分页 Request VO") +@Data +public class ErpProductiveOrderPageReqVO extends PageParam { + + @Schema(description = "公司编号") + private String companyNumber; + + @Schema(description = "工厂编码") + private String factoryNumber; + + @Schema(description = "工厂名称", example = "赵六") + private String factoryName; + + @Schema(description = "订单编号") + private String orderNumber; + + @Schema(description = "基本开始日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] startDate; + + @Schema(description = "基本完成日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endDate; + + @Schema(description = "主产品物料编号") + private String mainMaterialNumber; + + @Schema(description = "计量单位") + private String unit; + + @Schema(description = "物料描述") + private String materialDescription; + + @Schema(description = "工序列表") + private String processingList; + + @Schema(description = "工序编号") + private String processingNumber; + + @Schema(description = "工序描述") + private String processingDescription; + + @Schema(description = "对象编号") + private String objectNumber; + + @Schema(description = "工作中心编码") + private String workCenterNumber; + + @Schema(description = "工作中心描述") + private String workCenterDescription; + + @Schema(description = "成本中心编码") + private String costcenterNumber; + + @Schema(description = "成本中心描述", example = "赵六") + private String costcenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderRespVO.java new file mode 100644 index 00000000..400f646a --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderRespVO.java @@ -0,0 +1,87 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - ERP生产订单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpProductiveOrderRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24243") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "公司编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("公司编号") + private String companyNumber; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private String factoryNumber; + + @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("工厂名称") + private String factoryName; + + @Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("订单编号") + private String orderNumber; + + @Schema(description = "基本开始日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本开始日期") + private LocalDateTime startDate; + + @Schema(description = "基本完成日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本完成日期") + private LocalDateTime endDate; + + @Schema(description = "主产品物料编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("主产品物料编号") + private String mainMaterialNumber; + + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("计量单位") + private String unit; + + @Schema(description = "物料描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料描述") + private String materialDescription; + + @Schema(description = "工序列表", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工序列表") + private String processingList; + + @Schema(description = "工序编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工序编号") + private String processingNumber; + + @Schema(description = "工序描述") + @ExcelProperty("工序描述") + private String processingDescription; + + @Schema(description = "对象编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("对象编号") + private String objectNumber; + + @Schema(description = "工作中心编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工作中心编码") + private String workCenterNumber; + + @Schema(description = "工作中心描述") + @ExcelProperty("工作中心描述") + private String workCenterDescription; + + @Schema(description = "成本中心编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("成本中心编码") + private String costcenterNumber; + + @Schema(description = "成本中心描述", example = "赵六") + @ExcelProperty("成本中心描述") + private String costcenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderSaveReqVO.java new file mode 100644 index 00000000..b891d4f7 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveOrderSaveReqVO.java @@ -0,0 +1,82 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - ERP生产订单新增/修改 Request VO") +@Data +public class ErpProductiveOrderSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24243") + private Long id; + + @Schema(description = "公司编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "公司编号不能为空") + private String companyNumber; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工厂编码不能为空") + private String factoryNumber; + + @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "工厂名称不能为空") + private String factoryName; + + @Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "订单编号不能为空") + private String orderNumber; + + @Schema(description = "基本开始日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "基本开始日期不能为空") + private LocalDateTime startDate; + + @Schema(description = "基本完成日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "基本完成日期不能为空") + private LocalDateTime endDate; + + @Schema(description = "主产品物料编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "主产品物料编号不能为空") + private String mainMaterialNumber; + + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "计量单位不能为空") + private String unit; + + @Schema(description = "物料描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "物料描述不能为空") + private String materialDescription; + + @Schema(description = "工序列表", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工序列表不能为空") + private String processingList; + + @Schema(description = "工序编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工序编号不能为空") + private String processingNumber; + + @Schema(description = "工序描述") + private String processingDescription; + + @Schema(description = "对象编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "对象编号不能为空") + private String objectNumber; + + @Schema(description = "工作中心编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工作中心编码不能为空") + private String workCenterNumber; + + @Schema(description = "工作中心描述") + private String workCenterDescription; + + @Schema(description = "成本中心编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "成本中心编码不能为空") + private String costcenterNumber; + + @Schema(description = "成本中心描述", example = "赵六") + private String costcenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionPageReqVO.java new file mode 100644 index 00000000..548a1eb6 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionPageReqVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP生产版本分页 Request VO") +@Data +public class ErpProductiveVersionPageReqVO extends PageParam { + + @Schema(description = "工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "生产版本编码") + private String productiveVersionNumber; + + @Schema(description = "生产版本描述", example = "赵六") + private String productiveVersionName; + + @Schema(description = "备选BOM编号") + private String bomNumber; + + @Schema(description = "工艺路线组") + private String blineGroup; + + @Schema(description = "组计数器", example = "15610") + private Long groupCount; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionRespVO.java new file mode 100644 index 00000000..17d802cb --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP生产版本 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpProductiveVersionRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "27745") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料编码") + private String materialNumber; + + @Schema(description = "生产版本编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("生产版本编码") + private String productiveVersionNumber; + + @Schema(description = "生产版本描述", example = "赵六") + @ExcelProperty("生产版本描述") + private String productiveVersionName; + + @Schema(description = "备选BOM编号") + @ExcelProperty("备选BOM编号") + private String bomNumber; + + @Schema(description = "工艺路线组", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺路线组") + private String blineGroup; + + @Schema(description = "组计数器", requiredMode = Schema.RequiredMode.REQUIRED, example = "15610") + @ExcelProperty("组计数器") + private Long groupCount; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionSaveReqVO.java new file mode 100644 index 00000000..53601492 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionSaveReqVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP生产版本新增/修改 Request VO") +@Data +public class ErpProductiveVersionSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "27745") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工厂编码不能为空") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "物料编码不能为空") + private String materialNumber; + + @Schema(description = "生产版本编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "生产版本编码不能为空") + private String productiveVersionNumber; + + @Schema(description = "生产版本描述", example = "赵六") + private String productiveVersionName; + + @Schema(description = "备选BOM编号") + private String bomNumber; + + @Schema(description = "工艺路线组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺路线组不能为空") + private String blineGroup; + + @Schema(description = "组计数器", requiredMode = Schema.RequiredMode.REQUIRED, example = "15610") + @NotNull(message = "组计数器不能为空") + private Long groupCount; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationPageReqVO.java new file mode 100644 index 00000000..7d9393e4 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationPageReqVO.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - ERP采购组织分页 Request VO") +@Data +public class ErpPurchaseOrganizationPageReqVO extends PageParam { + + @Schema(description = "采购组织编号") + private String number; + + @Schema(description = "采购组织描述", example = "赵六") + private String name; + + @Schema(description = "公司编码;存入ERP公司编码") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationRespVO.java new file mode 100644 index 00000000..0cf5cb69 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationRespVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - ERP采购组织 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpPurchaseOrganizationRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "17344") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "采购组织编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("采购组织编号") + private String number; + + @Schema(description = "采购组织描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("采购组织描述") + private String name; + + @Schema(description = "公司编码;存入ERP公司编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("公司编码;存入ERP公司编码") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationSaveReqVO.java new file mode 100644 index 00000000..5125c053 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationSaveReqVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +@Schema(description = "管理后台 - ERP采购组织新增/修改 Request VO") +@Data +public class ErpPurchaseOrganizationSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "17344") + private Long id; + + @Schema(description = "采购组织编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购组织编号不能为空") + private String number; + + @Schema(description = "采购组织描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "采购组织描述不能为空") + private String name; + + @Schema(description = "公司编码;存入ERP公司编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "公司编码;存入ERP公司编码不能为空") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationPageReqVO.java new file mode 100644 index 00000000..0a901a9a --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationPageReqVO.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - ERP销售组织分页 Request VO") +@Data +public class ErpSalesOrganizationPageReqVO extends PageParam { + + @Schema(description = "销售组织编号") + private String number; + + @Schema(description = "销售组织描述", example = "李四") + private String name; + + @Schema(description = "公司编码;存入ERP公司编码") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationRespVO.java new file mode 100644 index 00000000..5c20fe2b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationRespVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - ERP销售组织 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpSalesOrganizationRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "22623") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "销售组织编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("销售组织编号") + private String number; + + @Schema(description = "销售组织描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("销售组织描述") + private String name; + + @Schema(description = "公司编码;存入ERP公司编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("公司编码;存入ERP公司编码") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationSaveReqVO.java new file mode 100644 index 00000000..b6880a6a --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationSaveReqVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +@Schema(description = "管理后台 - ERP销售组织新增/修改 Request VO") +@Data +public class ErpSalesOrganizationSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "22623") + private Long id; + + @Schema(description = "销售组织编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "销售组织编号不能为空") + private String number; + + @Schema(description = "销售组织描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "销售组织描述不能为空") + private String name; + + @Schema(description = "公司编码;存入ERP公司编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "公司编码;存入ERP公司编码不能为空") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehousePageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehousePageReqVO.java new file mode 100644 index 00000000..3b528335 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehousePageReqVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - ERP库位分页 Request VO") +@Data +public class ErpWarehousePageReqVO extends PageParam { + + @Schema(description = "工厂编码;将查询参数存入") + private String factoryNumber; + + @Schema(description = "库位描述", example = "张三") + private String name; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "库位编码") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseRespVO.java new file mode 100644 index 00000000..a1862d89 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseRespVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - ERP库位 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpWarehouseRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "16847") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂编码;将查询参数存入") + @ExcelProperty("工厂编码;将查询参数存入") + private String factoryNumber; + + @Schema(description = "库位描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("库位描述") + private String name; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "库位编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("库位编码") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseSaveReqVO.java new file mode 100644 index 00000000..3ce9d3eb --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseSaveReqVO.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +@Schema(description = "管理后台 - ERP库位新增/修改 Request VO") +@Data +public class ErpWarehouseSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "16847") + private Long id; + + @Schema(description = "工厂编码;将查询参数存入") + private String factoryNumber; + + @Schema(description = "库位描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotEmpty(message = "库位描述不能为空") + private String name; + + @Schema(description = "库位编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "库位编码不能为空") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpAssetDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpAssetDO.java new file mode 100644 index 00000000..1671f2df --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpAssetDO.java @@ -0,0 +1,110 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +/** +* ERP资产卡片 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_ast") +@KeySequence("sply_erp_ast_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpAssetDO{ + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 公司编号 + */ + @TableField("CPN_NUM") + private String companyNumber; + /** + * 资产主编码 + */ + @TableField("MAIN_AST_NUM") + private String mainAssetNumber; + /** + * 记录创建日期 + */ + @TableField("RCD_CRT_DT") + private LocalDateTime recordCreateDate; + /** + * 更改用户名 + */ + @TableField("UPD_USER_NAME") + private String updateUserName; + /** + * 资产类编号 + */ + @TableField("AST_TP_NUM") + private String assetTypeNumber; + /** + * 资产类描述 + */ + @TableField("AST_TP_NAME") + private String assetTypeName; + /** + * 资产资本化日期 + */ + @TableField("AST_DT") + private LocalDateTime assetDate; + /** + * 基本计量单位 + */ + @TableField("UOM") + private String uom; + /** + * 数量 + */ + @TableField("QTY") + private BigDecimal quantity; + /** + * 资产描述 + */ + @TableField("AST_DSP") + private String assetDescription; + /** + * 附加资产描述 + */ + @TableField("AST_DSP_ATT") + private String assetDescriptionAttach; + /** + * 折旧计算开始日期 + */ + @TableField("DEPR_STRT_DT") + private LocalDateTime depreciationStartDate; + /** + * 计划年使用期 + */ + @TableField("PLN_YR_DT") + private String planYearDate; + /** + * 成本中心编码 + */ + @TableField("CCTR_NUM") + private String costcenterNumber; + /** + * 责任成本中心 + */ + @TableField("DUTY_CCTR_NUM") + private String dutyCostcenterNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDO.java new file mode 100644 index 00000000..a9ae0f04 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDO.java @@ -0,0 +1,67 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +import java.util.List; + +/** +* ERP物料清单(BOM) DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_bm") +@KeySequence("sply_erp_bm_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpBomDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂编码 + */ + @TableField("FACT_NUM") + private String factoryNumber; + /** + * 顶层物料编码 + */ + @TableField("UP_MTRL") + private String upMaterial; + /** + * 可选BOM + */ + @TableField("USE_ITM") + private String useItem; + /** + * 物料描述 + */ + @TableField("MTRL_DSP") + private String materialDescription; + /** + * 基本数量 + */ + @TableField("QTY") + private BigDecimal quantity; + /** + * 基本单位 + */ + @TableField("UNT") + private String unit; + + @TableField(fill = FieldFill.INSERT) + private List erpBomDetailDOList; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDetailDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDetailDO.java new file mode 100644 index 00000000..5ad6182d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDetailDO.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +/** +* ERP物料清单(BOM)明细 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_bm_dtl") +@KeySequence("sply_erp_bm_dtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpBomDetailDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * BOM主键 + */ + @TableField("BM_ID") + private String bomId; + /** + * ERP物料清单主键 + */ + @TableField("ERP_BM_ID") + private String erpBomId; + /** + * 子项物料编码 + */ + @TableField("CHD_MTRL_NUM") + private String childMaterialNumber; + /** + * 子项物料描述 + */ + @TableField("CHD_MTRL_DSP") + private BigDecimal childMaterialDescription; + /** + * 子项类别 + */ + @TableField("CTGR") + private String category; + /** + * 基本数量 + */ + @TableField("QTY") + private BigDecimal quantity; + /** + * 基本单位 + */ + @TableField("UNT") + private String unit; + /** + * 物料标识 + */ + @TableField("IDE_TP") + private String identificationType; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCompanyDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCompanyDO.java new file mode 100644 index 00000000..993efd76 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCompanyDO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; +/** +* ERP公司 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_cpn") +@KeySequence("sply_erp_cpn_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +//@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +//public class ErpCompanyDO extends BaseDO { +public class ErpCompanyDO{ + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 公司名称 + */ + @TableField("NAME") + private String name; + /** + * 公司编码;唯一 + */ + @TableField("NUM") + private String number; + /** + * 本位币 + */ + @TableField("CUR") + private String currency; + + @TableField(exist = false) + private Integer TENANT_ID; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpContractDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpContractDO.java new file mode 100644 index 00000000..62c18c9f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpContractDO.java @@ -0,0 +1,330 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * ERP合同映射 DO + * + * @author 后台管理 + */ +@TableName("bse_erp_ctrt") +@KeySequence("bse_erp_ctrt_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** + * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO + */ +public class ErpContractDO extends BaseDO { + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 操作标识 + */ + @TableField("OPTN_ID") + private String operationId; + /** + * 合同主信息主键 + */ + @TableField("CTRT_MAIN_ID") + private Long contractMainId; + /** + * 合同编号 + */ + @TableField("CTRT_PPR_NUM") + private String contractPaperNumber; + /** + * 合同名称 + */ + @TableField("CTRT_NAME") + private String contractName; + /** + * 合同类型编号 + */ + @TableField("CTRT_TP_NUM") + private String contractTypeNumber; + /** + * 合同类型名称 + */ + @TableField("CTRT_TP_NAME") + private String contractTypeName; + /** + * 合同类别 + */ + @TableField("CTRT_CTGR") + private String contractCategory; + /** + * 是否虚拟合同 + */ + @TableField("IS_VRTL_CTRT") + private String isVirtualContract; + /** + * 客户/供应商编号;SAP客商公司代码 + */ + @TableField("SPLR_NUM") + private String supplierNumber; + /** + * 客户/供应商名称;SAP客商公司名称 + */ + @TableField("SPLR_NAME") + private String supplierName; + /** + * 代理方;SAP客商公司代码 + */ + @TableField("AGT") + private String agent; + /** + * 合同实施主体编号;SAP公司代码 + */ + @TableField("CTRT_IMPL_NUM") + private String contractImplementNumber; + /** + * 合同签订主体编号;SAP公司代码 + */ + @TableField("CTRT_SGN_NUM") + private String contractSignNumber; + /** + * 合同签订日期;格式:YYYY-MM-DD + */ + @TableField("SGN_DT") + private LocalDate signDate; + /** + * 合同起始日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期 + */ + @TableField("STRT_DT") + private LocalDate startDate; + /** + * 合同终止日期;格式:YYYY-MM-DD,长单合同:长单合同起始日期 非长单:合同合同签订日期 + */ + @TableField("STOP_DT") + private LocalDate stopDate; + /** + * 币种编号 + */ + @TableField("CUR") + private String currency; + /** + * 合同总金额(原币-含税);非长单合同:合同金额 长单合同:默认1000000000000000.00 + */ + @TableField("SRC_AMT") + private BigDecimal sourceAmount; + /** + * 合同总金额(本位币-含税);非长单合同:合同金额*合同的临时汇率 长单合同:默认1000000000000000.00 + */ + @TableField("BSC_AMT") + private BigDecimal basicAmount; + /** + * 变更后合同总金额(原币-含税);如果未做合同变更,金额等于合同总金额(原币-含税) + */ + @TableField("CHG_SRC_AMT") + private BigDecimal changeSourceAmount; + /** + * 变更后合同总金额(本位币-含税);如果未做合同变更,金额等于合同总金额(本位币-含税) + */ + @TableField("CHG_BSC_AMT") + private BigDecimal changeBasicAmount; + /** + * 合同状态编号 + */ + @TableField("STS_NUM") + private String statusNumber; + /** + * 合同状态名称 + */ + @TableField("STS_NAME") + private String statusName; + /** + * 是否有预付款;长单合同:否,非长单:取合同的预付款 + */ + @TableField("IS_PPYM") + private String isPrepayment; + /** + * 预付款比例;有预付款则需要填写 + */ + @TableField("PPYM_RTIO") + private BigDecimal prepaymentRatio; + /** + * 预付款金额;有预付款则需要填写(通过计算得出) + */ + @TableField("PPYM_AMT") + private BigDecimal prepaymentAmount; + /** + * 履约保证金-变更前(原币) + */ + @TableField("SRC_BFR_BND") + private BigDecimal sourceBeforeBond; + /** + * 履约保证金-变更前(本位币) + */ + @TableField("BSC_BFR_BND") + private BigDecimal basicBeforeBond; + /** + * 履约保证金-变更后(原币) + */ + @TableField("SRC_AFT_BND") + private BigDecimal sourceAfterBond; + /** + * 履约保证金-变更后(本位币) + */ + @TableField("BSC_AFT_BND") + private BigDecimal basicAfterBond; + /** + * 是否含质保金 + */ + @TableField("IS_QUA_AMT") + private String isQualityassuranceAmount; + /** + * 质保金比例;有质保金则需要填写 + */ + @TableField("QUA_RTIO") + private BigDecimal qualityassuranceRatio; + /** + * 质保金金额;有质保金则需要填写 + */ + @TableField("QUA_AMT") + private BigDecimal qualityassuranceAmount; + /** + * 是否内部企业 + */ + @TableField("IS_INTL") + private String isInternal; + /** + * 收支性质 + */ + @TableField("NTR") + private String nature; + /** + * 备注信息;提交ERP + */ + @TableField("RMK") + private String remark; + /** + * 累计结算金额(原币-含税);暂定不传 + */ + @TableField("SRC_ACC_STLM_AMT") + private BigDecimal sourceAccumulateSettlementAmount; + /** + * 累计结算金额(本位币-含税);暂定不传 + */ + @TableField("BSC_ACC_STLM_AMT") + private BigDecimal basicAccumulateSettlementAmount; + /** + * 累计已收付款金额(原币-含税);暂定不传 + */ + @TableField("SRC_USE_AMT") + private BigDecimal sourceUseAmount; + /** + * 累计已收付款金额(本位币-含税);暂定不传 + */ + @TableField("BSC_USE_AMT") + private BigDecimal basicUseAmount; + /** + * 累计已开收票金额(原币-含税);暂定不传 + */ + @TableField("SRC_INV_AMT") + private BigDecimal sourceInvoiceAmount; + /** + * 累计已开收票金额(本位币-含税);暂定不传 + */ + @TableField("BSC_INV_AMT") + private BigDecimal basicInvoiceAmount; + /** + * 累计预付款金额(原币-含税);暂定不传 + */ + @TableField("SRC_ACC_PPYM") + private BigDecimal sourceAccumulatePrepayment; + /** + * 累计预付款金额(本位币-含税);暂定不传 + */ + @TableField("BSC_ACC_PPYM") + private BigDecimal basicAccumulatePrepayment; + /** + * 履约保证金累计付款金额(原币);暂定不传 + */ + @TableField("SRC_ACC_BND") + private BigDecimal sourceAccumulateBond; + /** + * 履约保证金累计付款金额(本位币);暂定不传 + */ + @TableField("BSC_ACC_BND") + private BigDecimal basicAccumulateBond; + /** + * 履约保证金累计收款金额(原币);暂定不传 + */ + @TableField("SRC_ACC_AMT") + private BigDecimal sourceAccumulateAmount; + /** + * 履约保证金累计收款金额(本位币);暂定不传 + */ + @TableField("BSC_ACC_AMT") + private BigDecimal basicAccumulateAmount; + /** + * 是否框架合同;如果为是,合同总金额(本币)、合同总金额(原币)、变更后合同总金额(原币-含税)、变更后合同总金额(本位币-含税)赋默认值为:1000000000000000.00 + */ + @TableField("IS_FMWK") + private String isFramework; + /** + * 境内/境外 + */ + @TableField("IS_DOM") + private String isDomestic; + /** + * 建筑服务发生地;销售合同,且类型为SAP02COSR必填 + */ + @TableField("ARCH_SVC_PLCE") + private String architectureService‌Place; + /** + * 达到收款条件金额;销售合同,且类型为SAP02COSR必填 + */ + @TableField("PYEE_CND_AMT") + private BigDecimal payeeConditionAmount; + /** + * 公司编号 + */ + @TableField("COMPANY_ID") + private Long companyId; + /** + * 公司名称 + */ + @TableField("COMPANY_NAME") + private String companyName; + /** + * 部门编号 + */ + @TableField("DEPT_ID") + private Long deptId; + /** + * 部门名称 + */ + @TableField("DEPT_NAME") + private String deptName; + /** + * 岗位编号 + */ + @TableField("POST_ID") + private Long postId; + /** + * 创建者 + */ + @TableField("CREATOR_NAME") + private String creatorName; + /** + * 更新者 + */ + @TableField("UPDATER_NAME") + private String updaterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCostcenterDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCostcenterDO.java new file mode 100644 index 00000000..53e8e3a2 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCostcenterDO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.time.LocalDateTime; +/** +* ERP成本中心 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_cctr") +@KeySequence("sply_erp_cctr_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpCostcenterDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 成本中心编码 + */ + @TableField("NUM") + private String number; + /** + * 成本中心描述 + */ + @TableField("NAME") + private String name; + /** + * 工区必填;使用这个基础数据是,如果为X时必须和工区使用 + */ + @TableField("IS_USE") + private String isUse; + /** + * 功能范围 + */ + @TableField("SCO_NUM") + private String scopeNumber; + /** + * 功能范围描述 + */ + @TableField("SCO_NAME") + private String scopeName; + /** + * 起始日期 + */ + @TableField("STRT_DT") + private LocalDateTime startDate; + /** + * 截止日期 + */ + @TableField("END_DT") + private LocalDateTime endDate; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCustomerDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCustomerDO.java new file mode 100644 index 00000000..2423ae22 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCustomerDO.java @@ -0,0 +1,83 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.time.LocalDateTime; +/** +* ERP客商主数据 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_cstm") +@KeySequence("sply_erp_cstm_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +//@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +//public class ErpCustomerDO extends BaseDO { +public class ErpCustomerDO{ + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 编码 + */ + @TableField("NUM") + private String number; + /** + * 名称 + */ + @TableField("NAME") + private String name; + /** + * 账户组 + */ + @TableField("ACCT_GRP") + private String accountGroup; + /** + * 简称 + */ + @TableField("DSP") + private String description; + /** + * 中铝编号 + */ + @TableField("CTR_NUM") + private String centerNumber; + /** + * 创建日期 + */ + @TableField("CRT_DT") + private LocalDateTime createDate; + /** + * 修改日期 + */ + @TableField("RPR_DT") + private LocalDateTime repairDate; + /** + * 归档标识 + */ + @TableField("IS_GIV") + private String isGiveback; + /** + * 冻结标识 + */ + @TableField("IS_PRVS") + private String isProvisional; + + @TableField(exist = false) + private Integer TENANT_ID; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpFactoryDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpFactoryDO.java new file mode 100644 index 00000000..f3d73e08 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpFactoryDO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; +/** +* ERP工厂 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_fact") +@KeySequence("sply_erp_fact_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpFactoryDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂名称 + */ + @TableField("NAME") + private String name; + /** + * 工厂编码 + */ + @TableField("NUM") + private String number; + /** + * 公司编号 + */ + @TableField("CPN_ID") + private String companyId; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpInternalOrderDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpInternalOrderDO.java new file mode 100644 index 00000000..65070fe6 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpInternalOrderDO.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; +/** +* ERP内部订单 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_intl_ord") +@KeySequence("sply_erp_intl_ord_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpInternalOrderDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 内部订单编号 + */ + @TableField("NUM") + private String number; + /** + * 内部订单描述 + */ + @TableField("NAME") + private String name; + /** + * 内部订单类型 + */ + @TableField("TP") + private String type; + /** + * 是否已关闭;使用这个基础数据是,如果为X时必须和工区使用 + */ + @TableField("IS_OFF") + private String isOff; + /** + * 是否已完成 + */ + @TableField("IS_FIN") + private String isFinish; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpMaterialDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpMaterialDO.java new file mode 100644 index 00000000..b962257b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpMaterialDO.java @@ -0,0 +1,103 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.time.LocalDateTime; +/** +* ERP物料数据 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_mtrl") +@KeySequence("sply_erp_mtrl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +//@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +//public class ErpMaterialDO extends BaseDO { +public class ErpMaterialDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 中铜物料编码;系统使用时使用该编码 + */ + @TableField("DOWN_CTR_NUM") + private String downCenterNumber; + /** + * 中铝物料编码 + */ + @TableField("CTR_NUM") + private String centerNumber; + /** + * 创建日期 + */ + @TableField("CRT_DT") + private LocalDateTime createDate; + /** + * 物料类型 + */ + @TableField("MTRL_TP") + private String materialType; + /** + * 物料大类组 + */ + @TableField("MTRL_GRP_DT") + private String materialGroupDate; + /** + * 外部物料小类组 + */ + @TableField("EXT_MTRL_GRP_DT") + private String externalMaterialGroupDate; + /** + * 计量单位编码 + */ + @TableField("UNT") + private String unit; + /** + * 计量单位描述 + */ + @TableField("UNT_DSP") + private String unitDescription; + /** + * 物料类型描述 + */ + @TableField("MTRL_TP_DSP") + private String materialTypeDescription; + /** + * 物料组描述 + */ + @TableField("MTRL_GRP_DSP") + private String materialGroupDescription; + /** + * 外部物料小类组描述 + */ + @TableField("EXT_MTRL_GRP_DSP") + private String externalMaterialGroupDescription; + /** + * 物料名称 + */ + @TableField("MTRL_NAME") + private String materialName; + /** + * 物料长描述 + */ + @TableField("MTRL_LEN_DSP") + private String materialLengthDescription; + + @TableField(exist = false) + private Integer TENANT_ID; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDO.java new file mode 100644 index 00000000..56f5e263 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDO.java @@ -0,0 +1,79 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +/** +* ERP工艺路线 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_prcs") +@KeySequence("sply_erp_prcs_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpProcessDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂编码 + */ + @TableField("FACT_NUM") + private BigDecimal factoryNumber; + /** + * 物料编码 + */ + @TableField("MTRL_NUM") + private String materialNumber; + /** + * 物料描述 + */ + @TableField("MTRL_NAME") + private String materialName; + /** + * 工艺路线组 + */ + @TableField("BLN_GRP") + private String blineGroup; + /** + * 组计数器 + */ + @TableField("GRP_CNT") + private Long groupCount; + /** + * 工艺路线描述 + */ + @TableField("BLN_DSP") + private String blineDescription; + /** + * 计量单位 + */ + @TableField("UOM") + private String uom; + /** + * 用途 + */ + @TableField("USE_DSP") + private String useDescription; + /** + * 状态 + */ + @TableField("STS") + private String status; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDetailDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDetailDO.java new file mode 100644 index 00000000..c4bb345f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDetailDO.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +/** +* ERP工艺路线明细 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_prcs_dtl") +@KeySequence("sply_erp_prcs_dtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpProcessDetailDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * ERP工艺路线主键 + */ + @TableField("PRCS_ID") + private String processId; + /** + * 工序编码 + */ + @TableField("PROC_NUM") + private BigDecimal processingNumber; + /** + * 工序描述 + */ + @TableField("PROC_NAME") + private String processingName; + /** + * 作业的计量单位 + */ + @TableField("UOM") + private String uom; + /** + * 工作中心编号 + */ + @TableField("WRK_CTR_NUM") + private String workCenterNumber; + /** + * 工作中心描述 + */ + @TableField("WRK_CTR_NAME") + private String workCenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveOrderDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveOrderDO.java new file mode 100644 index 00000000..cf8b5fca --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveOrderDO.java @@ -0,0 +1,119 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.time.LocalDateTime; +/** +* ERP生产订单 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_pdtv_ord") +@KeySequence("sply_erp_pdtv_ord_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpProductiveOrderDO{ + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 公司编号 + */ + @TableField("CPN_NUM") + private String companyNumber; + /** + * 工厂编码 + */ + @TableField("FACT_NUM") + private String factoryNumber; + /** + * 工厂名称 + */ + @TableField("FACT_NAME") + private String factoryName; + /** + * 订单编号 + */ + @TableField("ORD_NUM") + private String orderNumber; + /** + * 基本开始日期 + */ + @TableField("STRT_DT") + private LocalDateTime startDate; + /** + * 基本完成日期 + */ + @TableField("END_DT") + private LocalDateTime endDate; + /** + * 主产品物料编号 + */ + @TableField("MAIN_MTRL_NUM") + private String mainMaterialNumber; + /** + * 计量单位 + */ + @TableField("UNT") + private String unit; + /** + * 物料描述 + */ + @TableField("MTRL_DSP") + private String materialDescription; + /** + * 工序列表 + */ + @TableField("PROC_LIST") + private String processingList; + /** + * 工序编号 + */ + @TableField("PROC_NUM") + private String processingNumber; + /** + * 工序描述 + */ + @TableField("PROC_DSP") + private String processingDescription; + /** + * 对象编号 + */ + @TableField("OBJ_NUM") + private String objectNumber; + /** + * 工作中心编码 + */ + @TableField("WRK_CTR_NUM") + private String workCenterNumber; + /** + * 工作中心描述 + */ + @TableField("WRK_CTR_DSP") + private String workCenterDescription; + /** + * 成本中心编码 + */ + @TableField("CCTR_NUM") + private String costcenterNumber; + /** + * 成本中心描述 + */ + @TableField("CCTR_NAME") + private String costcenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveVersionDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveVersionDO.java new file mode 100644 index 00000000..3025ffd7 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveVersionDO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +/** +* ERP生产版本 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_pdtv_ver") +@KeySequence("sply_erp_pdtv_ver_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpProductiveVersionDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂编码 + */ + @TableField("FACT_NUM") + private BigDecimal factoryNumber; + /** + * 物料编码 + */ + @TableField("MTRL_NUM") + private String materialNumber; + /** + * 生产版本编码 + */ + @TableField("PDTV_VER_NUM") + private String productiveVersionNumber; + /** + * 生产版本描述 + */ + @TableField("PDTV_VER_NAME") + private String productiveVersionName; + /** + * 备选BOM编号 + */ + @TableField("BM_NUM") + private String bomNumber; + /** + * 工艺路线组 + */ + @TableField("BLN_GRP") + private String blineGroup; + /** + * 组计数器 + */ + @TableField("GRP_CNT") + private Long groupCount; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpPurchaseOrganizationDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpPurchaseOrganizationDO.java new file mode 100644 index 00000000..4a3d34ac --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpPurchaseOrganizationDO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; +/** +* ERP采购组织 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_prch_orgz") +@KeySequence("sply_erp_prch_orgz_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpPurchaseOrganizationDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 采购组织编号 + */ + @TableField("NUM") + private String number; + /** + * 采购组织描述 + */ + @TableField("NAME") + private String name; + /** + * 公司编码;存入ERP公司编码 + */ + @TableField("CPN_NUM") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpSalesOrganizationDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpSalesOrganizationDO.java new file mode 100644 index 00000000..907f0adc --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpSalesOrganizationDO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; +/** +* ERP销售组织 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_sale_orgz") +@KeySequence("sply_erp_sale_orgz_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpSalesOrganizationDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 销售组织编号 + */ + @TableField("NUM") + private String number; + /** + * 销售组织描述 + */ + @TableField("NAME") + private String name; + /** + * 公司编码;存入ERP公司编码 + */ + @TableField("CPN_NUM") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpWarehouseDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpWarehouseDO.java new file mode 100644 index 00000000..1c05bb7f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpWarehouseDO.java @@ -0,0 +1,72 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; +/** +* ERP库位 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_wrh") +@KeySequence("sply_erp_wrh_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpWarehouseDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂编码;将查询参数存入 + */ + @TableField("FACT_NUM") + private String factoryNumber; + /** + * 库位描述 + */ + @TableField("NAME") + private String name; + /** + * 公司编号 + */ + @TableField("COMPANY_ID") + private Long companyId; + /** + * 公司名称 + */ + @TableField("COMPANY_NAME") + private String companyName; + /** + * 部门编号 + */ + @TableField("DEPT_ID") + private Long deptId; + /** + * 部门名称 + */ + @TableField("DEPT_NAME") + private String deptName; + /** + * 岗位编号 + */ + @TableField("POST_ID") + private Long postId; + /** + * 库位编码 + */ + @TableField("NUM") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpAssetMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpAssetMapper.java new file mode 100644 index 00000000..a4c1d1d2 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpAssetMapper.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpAssetDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP资产卡片 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpAssetMapper extends BaseMapperX { + + default PageResult selectPage(ErpAssetPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpAssetDO::getCompanyNumber, reqVO.getCompanyNumber()) + .eqIfPresent(ErpAssetDO::getMainAssetNumber, reqVO.getMainAssetNumber()) + .betweenIfPresent(ErpAssetDO::getRecordCreateDate, reqVO.getRecordCreateDate()) + .likeIfPresent(ErpAssetDO::getUpdateUserName, reqVO.getUpdateUserName()) + .eqIfPresent(ErpAssetDO::getAssetTypeNumber, reqVO.getAssetTypeNumber()) + .likeIfPresent(ErpAssetDO::getAssetTypeName, reqVO.getAssetTypeName()) + .betweenIfPresent(ErpAssetDO::getAssetDate, reqVO.getAssetDate()) + .eqIfPresent(ErpAssetDO::getUom, reqVO.getUom()) + .eqIfPresent(ErpAssetDO::getQuantity, reqVO.getQuantity()) + .eqIfPresent(ErpAssetDO::getAssetDescription, reqVO.getAssetDescription()) + .eqIfPresent(ErpAssetDO::getAssetDescriptionAttach, reqVO.getAssetDescriptionAttach()) + .betweenIfPresent(ErpAssetDO::getDepreciationStartDate, reqVO.getDepreciationStartDate()) + .eqIfPresent(ErpAssetDO::getPlanYearDate, reqVO.getPlanYearDate()) + .eqIfPresent(ErpAssetDO::getCostcenterNumber, reqVO.getCostcenterNumber()) + .eqIfPresent(ErpAssetDO::getDutyCostcenterNumber, reqVO.getDutyCostcenterNumber()) + .orderByDesc(ErpAssetDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomDetailMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomDetailMapper.java new file mode 100644 index 00000000..014a84c1 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomDetailMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP物料清单(BOM)明细 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpBomDetailMapper extends BaseMapperX { + + default PageResult selectPage(ErpBomDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpBomDetailDO::getBomId, reqVO.getBomId()) + .eqIfPresent(ErpBomDetailDO::getErpBomId, reqVO.getErpBomId()) + .eqIfPresent(ErpBomDetailDO::getChildMaterialNumber, reqVO.getChildMaterialNumber()) + .eqIfPresent(ErpBomDetailDO::getChildMaterialDescription, reqVO.getChildMaterialDescription()) + .eqIfPresent(ErpBomDetailDO::getCategory, reqVO.getCategory()) + .eqIfPresent(ErpBomDetailDO::getQuantity, reqVO.getQuantity()) + .eqIfPresent(ErpBomDetailDO::getUnit, reqVO.getUnit()) + .eqIfPresent(ErpBomDetailDO::getIdentificationType, reqVO.getIdentificationType()) + .orderByDesc(ErpBomDetailDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomMapper.java new file mode 100644 index 00000000..2a794f38 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP物料清单(BOM) Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpBomMapper extends BaseMapperX { + + default PageResult selectPage(ErpBomPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpBomDO::getFactoryNumber, reqVO.getFactoryNumber()) + .eqIfPresent(ErpBomDO::getUpMaterial, reqVO.getUpMaterial()) + .eqIfPresent(ErpBomDO::getUseItem, reqVO.getUseItem()) + .eqIfPresent(ErpBomDO::getMaterialDescription, reqVO.getMaterialDescription()) + .eqIfPresent(ErpBomDO::getQuantity, reqVO.getQuantity()) + .eqIfPresent(ErpBomDO::getUnit, reqVO.getUnit()) + .orderByDesc(ErpBomDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCompanyMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCompanyMapper.java new file mode 100644 index 00000000..4cf4ceda --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCompanyMapper.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCompanyDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP公司 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpCompanyMapper extends BaseMapperX { + + default PageResult selectPage(ErpCompanyPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ErpCompanyDO::getName, reqVO.getName()) + .eqIfPresent(ErpCompanyDO::getNumber, reqVO.getNumber()) + .eqIfPresent(ErpCompanyDO::getCurrency, reqVO.getCurrency()) + .orderByDesc(ErpCompanyDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpContractMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpContractMapper.java new file mode 100644 index 00000000..b5f978cc --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpContractMapper.java @@ -0,0 +1,76 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpContractDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP合同映射 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpContractMapper extends BaseMapperX { + + default PageResult selectPage(ErpContractPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpContractDO::getOperationId, reqVO.getOperationId()) + .eqIfPresent(ErpContractDO::getContractMainId, reqVO.getContractMainId()) + .eqIfPresent(ErpContractDO::getContractPaperNumber, reqVO.getContractPaperNumber()) + .likeIfPresent(ErpContractDO::getContractName, reqVO.getContractName()) + .eqIfPresent(ErpContractDO::getContractTypeNumber, reqVO.getContractTypeNumber()) + .likeIfPresent(ErpContractDO::getContractTypeName, reqVO.getContractTypeName()) + .eqIfPresent(ErpContractDO::getContractCategory, reqVO.getContractCategory()) + .eqIfPresent(ErpContractDO::getIsVirtualContract, reqVO.getIsVirtualContract()) + .eqIfPresent(ErpContractDO::getSupplierNumber, reqVO.getSupplierNumber()) + .likeIfPresent(ErpContractDO::getSupplierName, reqVO.getSupplierName()) + .eqIfPresent(ErpContractDO::getAgent, reqVO.getAgent()) + .eqIfPresent(ErpContractDO::getContractImplementNumber, reqVO.getContractImplementNumber()) + .eqIfPresent(ErpContractDO::getContractSignNumber, reqVO.getContractSignNumber()) + .betweenIfPresent(ErpContractDO::getSignDate, reqVO.getSignDate()) + .betweenIfPresent(ErpContractDO::getStartDate, reqVO.getStartDate()) + .betweenIfPresent(ErpContractDO::getStopDate, reqVO.getStopDate()) + .eqIfPresent(ErpContractDO::getCurrency, reqVO.getCurrency()) + .eqIfPresent(ErpContractDO::getSourceAmount, reqVO.getSourceAmount()) + .eqIfPresent(ErpContractDO::getBasicAmount, reqVO.getBasicAmount()) + .eqIfPresent(ErpContractDO::getChangeSourceAmount, reqVO.getChangeSourceAmount()) + .eqIfPresent(ErpContractDO::getChangeBasicAmount, reqVO.getChangeBasicAmount()) + .eqIfPresent(ErpContractDO::getStatusNumber, reqVO.getStatusNumber()) + .likeIfPresent(ErpContractDO::getStatusName, reqVO.getStatusName()) + .eqIfPresent(ErpContractDO::getIsPrepayment, reqVO.getIsPrepayment()) + .eqIfPresent(ErpContractDO::getPrepaymentRatio, reqVO.getPrepaymentRatio()) + .eqIfPresent(ErpContractDO::getPrepaymentAmount, reqVO.getPrepaymentAmount()) + .eqIfPresent(ErpContractDO::getSourceBeforeBond, reqVO.getSourceBeforeBond()) + .eqIfPresent(ErpContractDO::getBasicBeforeBond, reqVO.getBasicBeforeBond()) + .eqIfPresent(ErpContractDO::getSourceAfterBond, reqVO.getSourceAfterBond()) + .eqIfPresent(ErpContractDO::getBasicAfterBond, reqVO.getBasicAfterBond()) + .eqIfPresent(ErpContractDO::getIsQualityassuranceAmount, reqVO.getIsQualityassuranceAmount()) + .eqIfPresent(ErpContractDO::getQualityassuranceRatio, reqVO.getQualityassuranceRatio()) + .eqIfPresent(ErpContractDO::getQualityassuranceAmount, reqVO.getQualityassuranceAmount()) + .eqIfPresent(ErpContractDO::getIsInternal, reqVO.getIsInternal()) + .eqIfPresent(ErpContractDO::getNature, reqVO.getNature()) + .eqIfPresent(ErpContractDO::getRemark, reqVO.getRemark()) + .eqIfPresent(ErpContractDO::getSourceAccumulateSettlementAmount, reqVO.getSourceAccumulateSettlementAmount()) + .eqIfPresent(ErpContractDO::getBasicAccumulateSettlementAmount, reqVO.getBasicAccumulateSettlementAmount()) + .eqIfPresent(ErpContractDO::getSourceUseAmount, reqVO.getSourceUseAmount()) + .eqIfPresent(ErpContractDO::getBasicUseAmount, reqVO.getBasicUseAmount()) + .eqIfPresent(ErpContractDO::getSourceInvoiceAmount, reqVO.getSourceInvoiceAmount()) + .eqIfPresent(ErpContractDO::getBasicInvoiceAmount, reqVO.getBasicInvoiceAmount()) + .eqIfPresent(ErpContractDO::getSourceAccumulatePrepayment, reqVO.getSourceAccumulatePrepayment()) + .eqIfPresent(ErpContractDO::getBasicAccumulatePrepayment, reqVO.getBasicAccumulatePrepayment()) + .eqIfPresent(ErpContractDO::getSourceAccumulateBond, reqVO.getSourceAccumulateBond()) + .eqIfPresent(ErpContractDO::getBasicAccumulateBond, reqVO.getBasicAccumulateBond()) + .eqIfPresent(ErpContractDO::getSourceAccumulateAmount, reqVO.getSourceAccumulateAmount()) + .eqIfPresent(ErpContractDO::getBasicAccumulateAmount, reqVO.getBasicAccumulateAmount()) + .eqIfPresent(ErpContractDO::getIsFramework, reqVO.getIsFramework()) + .eqIfPresent(ErpContractDO::getIsDomestic, reqVO.getIsDomestic()) + .eqIfPresent(ErpContractDO::getArchitectureService‌Place, reqVO.getArchitectureService‌Place()) + .eqIfPresent(ErpContractDO::getPayeeConditionAmount, reqVO.getPayeeConditionAmount()) + .betweenIfPresent(ErpContractDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ErpContractDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCostcenterMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCostcenterMapper.java new file mode 100644 index 00000000..aa8b4c71 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCostcenterMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCostcenterDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP成本中心 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpCostcenterMapper extends BaseMapperX { + + default PageResult selectPage(ErpCostcenterPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpCostcenterDO::getNumber, reqVO.getNumber()) + .likeIfPresent(ErpCostcenterDO::getName, reqVO.getName()) + .eqIfPresent(ErpCostcenterDO::getIsUse, reqVO.getIsUse()) + .eqIfPresent(ErpCostcenterDO::getScopeNumber, reqVO.getScopeNumber()) + .likeIfPresent(ErpCostcenterDO::getScopeName, reqVO.getScopeName()) + .betweenIfPresent(ErpCostcenterDO::getStartDate, reqVO.getStartDate()) + .betweenIfPresent(ErpCostcenterDO::getEndDate, reqVO.getEndDate()) + .orderByDesc(ErpCostcenterDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCustomerMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCustomerMapper.java new file mode 100644 index 00000000..dfe7bd6b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCustomerMapper.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP客商主数据 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpCustomerMapper extends BaseMapperX { + + default PageResult selectPage(ErpCustomerPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpCustomerDO::getNumber, reqVO.getNumber()) + .likeIfPresent(ErpCustomerDO::getName, reqVO.getName()) + .eqIfPresent(ErpCustomerDO::getAccountGroup, reqVO.getAccountGroup()) + .eqIfPresent(ErpCustomerDO::getDescription, reqVO.getDescription()) + .eqIfPresent(ErpCustomerDO::getCenterNumber, reqVO.getCenterNumber()) + .betweenIfPresent(ErpCustomerDO::getCreateDate, reqVO.getCreateDate()) + .betweenIfPresent(ErpCustomerDO::getRepairDate, reqVO.getRepairDate()) + .eqIfPresent(ErpCustomerDO::getIsGiveback, reqVO.getIsGiveback()) + .eqIfPresent(ErpCustomerDO::getIsProvisional, reqVO.getIsProvisional()) + .orderByDesc(ErpCustomerDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpFactoryMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpFactoryMapper.java new file mode 100644 index 00000000..3bb91260 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpFactoryMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpFactoryDO; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * ERP工厂 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpFactoryMapper extends BaseMapperX { + + default PageResult selectPage(ErpFactoryPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ErpFactoryDO::getName, reqVO.getName()) + .eqIfPresent(ErpFactoryDO::getNumber, reqVO.getNumber()) + .orderByDesc(ErpFactoryDO::getId)); + } + + void updateBatch(@Param("toUpdate") List toUpdate); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpInternalOrderMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpInternalOrderMapper.java new file mode 100644 index 00000000..f8561c4d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpInternalOrderMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpInternalOrderDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP内部订单 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpInternalOrderMapper extends BaseMapperX { + + default PageResult selectPage(ErpInternalOrderPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpInternalOrderDO::getNumber, reqVO.getNumber()) + .likeIfPresent(ErpInternalOrderDO::getName, reqVO.getName()) + .eqIfPresent(ErpInternalOrderDO::getType, reqVO.getType()) + .eqIfPresent(ErpInternalOrderDO::getIsOff, reqVO.getIsOff()) + .eqIfPresent(ErpInternalOrderDO::getIsFinish, reqVO.getIsFinish()) + .orderByDesc(ErpInternalOrderDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpMaterialMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpMaterialMapper.java new file mode 100644 index 00000000..b170f840 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpMaterialMapper.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpMaterialDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP物料数据 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpMaterialMapper extends BaseMapperX { + + default PageResult selectPage(ErpMaterialPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpMaterialDO::getDownCenterNumber, reqVO.getDownCenterNumber()) + .eqIfPresent(ErpMaterialDO::getCenterNumber, reqVO.getCenterNumber()) + .betweenIfPresent(ErpMaterialDO::getCreateDate, reqVO.getCreateDate()) + .eqIfPresent(ErpMaterialDO::getMaterialType, reqVO.getMaterialType()) + .betweenIfPresent(ErpMaterialDO::getMaterialGroupDate, reqVO.getMaterialGroupDate()) + .betweenIfPresent(ErpMaterialDO::getExternalMaterialGroupDate, reqVO.getExternalMaterialGroupDate()) + .eqIfPresent(ErpMaterialDO::getUnit, reqVO.getUnit()) + .eqIfPresent(ErpMaterialDO::getUnitDescription, reqVO.getUnitDescription()) + .eqIfPresent(ErpMaterialDO::getMaterialTypeDescription, reqVO.getMaterialTypeDescription()) + .eqIfPresent(ErpMaterialDO::getMaterialGroupDescription, reqVO.getMaterialGroupDescription()) + .eqIfPresent(ErpMaterialDO::getExternalMaterialGroupDescription, reqVO.getExternalMaterialGroupDescription()) + .likeIfPresent(ErpMaterialDO::getMaterialName, reqVO.getMaterialName()) + .eqIfPresent(ErpMaterialDO::getMaterialLengthDescription, reqVO.getMaterialLengthDescription()) + .orderByDesc(ErpMaterialDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessDetailMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessDetailMapper.java new file mode 100644 index 00000000..85e1b285 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessDetailMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP工艺路线明细 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpProcessDetailMapper extends BaseMapperX { + + default PageResult selectPage(ErpProcessDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpProcessDetailDO::getProcessId, reqVO.getProcessId()) + .eqIfPresent(ErpProcessDetailDO::getProcessingNumber, reqVO.getProcessingNumber()) + .likeIfPresent(ErpProcessDetailDO::getProcessingName, reqVO.getProcessingName()) + .eqIfPresent(ErpProcessDetailDO::getUom, reqVO.getUom()) + .eqIfPresent(ErpProcessDetailDO::getWorkCenterNumber, reqVO.getWorkCenterNumber()) + .likeIfPresent(ErpProcessDetailDO::getWorkCenterName, reqVO.getWorkCenterName()) + .orderByDesc(ErpProcessDetailDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessMapper.java new file mode 100644 index 00000000..f46e4883 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessMapper.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP工艺路线 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpProcessMapper extends BaseMapperX { + + default PageResult selectPage(ErpProcessPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpProcessDO::getFactoryNumber, reqVO.getFactoryNumber()) + .eqIfPresent(ErpProcessDO::getMaterialNumber, reqVO.getMaterialNumber()) + .likeIfPresent(ErpProcessDO::getMaterialName, reqVO.getMaterialName()) + .eqIfPresent(ErpProcessDO::getBlineGroup, reqVO.getBlineGroup()) + .eqIfPresent(ErpProcessDO::getGroupCount, reqVO.getGroupCount()) + .eqIfPresent(ErpProcessDO::getBlineDescription, reqVO.getBlineDescription()) + .eqIfPresent(ErpProcessDO::getUom, reqVO.getUom()) + .eqIfPresent(ErpProcessDO::getUseDescription, reqVO.getUseDescription()) + .eqIfPresent(ErpProcessDO::getStatus, reqVO.getStatus()) + .orderByDesc(ErpProcessDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveOrderMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveOrderMapper.java new file mode 100644 index 00000000..2977e01f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveOrderMapper.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveOrderDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP生产订单 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpProductiveOrderMapper extends BaseMapperX { + + default PageResult selectPage(ErpProductiveOrderPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpProductiveOrderDO::getCompanyNumber, reqVO.getCompanyNumber()) + .eqIfPresent(ErpProductiveOrderDO::getFactoryNumber, reqVO.getFactoryNumber()) + .likeIfPresent(ErpProductiveOrderDO::getFactoryName, reqVO.getFactoryName()) + .eqIfPresent(ErpProductiveOrderDO::getOrderNumber, reqVO.getOrderNumber()) + .betweenIfPresent(ErpProductiveOrderDO::getStartDate, reqVO.getStartDate()) + .betweenIfPresent(ErpProductiveOrderDO::getEndDate, reqVO.getEndDate()) + .eqIfPresent(ErpProductiveOrderDO::getMainMaterialNumber, reqVO.getMainMaterialNumber()) + .eqIfPresent(ErpProductiveOrderDO::getUnit, reqVO.getUnit()) + .eqIfPresent(ErpProductiveOrderDO::getMaterialDescription, reqVO.getMaterialDescription()) + .eqIfPresent(ErpProductiveOrderDO::getProcessingList, reqVO.getProcessingList()) + .eqIfPresent(ErpProductiveOrderDO::getProcessingNumber, reqVO.getProcessingNumber()) + .eqIfPresent(ErpProductiveOrderDO::getProcessingDescription, reqVO.getProcessingDescription()) + .eqIfPresent(ErpProductiveOrderDO::getObjectNumber, reqVO.getObjectNumber()) + .eqIfPresent(ErpProductiveOrderDO::getWorkCenterNumber, reqVO.getWorkCenterNumber()) + .eqIfPresent(ErpProductiveOrderDO::getWorkCenterDescription, reqVO.getWorkCenterDescription()) + .eqIfPresent(ErpProductiveOrderDO::getCostcenterNumber, reqVO.getCostcenterNumber()) + .likeIfPresent(ErpProductiveOrderDO::getCostcenterName, reqVO.getCostcenterName()) + .orderByDesc(ErpProductiveOrderDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveVersionMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveVersionMapper.java new file mode 100644 index 00000000..ddf82003 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveVersionMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP生产版本 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpProductiveVersionMapper extends BaseMapperX { + + default PageResult selectPage(ErpProductiveVersionPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpProductiveVersionDO::getFactoryNumber, reqVO.getFactoryNumber()) + .eqIfPresent(ErpProductiveVersionDO::getMaterialNumber, reqVO.getMaterialNumber()) + .eqIfPresent(ErpProductiveVersionDO::getProductiveVersionNumber, reqVO.getProductiveVersionNumber()) + .likeIfPresent(ErpProductiveVersionDO::getProductiveVersionName, reqVO.getProductiveVersionName()) + .eqIfPresent(ErpProductiveVersionDO::getBomNumber, reqVO.getBomNumber()) + .eqIfPresent(ErpProductiveVersionDO::getBlineGroup, reqVO.getBlineGroup()) + .eqIfPresent(ErpProductiveVersionDO::getGroupCount, reqVO.getGroupCount()) + .orderByDesc(ErpProductiveVersionDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpPurchaseOrganizationMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpPurchaseOrganizationMapper.java new file mode 100644 index 00000000..1a119464 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpPurchaseOrganizationMapper.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP采购组织 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpPurchaseOrganizationMapper extends BaseMapperX { + + default PageResult selectPage(ErpPurchaseOrganizationPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpPurchaseOrganizationDO::getNumber, reqVO.getNumber()) + .likeIfPresent(ErpPurchaseOrganizationDO::getName, reqVO.getName()) + .eqIfPresent(ErpPurchaseOrganizationDO::getCompanyNumber, reqVO.getCompanyNumber()) + .orderByDesc(ErpPurchaseOrganizationDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpSalesOrganizationMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpSalesOrganizationMapper.java new file mode 100644 index 00000000..6caa0b25 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpSalesOrganizationMapper.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP销售组织 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpSalesOrganizationMapper extends BaseMapperX { + + default PageResult selectPage(ErpSalesOrganizationPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpSalesOrganizationDO::getNumber, reqVO.getNumber()) + .likeIfPresent(ErpSalesOrganizationDO::getName, reqVO.getName()) + .eqIfPresent(ErpSalesOrganizationDO::getCompanyNumber, reqVO.getCompanyNumber()) + .orderByDesc(ErpSalesOrganizationDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpWarehouseMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpWarehouseMapper.java new file mode 100644 index 00000000..7f91bcd3 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpWarehouseMapper.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehousePageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpWarehouseDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP库位 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpWarehouseMapper extends BaseMapperX { + + default PageResult selectPage(ErpWarehousePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpWarehouseDO::getFactoryNumber, reqVO.getFactoryNumber()) + .likeIfPresent(ErpWarehouseDO::getName, reqVO.getName()) + .betweenIfPresent(ErpWarehouseDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(ErpWarehouseDO::getNumber, reqVO.getNumber()) + .orderByDesc(ErpWarehouseDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/framework/security/config/SecurityConfiguration.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/framework/security/config/SecurityConfiguration.java new file mode 100644 index 00000000..721fc6cf --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/framework/security/config/SecurityConfiguration.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.erp.framework.security.config; + +import cn.iocoder.yudao.framework.security.config.AuthorizeRequestsCustomizer; +import cn.iocoder.yudao.module.infra.enums.ApiConstants; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer; + + +/** + * Template 模块的 Security 配置 + */ +@Configuration("erpSecurityConfiguration") +public class SecurityConfiguration { + + @Bean + public AuthorizeRequestsCustomizer authorizeRequestsCustomizer() { + return new AuthorizeRequestsCustomizer() { + + @Override + public void customize(AuthorizeHttpRequestsConfigurer.AuthorizationManagerRequestMatcherRegistry registry) { + // Swagger 接口文档 + registry.requestMatchers("/v3/api-docs/**").permitAll() + .requestMatchers("/webjars/**").permitAll() + .requestMatchers("/swagger-ui").permitAll() + .requestMatchers("/swagger-ui/**").permitAll(); + // Druid 监控 + registry.requestMatchers("/druid/**").permitAll(); + // Spring Boot Actuator 的安全配置 + registry.requestMatchers("/actuator").permitAll() + .requestMatchers("/actuator/**").permitAll(); + // RPC 服务的安全配置 + registry.requestMatchers(ApiConstants.PREFIX + "/**").permitAll(); + } + + }; + } + +} diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpAssetService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpAssetService.java new file mode 100644 index 00000000..36e56172 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpAssetService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpAssetDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP资产卡片 Service 接口 + * + * @author 后台管理 + */ +public interface ErpAssetService { + + /** + * 创建ERP资产卡片 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpAssetRespVO createErpAsset(@Valid ErpAssetSaveReqVO createReqVO); + + /** + * 更新ERP资产卡片 + * + * @param updateReqVO 更新信息 + */ + void updateErpAsset(@Valid ErpAssetSaveReqVO updateReqVO); + + /** + * 删除ERP资产卡片 + * + * @param id 编号 + */ + void deleteErpAsset(Long id); + + /** + * 批量删除ERP资产卡片 + * + * @param ids 编号 + */ + void deleteErpAssetListByIds(List ids); + + /** + * 获得ERP资产卡片 + * + * @param id 编号 + * @return ERP资产卡片 + */ + ErpAssetDO getErpAsset(Long id); + + /** + * 获得ERP资产卡片分页 + * + * @param pageReqVO 分页查询 + * @return ERP资产卡片分页 + */ + PageResult getErpAssetPage(ErpAssetPageReqVO pageReqVO); + + void callErpRfcInterface(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpAssetServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpAssetServiceImpl.java new file mode 100644 index 00000000..24cb4fb7 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpAssetServiceImpl.java @@ -0,0 +1,228 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpAssetSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpAssetDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpAssetMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_ASSET_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP资产卡片 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpAssetServiceImpl implements ErpAssetService { + + @Resource + private ErpAssetMapper erpAssetMapper; + + @Resource + private ErpConfig erpConfig; + + @Override + public ErpAssetRespVO createErpAsset(ErpAssetSaveReqVO createReqVO) { + // 插入 + ErpAssetDO erpAsset = BeanUtils.toBean(createReqVO, ErpAssetDO.class); + erpAssetMapper.insert(erpAsset); + // 返回 + return BeanUtils.toBean(erpAsset, ErpAssetRespVO.class); + } + + @Override + public void updateErpAsset(ErpAssetSaveReqVO updateReqVO) { + // 校验存在 + validateErpAssetExists(updateReqVO.getId()); + // 更新 + ErpAssetDO updateObj = BeanUtils.toBean(updateReqVO, ErpAssetDO.class); + erpAssetMapper.updateById(updateObj); + } + + @Override + public void deleteErpAsset(Long id) { + // 校验存在 + validateErpAssetExists(id); + // 删除 + erpAssetMapper.deleteById(id); + } + + @Override + public void deleteErpAssetListByIds(List ids) { + // 校验存在 + validateErpAssetExists(ids); + // 删除 + erpAssetMapper.deleteByIds(ids); + } + + private void validateErpAssetExists(List ids) { + List list = erpAssetMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_ASSET_NOT_EXISTS); + } + } + + private void validateErpAssetExists(Long id) { + if (erpAssetMapper.selectById(id) == null) { + throw exception(ERP_ASSET_NOT_EXISTS); + } + } + + @Override + public ErpAssetDO getErpAsset(Long id) { + return erpAssetMapper.selectById(id); + } + + @Override + public PageResult getErpAssetPage(ErpAssetPageReqVO pageReqVO) { + return erpAssetMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + @XxlJob("getErpAssetTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.资产卡片; + String funcnr = funcnrEnum.getFuncnr(); + // 构建req参数 + Map req = new HashMap<>(); + List> datumList = new ArrayList<>(); + Map datumEntry = new HashMap<>(); + datumEntry.put("sign", "I"); + datumEntry.put("option", "EQ"); + datumEntry.put("low", LocalDate.now().toString()); + datumList.add(datumEntry); + req.put(funcnrEnum.getDatekey(), datumList); + + JSONArray dataArrayALL = new JSONArray(); + List redisCache = erpConfig.getRedisCache(OftenEnum.FuncnrEnum.公司代码.getFuncnr()); + if (CollUtil.isEmpty(redisCache)) { + return; + } + for (String number : redisCache) { + req.put("BUKRS", number); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key, funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + ErpAssetDO DO = new ErpAssetDO(); + DO.setCompanyNumber(dataJson.getString("BUKRS")); + DO.setMainAssetNumber(dataJson.getString("ANLN1")); + if (!dataJson.getString("ERDAT").equals("0000-00-00")) { + DO.setRecordCreateDate(LocalDateTime.parse(dataJson.getString("ERDAT") + "T00:00:00")); + } + DO.setUpdateUserName(dataJson.getString("ERNAM")); + DO.setAssetTypeNumber(dataJson.getString("ANLKL")); + DO.setAssetTypeName(dataJson.getString("TXK20")); + if (!dataJson.getString("AKTIV").equals("0000-00-00")) { + DO.setAssetDate(LocalDateTime.parse(dataJson.getString("AKTIV") + "T00:00:00")); + } + DO.setUom(dataJson.getString("MEINS")); + DO.setQuantity(dataJson.getBigDecimal("MENGE")); + DO.setAssetDescription(dataJson.getString("TXT50")); + DO.setAssetDescriptionAttach(dataJson.getString("TXA50")); + if (!dataJson.getString("AFABG").equals("0000-00-00")) { + DO.setDepreciationStartDate(LocalDateTime.parse(dataJson.getString("AFABG") + "T00:00:00")); + } + DO.setPlanYearDate(dataJson.getString("NDJAR")); + DO.setCostcenterNumber(dataJson.getString("KOSTL")); + DO.setDutyCostcenterNumber(dataJson.getString("KOSTLV")); + if (comnumbers.contains(DO.getMainAssetNumber()+"-"+DO.getCompanyNumber())) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + + return new ProcessingResult(toUpdate, toInsert, key, allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpAssetMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpAssetMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key, result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert, String key, List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailService.java new file mode 100644 index 00000000..5fea1b59 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP物料清单(BOM)明细 Service 接口 + * + * @author 后台管理 + */ +public interface ErpBomDetailService { + + /** + * 创建ERP物料清单(BOM)明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpBomDetailRespVO createErpBomDetail(@Valid ErpBomDetailSaveReqVO createReqVO); + + /** + * 更新ERP物料清单(BOM)明细 + * + * @param updateReqVO 更新信息 + */ + void updateErpBomDetail(@Valid ErpBomDetailSaveReqVO updateReqVO); + + /** + * 删除ERP物料清单(BOM)明细 + * + * @param id 编号 + */ + void deleteErpBomDetail(Long id); + + /** + * 批量删除ERP物料清单(BOM)明细 + * + * @param ids 编号 + */ + void deleteErpBomDetailListByIds(List ids); + + /** + * 获得ERP物料清单(BOM)明细 + * + * @param id 编号 + * @return ERP物料清单(BOM)明细 + */ + ErpBomDetailDO getErpBomDetail(Long id); + + /** + * 获得ERP物料清单(BOM)明细分页 + * + * @param pageReqVO 分页查询 + * @return ERP物料清单(BOM)明细分页 + */ + PageResult getErpBomDetailPage(ErpBomDetailPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailServiceImpl.java new file mode 100644 index 00000000..3d52c0cd --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpBomDetailMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_BOM_DETAIL_NOT_EXISTS; + +/** + * ERP物料清单(BOM)明细 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpBomDetailServiceImpl implements ErpBomDetailService { + + @Resource + private ErpBomDetailMapper erpBomDetailMapper; + + @Override + public ErpBomDetailRespVO createErpBomDetail(ErpBomDetailSaveReqVO createReqVO) { + // 插入 + ErpBomDetailDO erpBomDetail = BeanUtils.toBean(createReqVO, ErpBomDetailDO.class); + erpBomDetailMapper.insert(erpBomDetail); + // 返回 + return BeanUtils.toBean(erpBomDetail, ErpBomDetailRespVO.class); + } + + @Override + public void updateErpBomDetail(ErpBomDetailSaveReqVO updateReqVO) { + // 校验存在 + validateErpBomDetailExists(updateReqVO.getId()); + // 更新 + ErpBomDetailDO updateObj = BeanUtils.toBean(updateReqVO, ErpBomDetailDO.class); + erpBomDetailMapper.updateById(updateObj); + } + + @Override + public void deleteErpBomDetail(Long id) { + // 校验存在 + validateErpBomDetailExists(id); + // 删除 + erpBomDetailMapper.deleteById(id); + } + + @Override + public void deleteErpBomDetailListByIds(List ids) { + // 校验存在 + validateErpBomDetailExists(ids); + // 删除 + erpBomDetailMapper.deleteByIds(ids); + } + + private void validateErpBomDetailExists(List ids) { + List list = erpBomDetailMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_BOM_DETAIL_NOT_EXISTS); + } + } + + private void validateErpBomDetailExists(Long id) { + if (erpBomDetailMapper.selectById(id) == null) { + throw exception(ERP_BOM_DETAIL_NOT_EXISTS); + } + } + + @Override + public ErpBomDetailDO getErpBomDetail(Long id) { + return erpBomDetailMapper.selectById(id); + } + + @Override + public PageResult getErpBomDetailPage(ErpBomDetailPageReqVO pageReqVO) { + return erpBomDetailMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomService.java new file mode 100644 index 00000000..32c104d5 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP物料清单(BOM) Service 接口 + * + * @author 后台管理 + */ +public interface ErpBomService { + + /** + * 创建ERP物料清单(BOM) + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpBomRespVO createErpBom(@Valid ErpBomSaveReqVO createReqVO); + + /** + * 更新ERP物料清单(BOM) + * + * @param updateReqVO 更新信息 + */ + void updateErpBom(@Valid ErpBomSaveReqVO updateReqVO); + + /** + * 删除ERP物料清单(BOM) + * + * @param id 编号 + */ + void deleteErpBom(Long id); + + /** + * 批量删除ERP物料清单(BOM) + * + * @param ids 编号 + */ + void deleteErpBomListByIds(List ids); + + /** + * 获得ERP物料清单(BOM) + * + * @param id 编号 + * @return ERP物料清单(BOM) + */ + ErpBomDO getErpBom(Long id); + + /** + * 获得ERP物料清单(BOM)分页 + * + * @param pageReqVO 分页查询 + * @return ERP物料清单(BOM)分页 + */ + PageResult getErpBomPage(ErpBomPageReqVO pageReqVO); + + void callErpRfcInterface(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomServiceImpl.java new file mode 100644 index 00000000..640013a4 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomServiceImpl.java @@ -0,0 +1,231 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpBomMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_BOM_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP物料清单(BOM) Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpBomServiceImpl implements ErpBomService { + + @Resource + private ErpBomMapper erpBomMapper; + + @Resource + private ErpConfig erpConfig; + + @Override + public ErpBomRespVO createErpBom(ErpBomSaveReqVO createReqVO) { + // 插入 + ErpBomDO erpBom = BeanUtils.toBean(createReqVO, ErpBomDO.class); + erpBomMapper.insert(erpBom); + // 返回 + return BeanUtils.toBean(erpBom, ErpBomRespVO.class); + } + + @Override + public void updateErpBom(ErpBomSaveReqVO updateReqVO) { + // 校验存在 + validateErpBomExists(updateReqVO.getId()); + // 更新 + ErpBomDO updateObj = BeanUtils.toBean(updateReqVO, ErpBomDO.class); + erpBomMapper.updateById(updateObj); + } + + @Override + public void deleteErpBom(Long id) { + // 校验存在 + validateErpBomExists(id); + // 删除 + erpBomMapper.deleteById(id); + } + + @Override + public void deleteErpBomListByIds(List ids) { + // 校验存在 + validateErpBomExists(ids); + // 删除 + erpBomMapper.deleteByIds(ids); + } + + private void validateErpBomExists(List ids) { + List list = erpBomMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_BOM_NOT_EXISTS); + } + } + + private void validateErpBomExists(Long id) { + if (erpBomMapper.selectById(id) == null) { + throw exception(ERP_BOM_NOT_EXISTS); + } + } + + @Override + public ErpBomDO getErpBom(Long id) { + return erpBomMapper.selectById(id); + } + + @Override + public PageResult getErpBomPage(ErpBomPageReqVO pageReqVO) { + return erpBomMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + @XxlJob("getErpBomTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.BOM清单; + String funcnr = funcnrEnum.getFuncnr(); + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + List redisCache = erpConfig.getRedisCache(OftenEnum.FuncnrEnum.工厂信息.getFuncnr()); + if (CollUtil.isEmpty(redisCache)) { + return; + } + for (String factoryNumber : redisCache) { + req.put("WERKS", factoryNumber); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map numbers = erpConfig.numbersMap(key); + Map numberDels = erpConfig.numbersMap(key+"del"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + List allnumbers = new ArrayList<>(); + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + ErpBomDO DO = new ErpBomDO(); + DO.setFactoryNumber(dataJson.getString("WERKS")); + DO.setUpMaterial(dataJson.getString("MATNR")); + DO.setUseItem(dataJson.getString("STLAL")); +// DO.set(dataJson.getString("STLAN"));数据库无这个字段 + DO.setMaterialDescription(dataJson.getString("MAKTX")); + DO.setQuantity(dataJson.getBigDecimal("BMENG")); + DO.setUnit(dataJson.getString("BMEIN")); + String number =DO.getUpMaterial()+"-"+DO.getUseItem()+"-"+DO.getFactoryNumber(); + String domId = null; + if (numbers.get(number)!=null) { + // 更新 + domId = numbers.get(number); + DO.setId(Long.valueOf(domId)); + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + + JSONArray dataJsonItem = dataJson.getJSONArray("ITEM"); + if (dataJsonItem != null) { + List erpBomDetailDOList =new ArrayList<>(); + for (int j = 0; j < dataJsonItem.size(); j++){ + JSONObject dataJsonItemJson = dataJsonItem.getJSONObject(j); + ErpBomDetailDO detailDO = new ErpBomDetailDO(); + String numberDel = number+dataJsonItemJson.getString("STVKN"); + if (numberDels.get( numberDel) != null){ + detailDO.setId(Long.valueOf(numberDels.get( numberDel))); + } + detailDO.setBomId(domId); + detailDO.setErpBomId(dataJsonItemJson.getString("STVKN")); + detailDO.setErpBomId(dataJsonItemJson.getString("IDNRK")); + detailDO.setErpBomId(dataJsonItemJson.getString("OJTXP")); + detailDO.setErpBomId(dataJsonItemJson.getString("POSTP")); + detailDO.setErpBomId(dataJsonItemJson.getString("MENGE")); + detailDO.setErpBomId(dataJsonItemJson.getString("MEINS")); + detailDO.setErpBomId(dataJsonItemJson.getString("WLCAT")); + erpBomDetailDOList.add(detailDO); + } + DO.setErpBomDetailDOList(erpBomDetailDOList); + } + } + } + + return new ProcessingResult(toUpdate, toInsert, key, allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpBomMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpBomMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key, result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert, String key, List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyService.java new file mode 100644 index 00000000..72c6136f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanySaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCompanyDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP公司 Service 接口 + * + * @author 后台管理 + */ +public interface ErpCompanyService { + + /** + * 创建ERP公司 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpCompanyRespVO createErpCompany(@Valid ErpCompanySaveReqVO createReqVO); + + /** + * 更新ERP公司 + * + * @param updateReqVO 更新信息 + */ + void updateErpCompany(@Valid ErpCompanySaveReqVO updateReqVO); + + /** + * 删除ERP公司 + * + * @param id 编号 + */ + void deleteErpCompany(Long id); + + /** + * 批量删除ERP公司 + * + * @param ids 编号 + */ + void deleteErpCompanyListByIds(List ids); + + /** + * 获得ERP公司 + * + * @param id 编号 + * @return ERP公司 + */ + ErpCompanyDO getErpCompany(Long id); + + /** + * 获得ERP公司分页 + * + * @param pageReqVO 分页查询 + * @return ERP公司分页 + */ + PageResult getErpCompanyPage(ErpCompanyPageReqVO pageReqVO); + + void callErpRfcInterface(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java new file mode 100644 index 00000000..cafe7830 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java @@ -0,0 +1,190 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanySaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCompanyDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpCompanyMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_COMPANY_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP公司 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpCompanyServiceImpl implements ErpCompanyService { + + @Resource + private ErpCompanyMapper erpCompanyMapper; + + @Resource + private ErpConfig erpConfig; + + @Override + public ErpCompanyRespVO createErpCompany(ErpCompanySaveReqVO createReqVO) { + // 插入 + ErpCompanyDO erpCompany = BeanUtils.toBean(createReqVO, ErpCompanyDO.class); + erpCompanyMapper.insert(erpCompany); + // 返回 + return BeanUtils.toBean(erpCompany, ErpCompanyRespVO.class); + } + + @Override + public void updateErpCompany(ErpCompanySaveReqVO updateReqVO) { + // 校验存在 + validateErpCompanyExists(updateReqVO.getId()); + // 更新 + ErpCompanyDO updateObj = BeanUtils.toBean(updateReqVO, ErpCompanyDO.class); + erpCompanyMapper.updateById(updateObj); + } + + @Override + public void deleteErpCompany(Long id) { + // 校验存在 + validateErpCompanyExists(id); + // 删除 + erpCompanyMapper.deleteById(id); + } + + @Override + public void deleteErpCompanyListByIds(List ids) { + // 校验存在 + validateErpCompanyExists(ids); + // 删除 + erpCompanyMapper.deleteByIds(ids); + } + + private void validateErpCompanyExists(List ids) { + List list = erpCompanyMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_COMPANY_NOT_EXISTS); + } + } + + private void validateErpCompanyExists(Long id) { + if (erpCompanyMapper.selectById(id) == null) { + throw exception(ERP_COMPANY_NOT_EXISTS); + } + } + + @Override + public ErpCompanyDO getErpCompany(Long id) { + return erpCompanyMapper.selectById(id); + } + + @Override + public PageResult getErpCompanyPage(ErpCompanyPageReqVO pageReqVO) { + return erpCompanyMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + @XxlJob("getCompanyTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.公司代码; + String funcnr = funcnrEnum.getFuncnr(); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, null); + if (dataArray == null || dataArray.isEmpty()) { + return; + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArray,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("BUKRS").trim(); + if (number != null) { + ErpCompanyDO DO = new ErpCompanyDO(); + DO.setName(dataJson.getString("BUTXT")); + DO.setNumber(number); + DO.setCurrency(dataJson.getString("WAERS")); + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + } + + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpCompanyMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpCompanyMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpContractService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpContractService.java new file mode 100644 index 00000000..dcaea71e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpContractService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpContractDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP合同映射 Service 接口 + * + * @author 后台管理 + */ +public interface ErpContractService { + + /** + * 创建ERP合同映射 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpContractRespVO createErpContract(@Valid ErpContractSaveReqVO createReqVO); + + /** + * 更新ERP合同映射 + * + * @param updateReqVO 更新信息 + */ + void updateErpContract(@Valid ErpContractSaveReqVO updateReqVO); + + /** + * 删除ERP合同映射 + * + * @param id 编号 + */ + void deleteErpContract(Long id); + + /** + * 批量删除ERP合同映射 + * + * @param ids 编号 + */ + void deleteErpContractListByIds(List ids); + + /** + * 获得ERP合同映射 + * + * @param id 编号 + * @return ERP合同映射 + */ + ErpContractDO getErpContract(Long id); + + /** + * 获得ERP合同映射分页 + * + * @param pageReqVO 分页查询 + * @return ERP合同映射分页 + */ + PageResult getErpContractPage(ErpContractPageReqVO pageReqVO); + + void callErpRfcInterface(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpContractServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpContractServiceImpl.java new file mode 100644 index 00000000..d84966e7 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpContractServiceImpl.java @@ -0,0 +1,191 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpContractDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpContractDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpContractMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_CONTRACT_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP合同映射 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpContractServiceImpl implements ErpContractService { + + @Resource + private ErpContractMapper erpContractMapper; + + @Resource + private ErpConfig erpConfig; + + @Override + public ErpContractRespVO createErpContract(ErpContractSaveReqVO createReqVO) { + // 插入 + ErpContractDO erpContract = BeanUtils.toBean(createReqVO, ErpContractDO.class); + erpContractMapper.insert(erpContract); + // 返回 + return BeanUtils.toBean(erpContract, ErpContractRespVO.class); + } + + @Override + public void updateErpContract(ErpContractSaveReqVO updateReqVO) { + // 校验存在 + validateErpContractExists(updateReqVO.getId()); + // 更新 + ErpContractDO updateObj = BeanUtils.toBean(updateReqVO, ErpContractDO.class); + erpContractMapper.updateById(updateObj); + } + + @Override + public void deleteErpContract(Long id) { + // 校验存在 + validateErpContractExists(id); + // 删除 + erpContractMapper.deleteById(id); + } + + @Override + public void deleteErpContractListByIds(List ids) { + // 校验存在 + validateErpContractExists(ids); + // 删除 + erpContractMapper.deleteByIds(ids); + } + + private void validateErpContractExists(List ids) { + List list = erpContractMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_CONTRACT_NOT_EXISTS); + } + } + + private void validateErpContractExists(Long id) { + if (erpContractMapper.selectById(id) == null) { + throw exception(ERP_CONTRACT_NOT_EXISTS); + } + } + + @Override + public ErpContractDO getErpContract(Long id) { + return erpContractMapper.selectById(id); + } + + @Override + public PageResult getErpContractPage(ErpContractPageReqVO pageReqVO) { + return erpContractMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + @XxlJob("getErpContractTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.合同信息; + String funcnr = funcnrEnum.getFuncnr(); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, null); + if (dataArray == null || dataArray.isEmpty()) { + return; + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArray,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("BUKRS").trim(); + if (number != null) { + ErpContractDO DO = new ErpContractDO(); +// DO.setName(dataJson.getString("BUTXT")); +// DO.setNumber(number); +// DO.setCurrency(dataJson.getString("WAERS")); + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + } + + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpContractMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpContractMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterService.java new file mode 100644 index 00000000..58de7129 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCostcenterDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP成本中心 Service 接口 + * + * @author 后台管理 + */ +public interface ErpCostcenterService { + + /** + * 创建ERP成本中心 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpCostcenterRespVO createErpCostcenter(@Valid ErpCostcenterSaveReqVO createReqVO); + + /** + * 更新ERP成本中心 + * + * @param updateReqVO 更新信息 + */ + void updateErpCostcenter(@Valid ErpCostcenterSaveReqVO updateReqVO); + + /** + * 删除ERP成本中心 + * + * @param id 编号 + */ + void deleteErpCostcenter(Long id); + + /** + * 批量删除ERP成本中心 + * + * @param ids 编号 + */ + void deleteErpCostcenterListByIds(List ids); + + /** + * 获得ERP成本中心 + * + * @param id 编号 + * @return ERP成本中心 + */ + ErpCostcenterDO getErpCostcenter(Long id); + + /** + * 获得ERP成本中心分页 + * + * @param pageReqVO 分页查询 + * @return ERP成本中心分页 + */ + PageResult getErpCostcenterPage(ErpCostcenterPageReqVO pageReqVO); + + void callErpRfcInterface(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterServiceImpl.java new file mode 100644 index 00000000..36de4400 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterServiceImpl.java @@ -0,0 +1,210 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCostcenterDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCostcenterDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpCostcenterMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_COSTCENTER_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP成本中心 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpCostcenterServiceImpl implements ErpCostcenterService { + + @Resource + private ErpCostcenterMapper erpCostcenterMapper; + + @Resource + private ErpConfig erpConfig; + + @Override + public ErpCostcenterRespVO createErpCostcenter(ErpCostcenterSaveReqVO createReqVO) { + // 插入 + ErpCostcenterDO erpCostcenter = BeanUtils.toBean(createReqVO, ErpCostcenterDO.class); + erpCostcenterMapper.insert(erpCostcenter); + // 返回 + return BeanUtils.toBean(erpCostcenter, ErpCostcenterRespVO.class); + } + + @Override + public void updateErpCostcenter(ErpCostcenterSaveReqVO updateReqVO) { + // 校验存在 + validateErpCostcenterExists(updateReqVO.getId()); + // 更新 + ErpCostcenterDO updateObj = BeanUtils.toBean(updateReqVO, ErpCostcenterDO.class); + erpCostcenterMapper.updateById(updateObj); + } + + @Override + public void deleteErpCostcenter(Long id) { + // 校验存在 + validateErpCostcenterExists(id); + // 删除 + erpCostcenterMapper.deleteById(id); + } + + @Override + public void deleteErpCostcenterListByIds(List ids) { + // 校验存在 + validateErpCostcenterExists(ids); + // 删除 + erpCostcenterMapper.deleteByIds(ids); + } + + private void validateErpCostcenterExists(List ids) { + List list = erpCostcenterMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_COSTCENTER_NOT_EXISTS); + } + } + + private void validateErpCostcenterExists(Long id) { + if (erpCostcenterMapper.selectById(id) == null) { + throw exception(ERP_COSTCENTER_NOT_EXISTS); + } + } + + @Override + public ErpCostcenterDO getErpCostcenter(Long id) { + return erpCostcenterMapper.selectById(id); + } + + @Override + public PageResult getErpCostcenterPage(ErpCostcenterPageReqVO pageReqVO) { + return erpCostcenterMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + @XxlJob("getErpCostcenterTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.成本中心; + String funcnr = funcnrEnum.getFuncnr(); + + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + List redisCache = erpConfig.getRedisCache(OftenEnum.FuncnrEnum.公司代码.getFuncnr()); + if (CollUtil.isEmpty(redisCache)) { + return; + } + // 1. 调用ERP接口获取数据 + for (String number : redisCache) { + req.put("BUKRS", number); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + ErpCostcenterDO DO = new ErpCostcenterDO(); + DO.setNumber(dataJson.getString("KOSTL")); + DO.setName(dataJson.getString("KTEX")); + DO.setIsUse(dataJson.getString("DRNAM")); + DO.setScopeNumber(dataJson.getString("FKBER")); + if (!dataJson.getString("AKTIV").equals("0000-00-00")) { + DO.setStartDate(LocalDateTime.parse(dataJson.getString("DATAB") + "T00:00:00")); + } + if (!dataJson.getString("AKTIV").equals("0000-00-00")) { + DO.setStartDate(LocalDateTime.parse(dataJson.getString("DATBI") + "T00:00:00")); + } + DO.setScopeName(dataJson.getString("FKBTX")); + if (comnumbers.contains(dataJson.getString("KOSTL"))) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpCostcenterMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpCostcenterMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerService.java new file mode 100644 index 00000000..58f5ffcf --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerService.java @@ -0,0 +1,67 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP客商主数据 Service 接口 + * + * @author 后台管理 + */ +public interface ErpCustomerService { + + /** + * 创建ERP客商主数据 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpCustomerRespVO createErpCustomer(@Valid ErpCustomerSaveReqVO createReqVO); + + /** + * 更新ERP客商主数据 + * + * @param updateReqVO 更新信息 + */ + void updateErpCustomer(@Valid ErpCustomerSaveReqVO updateReqVO); + + /** + * 删除ERP客商主数据 + * + * @param id 编号 + */ + void deleteErpCustomer(Long id); + + /** + * 批量删除ERP客商主数据 + * + * @param ids 编号 + */ + void deleteErpCustomerListByIds(List ids); + + /** + * 获得ERP客商主数据 + * + * @param id 编号 + * @return ERP客商主数据 + */ + ErpCustomerDO getErpCustomer(Long id); + + /** + * 获得ERP客商主数据分页 + * + * @param pageReqVO 分页查询 + * @return ERP客商主数据分页 + */ + PageResult getErpCustomerPage(ErpCustomerPageReqVO pageReqVO); + + void callErpRfcInterface(); + + void initialize(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerServiceImpl.java new file mode 100644 index 00000000..152c5d31 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerServiceImpl.java @@ -0,0 +1,234 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpCustomerMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_CUSTOMER_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP客商主数据 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpCustomerServiceImpl implements ErpCustomerService { + + @Resource + private RedisTemplate redisTemplate; + + @Resource + private ErpConfig erpConfig; + + @Resource + private ErpCustomerMapper erpCustomerMapper; + + @Override + public ErpCustomerRespVO createErpCustomer(ErpCustomerSaveReqVO createReqVO) { + // 插入 + ErpCustomerDO erpCustomer = BeanUtils.toBean(createReqVO, ErpCustomerDO.class); + erpCustomerMapper.insert(erpCustomer); + // 返回 + return BeanUtils.toBean(erpCustomer, ErpCustomerRespVO.class); + } + + @Override + public void updateErpCustomer(ErpCustomerSaveReqVO updateReqVO) { + // 校验存在 + validateErpCustomerExists(updateReqVO.getId()); + // 更新 + ErpCustomerDO updateObj = BeanUtils.toBean(updateReqVO, ErpCustomerDO.class); + erpCustomerMapper.updateById(updateObj); + } + + @Override + public void deleteErpCustomer(Long id) { + // 校验存在 + validateErpCustomerExists(id); + // 删除 + erpCustomerMapper.deleteById(id); + } + + @Override + public void deleteErpCustomerListByIds(List ids) { + // 校验存在 + validateErpCustomerExists(ids); + // 删除 + erpCustomerMapper.deleteByIds(ids); + } + + private void validateErpCustomerExists(List ids) { + List list = erpCustomerMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_CUSTOMER_NOT_EXISTS); + } + } + + private void validateErpCustomerExists(Long id) { + if (erpCustomerMapper.selectById(id) == null) { + throw exception(ERP_CUSTOMER_NOT_EXISTS); + } + } + + @Override + public ErpCustomerDO getErpCustomer(Long id) { + return erpCustomerMapper.selectById(id); + } + + @Override + public PageResult getErpCustomerPage(ErpCustomerPageReqVO pageReqVO) { + return erpCustomerMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + @XxlJob("getErpCustomerTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.客商信息; + String funcnr = funcnrEnum.getFuncnr(); + // 构建req参数 + Map req = new HashMap<>(); + List> datumList = new ArrayList<>(); + Map datumEntry = new HashMap<>(); + // 构建datum参数数组 + datumEntry.put("sign", "I"); + datumEntry.put("option", "EQ"); + datumEntry.put("low", LocalDate.now().toString()); + datumList.add(datumEntry); + req.put(funcnrEnum.getDatekey(), datumList); + + // 1. 调用ERP接口获取数据 + for (OftenEnum.ModeTypeEnum type : OftenEnum.ModeTypeEnum.values()) { + req.put("mode", type.modetype); + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + + // 2. 处理数据,区分新增和更新 + ProcessingResult result = processData(dataArray, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + } + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnrEnum) { + String key = "erp" + funcnrEnum.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key, funcnrEnum.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString(funcnrEnum.getDatakey()).trim(); + if (number != null) { + ErpCustomerDO DO = new ErpCustomerDO(); + DO.setName(dataJson.getString("NAME_ORG1")); + DO.setNumber(number); + DO.setAccountGroup(dataJson.getString("BU_GROUP")); + DO.setDescription(dataJson.getString("BU_SORT1")); + DO.setCenterNumber(dataJson.getString("BU_SORT2")); + DO.setCreateDate(LocalDateTime.parse(dataJson.getString("CRDAT")+"T00:00:00")); + DO.setRepairDate(LocalDateTime.parse(dataJson.getString("CHDAT")+"T00:00:00")); + DO.setIsGiveback(dataJson.getString("XDELE")); + DO.setIsProvisional(dataJson.getString("XBLCK")); +// DO.setType(type.modetype); + + // 使用 Map 优化查找效率,避免每次遍历 comnumbers 列表 + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + } + + return new ProcessingResult(toUpdate, toInsert, key, allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpCustomerMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpCustomerMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key, result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert, String key, List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } + + @Override + public void initialize() { + List existingNumbers = erpCustomerMapper.selectList(new LambdaQueryWrapperX()) + .stream() + .map(ErpCustomerDO::getNumber) + .collect(Collectors.toList()); + String key = "erp" + OftenEnum.FuncnrEnum.客商信息.getFuncnr(); + redisTemplate.opsForValue().set(key, existingNumbers); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryService.java new file mode 100644 index 00000000..2730a947 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactorySaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpFactoryDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP工厂 Service 接口 + * + * @author 后台管理 + */ +public interface ErpFactoryService { + + /** + * 创建ERP工厂 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpFactoryRespVO createErpFactory(@Valid ErpFactorySaveReqVO createReqVO); + + /** + * 更新ERP工厂 + * + * @param updateReqVO 更新信息 + */ + void updateErpFactory(@Valid ErpFactorySaveReqVO updateReqVO); + + /** + * 删除ERP工厂 + * + * @param id 编号 + */ + void deleteErpFactory(Long id); + + /** + * 批量删除ERP工厂 + * + * @param ids 编号 + */ + void deleteErpFactoryListByIds(List ids); + + /** + * 获得ERP工厂 + * + * @param id 编号 + * @return ERP工厂 + */ + ErpFactoryDO getErpFactory(Long id); + + /** + * 获得ERP工厂分页 + * + * @param pageReqVO 分页查询 + * @return ERP工厂分页 + */ + PageResult getErpFactoryPage(ErpFactoryPageReqVO pageReqVO); + + void callErpRfcInterface(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryServiceImpl.java new file mode 100644 index 00000000..6f80fd76 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryServiceImpl.java @@ -0,0 +1,208 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactorySaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpFactoryDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpFactoryDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpFactoryMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_FACTORY_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP工厂 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpFactoryServiceImpl implements ErpFactoryService { + + @Resource + private ErpFactoryMapper erpFactoryMapper; + + @Resource + private ErpConfig erpConfig; + + @Override + public ErpFactoryRespVO createErpFactory(ErpFactorySaveReqVO createReqVO) { + // 插入 + ErpFactoryDO erpFactory = BeanUtils.toBean(createReqVO, ErpFactoryDO.class); + erpFactoryMapper.insert(erpFactory); + // 返回 + return BeanUtils.toBean(erpFactory, ErpFactoryRespVO.class); + } + + @Override + public void updateErpFactory(ErpFactorySaveReqVO updateReqVO) { + // 校验存在 + validateErpFactoryExists(updateReqVO.getId()); + // 更新 + ErpFactoryDO updateObj = BeanUtils.toBean(updateReqVO, ErpFactoryDO.class); + erpFactoryMapper.updateById(updateObj); + } + + @Override + public void deleteErpFactory(Long id) { + // 校验存在 + validateErpFactoryExists(id); + // 删除 + erpFactoryMapper.deleteById(id); + } + + @Override + public void deleteErpFactoryListByIds(List ids) { + // 校验存在 + validateErpFactoryExists(ids); + // 删除 + erpFactoryMapper.deleteByIds(ids); + } + + private void validateErpFactoryExists(List ids) { + List list = erpFactoryMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_FACTORY_NOT_EXISTS); + } + } + + private void validateErpFactoryExists(Long id) { + if (erpFactoryMapper.selectById(id) == null) { + throw exception(ERP_FACTORY_NOT_EXISTS); + } + } + + @Override + public ErpFactoryDO getErpFactory(Long id) { + return erpFactoryMapper.selectById(id); + } + + @Override + public PageResult getErpFactoryPage(ErpFactoryPageReqVO pageReqVO) { + return erpFactoryMapper.selectPage(pageReqVO); + } + @Override + @Transactional + @XxlJob("getErpFactoryTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.工厂信息; + String funcnr = funcnrEnum.getFuncnr(); + // 1. 调用ERP接口获取数据 + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + List redisCache = erpConfig.getRedisCache(OftenEnum.FuncnrEnum.公司代码.getFuncnr()); + if (CollUtil.isEmpty(redisCache)) { + return; + } + for (String companyNumber : redisCache) { + req.put("BUKRS", companyNumber); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + // 往每个子项中添加BUKRS字段 + for (int j = 0; j < dataArray.size(); j++) { + JSONObject item = dataArray.getJSONObject(j); + if (item != null) { + item.put("BUKRS", companyNumber); + } + } + + dataArrayALL.addAll(dataArray); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString(funcnr.getDatakey()).trim(); + ErpFactoryDO DO = new ErpFactoryDO(); + DO.setName(dataJson.getString("NAME1")); + DO.setNumber(number); + DO.setCompanyId(dataJson.getString("BUKRS")); + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpFactoryMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpFactoryMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderService.java new file mode 100644 index 00000000..a370a9dd --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpInternalOrderDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP内部订单 Service 接口 + * + * @author 后台管理 + */ +public interface ErpInternalOrderService { + + /** + * 创建ERP内部订单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpInternalOrderRespVO createErpInternalOrder(@Valid ErpInternalOrderSaveReqVO createReqVO); + + /** + * 更新ERP内部订单 + * + * @param updateReqVO 更新信息 + */ + void updateErpInternalOrder(@Valid ErpInternalOrderSaveReqVO updateReqVO); + + /** + * 删除ERP内部订单 + * + * @param id 编号 + */ + void deleteErpInternalOrder(Long id); + + /** + * 批量删除ERP内部订单 + * + * @param ids 编号 + */ + void deleteErpInternalOrderListByIds(List ids); + + /** + * 获得ERP内部订单 + * + * @param id 编号 + * @return ERP内部订单 + */ + ErpInternalOrderDO getErpInternalOrder(Long id); + + /** + * 获得ERP内部订单分页 + * + * @param pageReqVO 分页查询 + * @return ERP内部订单分页 + */ + PageResult getErpInternalOrderPage(ErpInternalOrderPageReqVO pageReqVO); + + void callErpRfcInterface(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderServiceImpl.java new file mode 100644 index 00000000..0d967d9d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderServiceImpl.java @@ -0,0 +1,203 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpInternalOrderSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpInternalOrderDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpInternalOrderDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpInternalOrderMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_INTERNAL_ORDER_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP内部订单 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpInternalOrderServiceImpl implements ErpInternalOrderService { + + @Resource + private ErpInternalOrderMapper erpInternalOrderMapper; + + @Resource + private ErpConfig erpConfig; + + @Override + public ErpInternalOrderRespVO createErpInternalOrder(ErpInternalOrderSaveReqVO createReqVO) { + // 插入 + ErpInternalOrderDO erpInternalOrder = BeanUtils.toBean(createReqVO, ErpInternalOrderDO.class); + erpInternalOrderMapper.insert(erpInternalOrder); + // 返回 + return BeanUtils.toBean(erpInternalOrder, ErpInternalOrderRespVO.class); + } + + @Override + public void updateErpInternalOrder(ErpInternalOrderSaveReqVO updateReqVO) { + // 校验存在 + validateErpInternalOrderExists(updateReqVO.getId()); + // 更新 + ErpInternalOrderDO updateObj = BeanUtils.toBean(updateReqVO, ErpInternalOrderDO.class); + erpInternalOrderMapper.updateById(updateObj); + } + + @Override + public void deleteErpInternalOrder(Long id) { + // 校验存在 + validateErpInternalOrderExists(id); + // 删除 + erpInternalOrderMapper.deleteById(id); + } + + @Override + public void deleteErpInternalOrderListByIds(List ids) { + // 校验存在 + validateErpInternalOrderExists(ids); + // 删除 + erpInternalOrderMapper.deleteByIds(ids); + } + + private void validateErpInternalOrderExists(List ids) { + List list = erpInternalOrderMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_INTERNAL_ORDER_NOT_EXISTS); + } + } + + private void validateErpInternalOrderExists(Long id) { + if (erpInternalOrderMapper.selectById(id) == null) { + throw exception(ERP_INTERNAL_ORDER_NOT_EXISTS); + } + } + + @Override + public ErpInternalOrderDO getErpInternalOrder(Long id) { + return erpInternalOrderMapper.selectById(id); + } + + @Override + public PageResult getErpInternalOrderPage(ErpInternalOrderPageReqVO pageReqVO) { + return erpInternalOrderMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + @XxlJob("getErpInternalOrderTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.内部订单; + String funcnr = funcnrEnum.getFuncnr(); + + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + List redisCache = erpConfig.getRedisCache(OftenEnum.FuncnrEnum.公司代码.getFuncnr()); + if (CollUtil.isEmpty(redisCache)) { + return; + } + // 1. 调用ERP接口获取数据 + for (String number : redisCache) { + req.put("BUKRS", number); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + ErpInternalOrderDO DO = new ErpInternalOrderDO(); + DO.setName(dataJson.getString("KTEXT")); + DO.setNumber(dataJson.getString("AUFNR")); + DO.setType(dataJson.getString("AUART")); + DO.setIsOff(dataJson.getString("PHAS3")); + DO.setIsFinish(dataJson.getString("PHAS2")); + if (comnumbers.contains(dataJson.getString("AUFNR"))) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpInternalOrderMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpInternalOrderMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialService.java new file mode 100644 index 00000000..3f52ed28 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialService.java @@ -0,0 +1,67 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpMaterialDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP物料数据 Service 接口 + * + * @author 后台管理 + */ +public interface ErpMaterialService { + + /** + * 创建ERP物料数据 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpMaterialRespVO createErpMaterial(@Valid ErpMaterialSaveReqVO createReqVO); + + /** + * 更新ERP物料数据 + * + * @param updateReqVO 更新信息 + */ + void updateErpMaterial(@Valid ErpMaterialSaveReqVO updateReqVO); + + /** + * 删除ERP物料数据 + * + * @param id 编号 + */ + void deleteErpMaterial(Long id); + + /** + * 批量删除ERP物料数据 + * + * @param ids 编号 + */ + void deleteErpMaterialListByIds(List ids); + + /** + * 获得ERP物料数据 + * + * @param id 编号 + * @return ERP物料数据 + */ + ErpMaterialDO getErpMaterial(Long id); + + /** + * 获得ERP物料数据分页 + * + * @param pageReqVO 分页查询 + * @return ERP物料数据分页 + */ + PageResult getErpMaterialPage(ErpMaterialPageReqVO pageReqVO); + + void callErpRfcInterface(); + + void initialize(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialServiceImpl.java new file mode 100644 index 00000000..53258065 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialServiceImpl.java @@ -0,0 +1,223 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpMaterialDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpMaterialMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_MATERIAL_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP物料数据 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpMaterialServiceImpl implements ErpMaterialService { + + @Resource + private ErpMaterialMapper erpMaterialMapper; + @Resource + private ErpConfig erpConfig; + + @Override + public ErpMaterialRespVO createErpMaterial(ErpMaterialSaveReqVO createReqVO) { + // 插入 + ErpMaterialDO erpMaterial = BeanUtils.toBean(createReqVO, ErpMaterialDO.class); + erpMaterialMapper.insert(erpMaterial); + // 返回 + return BeanUtils.toBean(erpMaterial, ErpMaterialRespVO.class); + } + + @Override + public void updateErpMaterial(ErpMaterialSaveReqVO updateReqVO) { + // 校验存在 + validateErpMaterialExists(updateReqVO.getId()); + // 更新 + ErpMaterialDO updateObj = BeanUtils.toBean(updateReqVO, ErpMaterialDO.class); + erpMaterialMapper.updateById(updateObj); + } + + @Override + public void deleteErpMaterial(Long id) { + // 校验存在 + validateErpMaterialExists(id); + // 删除 + erpMaterialMapper.deleteById(id); + } + + @Override + public void deleteErpMaterialListByIds(List ids) { + // 校验存在 + validateErpMaterialExists(ids); + // 删除 + erpMaterialMapper.deleteByIds(ids); + } + + private void validateErpMaterialExists(List ids) { + List list = erpMaterialMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_MATERIAL_NOT_EXISTS); + } + } + + private void validateErpMaterialExists(Long id) { + if (erpMaterialMapper.selectById(id) == null) { + throw exception(ERP_MATERIAL_NOT_EXISTS); + } + } + + @Override + public ErpMaterialDO getErpMaterial(Long id) { + return erpMaterialMapper.selectById(id); + } + + @Override + public PageResult getErpMaterialPage(ErpMaterialPageReqVO pageReqVO) { + return erpMaterialMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + @XxlJob("getErpMaterialTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.物料数据; + String funcnr = funcnrEnum.getFuncnr(); + // 构建req参数 + Map req = new HashMap<>(); + List> datumList = new ArrayList<>(); + Map datumEntry = new HashMap<>(); + datumEntry.put("sign", "I"); + datumEntry.put("option", "EQ"); + datumEntry.put("low", "2021-05-16"); +// datumEntry.put("low", LocalDate.now().toString()); + datumList.add(datumEntry); + req.put(funcnrEnum.getDatakey(), datumList); + + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + return; + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArray,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("MATNR").trim(); + ErpMaterialDO DO = new ErpMaterialDO(); + DO.setDownCenterNumber(number); + DO.setCenterNumber(dataJson.getString("BISMT")); + DO.setCreateDate(LocalDateTime.parse(dataJson.getString("ERSDA"))); + DO.setMaterialType(dataJson.getString("MTART")); + DO.setMaterialGroupDate(dataJson.getString("MATKL")); + DO.setExternalMaterialGroupDate(dataJson.getString("EXTWG")); + DO.setUnit(dataJson.getString("MEINS")); + DO.setUnitDescription(dataJson.getString("MSEHT")); + DO.setMaterialTypeDescription(dataJson.getString("MTBEZ")); + DO.setMaterialGroupDescription(dataJson.getString("WGBEZ")); + DO.setExternalMaterialGroupDescription(dataJson.getString("EWBEZ")); + DO.setMaterialName(dataJson.getString("MAKTX")); + DO.setMaterialLengthDescription(dataJson.getString("LDESC")); + + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpMaterialMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpMaterialMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } + + @Override + public void initialize() { + List existingNumbers = erpMaterialMapper.selectList(new LambdaQueryWrapperX()) + .stream() + .map(ErpMaterialDO::getDownCenterNumber) + .collect(Collectors.toList()); + String key = "erp" + OftenEnum.FuncnrEnum.物料数据.getFuncnr(); + erpConfig.updateRedisCache(key, existingNumbers); + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailService.java new file mode 100644 index 00000000..a9163e79 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP工艺路线明细 Service 接口 + * + * @author 后台管理 + */ +public interface ErpProcessDetailService { + + /** + * 创建ERP工艺路线明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpProcessDetailRespVO createErpProcessDetail(@Valid ErpProcessDetailSaveReqVO createReqVO); + + /** + * 更新ERP工艺路线明细 + * + * @param updateReqVO 更新信息 + */ + void updateErpProcessDetail(@Valid ErpProcessDetailSaveReqVO updateReqVO); + + /** + * 删除ERP工艺路线明细 + * + * @param id 编号 + */ + void deleteErpProcessDetail(Long id); + + /** + * 批量删除ERP工艺路线明细 + * + * @param ids 编号 + */ + void deleteErpProcessDetailListByIds(List ids); + + /** + * 获得ERP工艺路线明细 + * + * @param id 编号 + * @return ERP工艺路线明细 + */ + ErpProcessDetailDO getErpProcessDetail(Long id); + + /** + * 获得ERP工艺路线明细分页 + * + * @param pageReqVO 分页查询 + * @return ERP工艺路线明细分页 + */ + PageResult getErpProcessDetailPage(ErpProcessDetailPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailServiceImpl.java new file mode 100644 index 00000000..8d4e7c6e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpProcessDetailMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_PROCESS_DETAIL_NOT_EXISTS; + +/** + * ERP工艺路线明细 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpProcessDetailServiceImpl implements ErpProcessDetailService { + + @Resource + private ErpProcessDetailMapper erpProcessDetailMapper; + + @Override + public ErpProcessDetailRespVO createErpProcessDetail(ErpProcessDetailSaveReqVO createReqVO) { + // 插入 + ErpProcessDetailDO erpProcessDetail = BeanUtils.toBean(createReqVO, ErpProcessDetailDO.class); + erpProcessDetailMapper.insert(erpProcessDetail); + // 返回 + return BeanUtils.toBean(erpProcessDetail, ErpProcessDetailRespVO.class); + } + + @Override + public void updateErpProcessDetail(ErpProcessDetailSaveReqVO updateReqVO) { + // 校验存在 + validateErpProcessDetailExists(updateReqVO.getId()); + // 更新 + ErpProcessDetailDO updateObj = BeanUtils.toBean(updateReqVO, ErpProcessDetailDO.class); + erpProcessDetailMapper.updateById(updateObj); + } + + @Override + public void deleteErpProcessDetail(Long id) { + // 校验存在 + validateErpProcessDetailExists(id); + // 删除 + erpProcessDetailMapper.deleteById(id); + } + + @Override + public void deleteErpProcessDetailListByIds(List ids) { + // 校验存在 + validateErpProcessDetailExists(ids); + // 删除 + erpProcessDetailMapper.deleteByIds(ids); + } + + private void validateErpProcessDetailExists(List ids) { + List list = erpProcessDetailMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_PROCESS_DETAIL_NOT_EXISTS); + } + } + + private void validateErpProcessDetailExists(Long id) { + if (erpProcessDetailMapper.selectById(id) == null) { + throw exception(ERP_PROCESS_DETAIL_NOT_EXISTS); + } + } + + @Override + public ErpProcessDetailDO getErpProcessDetail(Long id) { + return erpProcessDetailMapper.selectById(id); + } + + @Override + public PageResult getErpProcessDetailPage(ErpProcessDetailPageReqVO pageReqVO) { + return erpProcessDetailMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessService.java new file mode 100644 index 00000000..55653024 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP工艺路线 Service 接口 + * + * @author 后台管理 + */ +public interface ErpProcessService { + + /** + * 创建ERP工艺路线 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpProcessRespVO createErpProcess(@Valid ErpProcessSaveReqVO createReqVO); + + /** + * 更新ERP工艺路线 + * + * @param updateReqVO 更新信息 + */ + void updateErpProcess(@Valid ErpProcessSaveReqVO updateReqVO); + + /** + * 删除ERP工艺路线 + * + * @param id 编号 + */ + void deleteErpProcess(Long id); + + /** + * 批量删除ERP工艺路线 + * + * @param ids 编号 + */ + void deleteErpProcessListByIds(List ids); + + /** + * 获得ERP工艺路线 + * + * @param id 编号 + * @return ERP工艺路线 + */ + ErpProcessDO getErpProcess(Long id); + + /** + * 获得ERP工艺路线分页 + * + * @param pageReqVO 分页查询 + * @return ERP工艺路线分页 + */ + PageResult getErpProcessPage(ErpProcessPageReqVO pageReqVO); + + void callErpRfcInterface(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessServiceImpl.java new file mode 100644 index 00000000..4796a00e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessServiceImpl.java @@ -0,0 +1,191 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpProcessMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_PROCESS_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP工艺路线 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpProcessServiceImpl implements ErpProcessService { + + @Resource + private ErpProcessMapper erpProcessMapper; + + @Resource + private ErpConfig erpConfig; + + @Override + public ErpProcessRespVO createErpProcess(ErpProcessSaveReqVO createReqVO) { + // 插入 + ErpProcessDO erpProcess = BeanUtils.toBean(createReqVO, ErpProcessDO.class); + erpProcessMapper.insert(erpProcess); + // 返回 + return BeanUtils.toBean(erpProcess, ErpProcessRespVO.class); + } + + @Override + public void updateErpProcess(ErpProcessSaveReqVO updateReqVO) { + // 校验存在 + validateErpProcessExists(updateReqVO.getId()); + // 更新 + ErpProcessDO updateObj = BeanUtils.toBean(updateReqVO, ErpProcessDO.class); + erpProcessMapper.updateById(updateObj); + } + + @Override + public void deleteErpProcess(Long id) { + // 校验存在 + validateErpProcessExists(id); + // 删除 + erpProcessMapper.deleteById(id); + } + + @Override + public void deleteErpProcessListByIds(List ids) { + // 校验存在 + validateErpProcessExists(ids); + // 删除 + erpProcessMapper.deleteByIds(ids); + } + + private void validateErpProcessExists(List ids) { + List list = erpProcessMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_PROCESS_NOT_EXISTS); + } + } + + private void validateErpProcessExists(Long id) { + if (erpProcessMapper.selectById(id) == null) { + throw exception(ERP_PROCESS_NOT_EXISTS); + } + } + + @Override + public ErpProcessDO getErpProcess(Long id) { + return erpProcessMapper.selectById(id); + } + + @Override + public PageResult getErpProcessPage(ErpProcessPageReqVO pageReqVO) { + return erpProcessMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + @XxlJob("getErpProcessTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.公司代码; + String funcnr = funcnrEnum.getFuncnr(); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, null); + if (dataArray == null || dataArray.isEmpty()) { + return; + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArray,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("BUKRS").trim(); + if (number != null) { + ErpProcessDO DO = new ErpProcessDO(); +// DO.setName(dataJson.getString("BUTXT")); +// DO.setNumber(number); +// DO.setCurrency(dataJson.getString("WAERS")); + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + } + + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpProcessMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpProcessMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveOrderService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveOrderService.java new file mode 100644 index 00000000..58ed1be6 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveOrderService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveOrderDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP生产订单 Service 接口 + * + * @author 后台管理 + */ +public interface ErpProductiveOrderService { + + /** + * 创建ERP生产订单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpProductiveOrderRespVO createErpProductiveOrder(@Valid ErpProductiveOrderSaveReqVO createReqVO); + + /** + * 更新ERP生产订单 + * + * @param updateReqVO 更新信息 + */ + void updateErpProductiveOrder(@Valid ErpProductiveOrderSaveReqVO updateReqVO); + + /** + * 删除ERP生产订单 + * + * @param id 编号 + */ + void deleteErpProductiveOrder(Long id); + + /** + * 批量删除ERP生产订单 + * + * @param ids 编号 + */ + void deleteErpProductiveOrderListByIds(List ids); + + /** + * 获得ERP生产订单 + * + * @param id 编号 + * @return ERP生产订单 + */ + ErpProductiveOrderDO getErpProductiveOrder(Long id); + + /** + * 获得ERP生产订单分页 + * + * @param pageReqVO 分页查询 + * @return ERP生产订单分页 + */ + PageResult getErpProductiveOrderPage(ErpProductiveOrderPageReqVO pageReqVO); + + void callErpRfcInterface(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveOrderServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveOrderServiceImpl.java new file mode 100644 index 00000000..3180e824 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveOrderServiceImpl.java @@ -0,0 +1,213 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveOrderSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveOrderDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveOrderDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpProductiveOrderMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_PRODUCTIVE_ORDER_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP生产订单 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService { + + @Resource + private ErpProductiveOrderMapper erpProductiveOrderMapper; + + @Resource + private ErpConfig erpConfig; + + @Override + public ErpProductiveOrderRespVO createErpProductiveOrder(ErpProductiveOrderSaveReqVO createReqVO) { + // 插入 + ErpProductiveOrderDO erpProductiveOrder = BeanUtils.toBean(createReqVO, ErpProductiveOrderDO.class); + erpProductiveOrderMapper.insert(erpProductiveOrder); + // 返回 + return BeanUtils.toBean(erpProductiveOrder, ErpProductiveOrderRespVO.class); + } + + @Override + public void updateErpProductiveOrder(ErpProductiveOrderSaveReqVO updateReqVO) { + // 校验存在 + validateErpProductiveOrderExists(updateReqVO.getId()); + // 更新 + ErpProductiveOrderDO updateObj = BeanUtils.toBean(updateReqVO, ErpProductiveOrderDO.class); + erpProductiveOrderMapper.updateById(updateObj); + } + + @Override + public void deleteErpProductiveOrder(Long id) { + // 校验存在 + validateErpProductiveOrderExists(id); + // 删除 + erpProductiveOrderMapper.deleteById(id); + } + + @Override + public void deleteErpProductiveOrderListByIds(List ids) { + // 校验存在 + validateErpProductiveOrderExists(ids); + // 删除 + erpProductiveOrderMapper.deleteByIds(ids); + } + + private void validateErpProductiveOrderExists(List ids) { + List list = erpProductiveOrderMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_PRODUCTIVE_ORDER_NOT_EXISTS); + } + } + + private void validateErpProductiveOrderExists(Long id) { + if (erpProductiveOrderMapper.selectById(id) == null) { + throw exception(ERP_PRODUCTIVE_ORDER_NOT_EXISTS); + } + } + + @Override + public ErpProductiveOrderDO getErpProductiveOrder(Long id) { + return erpProductiveOrderMapper.selectById(id); + } + + @Override + public PageResult getErpProductiveOrderPage(ErpProductiveOrderPageReqVO pageReqVO) { + return erpProductiveOrderMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + @XxlJob("getErpProductiveOrderTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.生产订单; + String funcnr = funcnrEnum.getFuncnr(); + + Map req = new HashMap<>(); + List> datumList = new ArrayList<>(); + Map datumEntry = new HashMap<>(); + // 构建datum参数数组 + datumEntry.put("sign", "I"); + datumEntry.put("option", "EQ"); + datumEntry.put("low", LocalDate.now().toString()); + datumList.add(datumEntry); + req.put(funcnrEnum.getDatekey(), datumList); + JSONArray dataArrayALL = new JSONArray(); + List redisCache = erpConfig.getRedisCache(OftenEnum.FuncnrEnum.工厂信息.getFuncnr()); + if (CollUtil.isEmpty(redisCache)) { + return; + } + // 1. 调用ERP接口获取数据 + for (String number : redisCache) { + req.put("WERKS", number); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("BUKRS").trim(); + if (number != null) { + ErpProductiveOrderDO DO = new ErpProductiveOrderDO(); +// DO.setName(dataJson.getString("BUTXT")); +// DO.setNumber(number); +// DO.setCurrency(dataJson.getString("WAERS")); + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + } + + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpProductiveOrderMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpProductiveOrderMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionService.java new file mode 100644 index 00000000..58c9f4c4 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP生产版本 Service 接口 + * + * @author 后台管理 + */ +public interface ErpProductiveVersionService { + + /** + * 创建ERP生产版本 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpProductiveVersionRespVO createErpProductiveVersion(@Valid ErpProductiveVersionSaveReqVO createReqVO); + + /** + * 更新ERP生产版本 + * + * @param updateReqVO 更新信息 + */ + void updateErpProductiveVersion(@Valid ErpProductiveVersionSaveReqVO updateReqVO); + + /** + * 删除ERP生产版本 + * + * @param id 编号 + */ + void deleteErpProductiveVersion(Long id); + + /** + * 批量删除ERP生产版本 + * + * @param ids 编号 + */ + void deleteErpProductiveVersionListByIds(List ids); + + /** + * 获得ERP生产版本 + * + * @param id 编号 + * @return ERP生产版本 + */ + ErpProductiveVersionDO getErpProductiveVersion(Long id); + + /** + * 获得ERP生产版本分页 + * + * @param pageReqVO 分页查询 + * @return ERP生产版本分页 + */ + PageResult getErpProductiveVersionPage(ErpProductiveVersionPageReqVO pageReqVO); + + void callErpRfcInterface(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionServiceImpl.java new file mode 100644 index 00000000..978cd0a6 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionServiceImpl.java @@ -0,0 +1,206 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpProductiveVersionMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_PRODUCTIVE_VERSION_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP生产版本 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionService { + + @Resource + private ErpProductiveVersionMapper erpProductiveVersionMapper; + + @Resource + private ErpConfig erpConfig; + + @Override + public ErpProductiveVersionRespVO createErpProductiveVersion(ErpProductiveVersionSaveReqVO createReqVO) { + // 插入 + ErpProductiveVersionDO erpProductiveVersion = BeanUtils.toBean(createReqVO, ErpProductiveVersionDO.class); + erpProductiveVersionMapper.insert(erpProductiveVersion); + // 返回 + return BeanUtils.toBean(erpProductiveVersion, ErpProductiveVersionRespVO.class); + } + + @Override + public void updateErpProductiveVersion(ErpProductiveVersionSaveReqVO updateReqVO) { + // 校验存在 + validateErpProductiveVersionExists(updateReqVO.getId()); + // 更新 + ErpProductiveVersionDO updateObj = BeanUtils.toBean(updateReqVO, ErpProductiveVersionDO.class); + erpProductiveVersionMapper.updateById(updateObj); + } + + @Override + public void deleteErpProductiveVersion(Long id) { + // 校验存在 + validateErpProductiveVersionExists(id); + // 删除 + erpProductiveVersionMapper.deleteById(id); + } + + @Override + public void deleteErpProductiveVersionListByIds(List ids) { + // 校验存在 + validateErpProductiveVersionExists(ids); + // 删除 + erpProductiveVersionMapper.deleteByIds(ids); + } + + private void validateErpProductiveVersionExists(List ids) { + List list = erpProductiveVersionMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_PRODUCTIVE_VERSION_NOT_EXISTS); + } + } + + private void validateErpProductiveVersionExists(Long id) { + if (erpProductiveVersionMapper.selectById(id) == null) { + throw exception(ERP_PRODUCTIVE_VERSION_NOT_EXISTS); + } + } + + @Override + public ErpProductiveVersionDO getErpProductiveVersion(Long id) { + return erpProductiveVersionMapper.selectById(id); + } + + @Override + public PageResult getErpProductiveVersionPage(ErpProductiveVersionPageReqVO pageReqVO) { + return erpProductiveVersionMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + @XxlJob("getErpProductiveVersionTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.生产版本; + String funcnr = funcnrEnum.getFuncnr(); + + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + List redisCache = erpConfig.getRedisCache(OftenEnum.FuncnrEnum.工厂信息.getFuncnr()); + if (CollUtil.isEmpty(redisCache)) { + return; + } + // 1. 调用ERP接口获取数据 + for (String number : redisCache) { + req.put("WERKS", number); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("VERID").trim(); + ErpProductiveVersionDO DO = new ErpProductiveVersionDO(); +// DO.setFactoryNumber(dataJson.getString("MATNR")); + DO.setMaterialNumber(dataJson.getString("WERKS")); + DO.setProductiveVersionNumber(number); + DO.setProductiveVersionName(dataJson.getString("TEXT1")); + DO.setBomNumber(dataJson.getString("STLAL")); + DO.setBlineGroup(dataJson.getString("PLNNR")); +// DO.setGroupCount(dataJson.getString("ALNAL")); + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpProductiveVersionMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpProductiveVersionMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationService.java new file mode 100644 index 00000000..336b94e4 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP采购组织 Service 接口 + * + * @author 后台管理 + */ +public interface ErpPurchaseOrganizationService { + + /** + * 创建ERP采购组织 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpPurchaseOrganizationRespVO createErpPurchaseOrganization(@Valid ErpPurchaseOrganizationSaveReqVO createReqVO); + + /** + * 更新ERP采购组织 + * + * @param updateReqVO 更新信息 + */ + void updateErpPurchaseOrganization(@Valid ErpPurchaseOrganizationSaveReqVO updateReqVO); + + /** + * 删除ERP采购组织 + * + * @param id 编号 + */ + void deleteErpPurchaseOrganization(Long id); + + /** + * 批量删除ERP采购组织 + * + * @param ids 编号 + */ + void deleteErpPurchaseOrganizationListByIds(List ids); + + /** + * 获得ERP采购组织 + * + * @param id 编号 + * @return ERP采购组织 + */ + ErpPurchaseOrganizationDO getErpPurchaseOrganization(Long id); + + /** + * 获得ERP采购组织分页 + * + * @param pageReqVO 分页查询 + * @return ERP采购组织分页 + */ + PageResult getErpPurchaseOrganizationPage(ErpPurchaseOrganizationPageReqVO pageReqVO); + + void callErpRfcInterface(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationServiceImpl.java new file mode 100644 index 00000000..786e81a9 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationServiceImpl.java @@ -0,0 +1,200 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpPurchaseOrganizationMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_PURCHASE_ORGANIZATION_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP采购组织 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizationService { + + @Resource + private ErpPurchaseOrganizationMapper erpPurchaseOrganizationMapper; + + @Resource + private ErpConfig erpConfig; + + @Override + public ErpPurchaseOrganizationRespVO createErpPurchaseOrganization(ErpPurchaseOrganizationSaveReqVO createReqVO) { + // 插入 + ErpPurchaseOrganizationDO erpPurchaseOrganization = BeanUtils.toBean(createReqVO, ErpPurchaseOrganizationDO.class); + erpPurchaseOrganizationMapper.insert(erpPurchaseOrganization); + // 返回 + return BeanUtils.toBean(erpPurchaseOrganization, ErpPurchaseOrganizationRespVO.class); + } + + @Override + public void updateErpPurchaseOrganization(ErpPurchaseOrganizationSaveReqVO updateReqVO) { + // 校验存在 + validateErpPurchaseOrganizationExists(updateReqVO.getId()); + // 更新 + ErpPurchaseOrganizationDO updateObj = BeanUtils.toBean(updateReqVO, ErpPurchaseOrganizationDO.class); + erpPurchaseOrganizationMapper.updateById(updateObj); + } + + @Override + public void deleteErpPurchaseOrganization(Long id) { + // 校验存在 + validateErpPurchaseOrganizationExists(id); + // 删除 + erpPurchaseOrganizationMapper.deleteById(id); + } + + @Override + public void deleteErpPurchaseOrganizationListByIds(List ids) { + // 校验存在 + validateErpPurchaseOrganizationExists(ids); + // 删除 + erpPurchaseOrganizationMapper.deleteByIds(ids); + } + + private void validateErpPurchaseOrganizationExists(List ids) { + List list = erpPurchaseOrganizationMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_PURCHASE_ORGANIZATION_NOT_EXISTS); + } + } + + private void validateErpPurchaseOrganizationExists(Long id) { + if (erpPurchaseOrganizationMapper.selectById(id) == null) { + throw exception(ERP_PURCHASE_ORGANIZATION_NOT_EXISTS); + } + } + + @Override + public ErpPurchaseOrganizationDO getErpPurchaseOrganization(Long id) { + return erpPurchaseOrganizationMapper.selectById(id); + } + + @Override + public PageResult getErpPurchaseOrganizationPage(ErpPurchaseOrganizationPageReqVO pageReqVO) { + return erpPurchaseOrganizationMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + @XxlJob("getErpPurchaseOrganizationTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.采购组织; + String funcnr = funcnrEnum.getFuncnr(); + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + List redisCache = erpConfig.getRedisCache(OftenEnum.FuncnrEnum.工厂信息.getFuncnr()); + if (CollUtil.isEmpty(redisCache)) { + return; + } + // 1. 调用ERP接口获取数据 + for (String number : redisCache) { + req.put("WERKS", number); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("EKORG").trim(); + ErpPurchaseOrganizationDO DO = new ErpPurchaseOrganizationDO(); + DO.setName(dataJson.getString("EKOTX")); + DO.setNumber(number); + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpPurchaseOrganizationMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpPurchaseOrganizationMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationService.java new file mode 100644 index 00000000..8371ef1e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP销售组织 Service 接口 + * + * @author 后台管理 + */ +public interface ErpSalesOrganizationService { + + /** + * 创建ERP销售组织 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpSalesOrganizationRespVO createErpSalesOrganization(@Valid ErpSalesOrganizationSaveReqVO createReqVO); + + /** + * 更新ERP销售组织 + * + * @param updateReqVO 更新信息 + */ + void updateErpSalesOrganization(@Valid ErpSalesOrganizationSaveReqVO updateReqVO); + + /** + * 删除ERP销售组织 + * + * @param id 编号 + */ + void deleteErpSalesOrganization(Long id); + + /** + * 批量删除ERP销售组织 + * + * @param ids 编号 + */ + void deleteErpSalesOrganizationListByIds(List ids); + + /** + * 获得ERP销售组织 + * + * @param id 编号 + * @return ERP销售组织 + */ + ErpSalesOrganizationDO getErpSalesOrganization(Long id); + + /** + * 获得ERP销售组织分页 + * + * @param pageReqVO 分页查询 + * @return ERP销售组织分页 + */ + PageResult getErpSalesOrganizationPage(ErpSalesOrganizationPageReqVO pageReqVO); + + void callErpRfcInterface(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationServiceImpl.java new file mode 100644 index 00000000..333b8ebe --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationServiceImpl.java @@ -0,0 +1,208 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpSalesOrganizationSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpSalesOrganizationMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_SALES_ORGANIZATION_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP销售组织 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationService { + + @Resource + private ErpSalesOrganizationMapper erpSalesOrganizationMapper; + + @Resource + private ErpConfig erpConfig; + + @Override + public ErpSalesOrganizationRespVO createErpSalesOrganization(ErpSalesOrganizationSaveReqVO createReqVO) { + // 插入 + ErpSalesOrganizationDO erpSalesOrganization = BeanUtils.toBean(createReqVO, ErpSalesOrganizationDO.class); + erpSalesOrganizationMapper.insert(erpSalesOrganization); + // 返回 + return BeanUtils.toBean(erpSalesOrganization, ErpSalesOrganizationRespVO.class); + } + + @Override + public void updateErpSalesOrganization(ErpSalesOrganizationSaveReqVO updateReqVO) { + // 校验存在 + validateErpSalesOrganizationExists(updateReqVO.getId()); + // 更新 + ErpSalesOrganizationDO updateObj = BeanUtils.toBean(updateReqVO, ErpSalesOrganizationDO.class); + erpSalesOrganizationMapper.updateById(updateObj); + } + + @Override + public void deleteErpSalesOrganization(Long id) { + // 校验存在 + validateErpSalesOrganizationExists(id); + // 删除 + erpSalesOrganizationMapper.deleteById(id); + } + + @Override + public void deleteErpSalesOrganizationListByIds(List ids) { + // 校验存在 + validateErpSalesOrganizationExists(ids); + // 删除 + erpSalesOrganizationMapper.deleteByIds(ids); + } + + private void validateErpSalesOrganizationExists(List ids) { + List list = erpSalesOrganizationMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_SALES_ORGANIZATION_NOT_EXISTS); + } + } + + private void validateErpSalesOrganizationExists(Long id) { + if (erpSalesOrganizationMapper.selectById(id) == null) { + throw exception(ERP_SALES_ORGANIZATION_NOT_EXISTS); + } + } + + @Override + public ErpSalesOrganizationDO getErpSalesOrganization(Long id) { + return erpSalesOrganizationMapper.selectById(id); + } + + @Override + public PageResult getErpSalesOrganizationPage(ErpSalesOrganizationPageReqVO pageReqVO) { + return erpSalesOrganizationMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + @XxlJob("getErpSalesOrganizationTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.销售组织; + String funcnr = funcnrEnum.getFuncnr(); + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + List redisCache = erpConfig.getRedisCache(OftenEnum.FuncnrEnum.公司代码.getFuncnr()); + if (CollUtil.isEmpty(redisCache)) { + return; + } + // 1. 调用ERP接口获取数据 + for (String number : redisCache) { + req.put("BUKRS", number); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + // 往每个子项中添加BUKRS字段 + for (int j = 0; j < dataArray.size(); j++) { + JSONObject item = dataArray.getJSONObject(j); + if (item != null) { + item.put("BUKRS", number); + } + } + dataArrayALL.addAll(dataArray); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("VKORG").trim(); + ErpSalesOrganizationDO DO = new ErpSalesOrganizationDO(); + DO.setName(dataJson.getString("VTEXT")); + DO.setNumber(number); + DO.setCompanyNumber(dataJson.getString("BUKRS")); + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpSalesOrganizationMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpSalesOrganizationMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseService.java new file mode 100644 index 00000000..3c96ea3a --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehousePageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehouseRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehouseSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpWarehouseDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP库位 Service 接口 + * + * @author 后台管理 + */ +public interface ErpWarehouseService { + + /** + * 创建ERP库位 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpWarehouseRespVO createErpWarehouse(@Valid ErpWarehouseSaveReqVO createReqVO); + + /** + * 更新ERP库位 + * + * @param updateReqVO 更新信息 + */ + void updateErpWarehouse(@Valid ErpWarehouseSaveReqVO updateReqVO); + + /** + * 删除ERP库位 + * + * @param id 编号 + */ + void deleteErpWarehouse(Long id); + + /** + * 批量删除ERP库位 + * + * @param ids 编号 + */ + void deleteErpWarehouseListByIds(List ids); + + /** + * 获得ERP库位 + * + * @param id 编号 + * @return ERP库位 + */ + ErpWarehouseDO getErpWarehouse(Long id); + + /** + * 获得ERP库位分页 + * + * @param pageReqVO 分页查询 + * @return ERP库位分页 + */ + PageResult getErpWarehousePage(ErpWarehousePageReqVO pageReqVO); + + void callErpRfcInterface(); +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseServiceImpl.java new file mode 100644 index 00000000..86536869 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseServiceImpl.java @@ -0,0 +1,209 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehousePageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehouseRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpWarehouseSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpWarehouseDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpWarehouseDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpWarehouseMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_WAREHOUSE_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; + +/** + * ERP库位 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpWarehouseServiceImpl implements ErpWarehouseService { + + @Resource + private ErpWarehouseMapper erpWarehouseMapper; + + @Resource + private ErpConfig erpConfig; + + @Override + public ErpWarehouseRespVO createErpWarehouse(ErpWarehouseSaveReqVO createReqVO) { + // 插入 + ErpWarehouseDO erpWarehouse = BeanUtils.toBean(createReqVO, ErpWarehouseDO.class); + erpWarehouseMapper.insert(erpWarehouse); + // 返回 + return BeanUtils.toBean(erpWarehouse, ErpWarehouseRespVO.class); + } + + @Override + public void updateErpWarehouse(ErpWarehouseSaveReqVO updateReqVO) { + // 校验存在 + validateErpWarehouseExists(updateReqVO.getId()); + // 更新 + ErpWarehouseDO updateObj = BeanUtils.toBean(updateReqVO, ErpWarehouseDO.class); + erpWarehouseMapper.updateById(updateObj); + } + + @Override + public void deleteErpWarehouse(Long id) { + // 校验存在 + validateErpWarehouseExists(id); + // 删除 + erpWarehouseMapper.deleteById(id); + } + + @Override + public void deleteErpWarehouseListByIds(List ids) { + // 校验存在 + validateErpWarehouseExists(ids); + // 删除 + erpWarehouseMapper.deleteByIds(ids); + } + + private void validateErpWarehouseExists(List ids) { + List list = erpWarehouseMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_WAREHOUSE_NOT_EXISTS); + } + } + + private void validateErpWarehouseExists(Long id) { + if (erpWarehouseMapper.selectById(id) == null) { + throw exception(ERP_WAREHOUSE_NOT_EXISTS); + } + } + + @Override + public ErpWarehouseDO getErpWarehouse(Long id) { + return erpWarehouseMapper.selectById(id); + } + + @Override + public PageResult getErpWarehousePage(ErpWarehousePageReqVO pageReqVO) { + return erpWarehouseMapper.selectPage(pageReqVO); + } + + @Override + @Transactional + @XxlJob("getErpWarehouseTask") + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.库位信息; + String funcnr = funcnrEnum.getFuncnr(); + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + List redisCache = erpConfig.getRedisCache(OftenEnum.FuncnrEnum.工厂信息.getFuncnr()); + if (CollUtil.isEmpty(redisCache)) { + return; + } + // 1. 调用ERP接口获取数据 + for (String number : redisCache) { + req.put("WERKS", number); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + // 往每个子项中添加BUKRS字段 + for (int j = 0; j < dataArray.size(); j++) { + JSONObject item = dataArray.getJSONObject(j); + if (item != null) { + item.put("WERKS", number); + } + } + + dataArrayALL.addAll(dataArray); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("LGORT").trim(); + ErpWarehouseDO DO = new ErpWarehouseDO(); + DO.setName(dataJson.getString("LGOBE")); + DO.setNumber(number); + DO.setFactoryNumber(dataJson.getString("WERKS")); + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpWarehouseMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpWarehouseMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/application-dev.yml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/application-dev.yml new file mode 100644 index 00000000..30abeecd --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/application-dev.yml @@ -0,0 +1,107 @@ +spring: + # 数据源配置项 + autoconfigure: + exclude: + datasource: + druid: # Druid 【监控】相关的全局配置 + web-stat-filter: + enabled: true + stat-view-servlet: + enabled: true + allow: # 设置白名单,不填则允许所有访问 + url-pattern: /druid/* + login-username: # 控制台管理用户名和密码 + login-password: + filter: + stat: + enabled: true + log-slow-sql: true # 慢 SQL 记录 + slow-sql-millis: 100 + merge-sql: true + wall: + config: + multi-statement-allow: true + dynamic: # 多数据源配置 + druid: # Druid 【连接池】相关的全局配置 + initial-size: 5 # 初始连接数 + min-idle: 10 # 最小连接池数量 + max-active: 20 # 最大连接池数量 + max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒 + time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒 + min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒 + max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒 + validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效 + test-while-idle: true + test-on-borrow: false + test-on-return: false + primary: master + datasource: + master: + url: jdbc:dm://172.16.46.247:1050?schema=RUOYI-VUE-PRO + username: SYSDBA + password: pgbsci6ddJ6Sqj@e + slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改 + lazy: true # 开启懒加载,保证启动速度 + url: jdbc:dm://172.16.46.247:1050?schema=RUOYI-VUE-PRO + username: SYSDBA + password: pgbsci6ddJ6Sqj@e + + # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 + data: + redis: + host: 172.16.46.63 # 地址 + port: 30379 # 端口 + database: 0 # 数据库索引 +# password: 123456 # 密码,建议生产环境开启 + +xxl: + job: + admin: + addresses: http://172.16.46.63:30082/xxl-job-admin # 调度中心部署跟地址 + +# Lock4j 配置项 +lock4j: + acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒 + expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒 + +# Actuator 监控端点的配置项 +management: + endpoints: + web: + base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator + exposure: + include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。 + +# 日志文件配置 +logging: + file: + name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径 + + +justauth: + enabled: true + type: + DINGTALK: # 钉钉 + client-id: dingvrnreaje3yqvzhxg + client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI + ignore-check-redirect-uri: true + WECHAT_ENTERPRISE: # 企业微信 + client-id: wwd411c69a39ad2e54 + client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw + agent-id: 1000004 + ignore-check-redirect-uri: true + # noinspection SpringBootApplicationYaml + WECHAT_MINI_PROGRAM: # 微信小程序 + client-id: ${dollar}{wx.miniapp.appid} + client-secret: ${dollar}{wx.miniapp.secret} + ignore-check-redirect-uri: true + ignore-check-state: true # 微信小程序,不会使用到 state,所以不进行校验 + WECHAT_MP: # 微信公众号 + client-id: ${dollar}{wx.mp.app-id} + client-secret: ${dollar}{wx.mp.secret} + ignore-check-redirect-uri: true + cache: + type: REDIS + prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE:: + timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟 + diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/application-local.yml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/application-local.yml new file mode 100644 index 00000000..99a2921c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/application-local.yml @@ -0,0 +1,97 @@ +spring: + # 数据源配置项 + autoconfigure: + # noinspection SpringBootApplicationYaml + exclude: + - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源 + datasource: + druid: # Druid 【监控】相关的全局配置 + web-stat-filter: + enabled: true + stat-view-servlet: + enabled: true + allow: # 设置白名单,不填则允许所有访问 + url-pattern: /druid/* + login-username: # 控制台管理用户名和密码 + login-password: + filter: + stat: + enabled: true + log-slow-sql: true # 慢 SQL 记录 + slow-sql-millis: 100 + merge-sql: true + wall: + config: + multi-statement-allow: true + dynamic: # 多数据源配置 + druid: # Druid 【连接池】相关的全局配置 + initial-size: 1 # 初始连接数 + min-idle: 1 # 最小连接池数量 + max-active: 20 # 最大连接池数量 + max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒 + time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒 + min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒 + max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒 + validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效 + test-while-idle: true + test-on-borrow: false + test-on-return: false + primary: master + datasource: + master: + url: jdbc:dm://172.16.46.247:1050?schema=RUOYI-VUE-PRO + username: SYSDBA + password: pgbsci6ddJ6Sqj@e + slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改 + lazy: true # 开启懒加载,保证启动速度 + url: jdbc:dm://172.16.46.247:1050?schema=RUOYI-VUE-PRO + username: SYSDBA + password: pgbsci6ddJ6Sqj@e + + # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 + data: + redis: + host: 172.16.46.63 # 地址 + port: 30379 # 端口 + database: 0 # 数据库索引 +# password: 123456 # 密码,建议生产环境开启 + +xxl: + job: + admin: + addresses: http://172.16.46.63:30082/xxl-job-admin # 调度中心部署跟地址 + +# Lock4j 配置项 +lock4j: + acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒 + expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒 + +# Actuator 监控端点的配置项 +management: + endpoints: + web: + base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator + exposure: + include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。 + +# 日志文件配置 +logging: + level: + # 配置自己写的 MyBatis Mapper 打印日志 + cn.iocoder.yudao.module.base.dal.mysql: debug + org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR + +mybatis-plus: + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + + +# 芋道配置项,设置当前项目所有自定义的配置 +yudao: + env: # 多环境的配置项 + tag: ${HOSTNAME} + security: + mock-enable: true + access-log: # 访问日志的配置项 + enable: true + diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/application.yml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/application.yml new file mode 100644 index 00000000..5a7247af --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/application.yml @@ -0,0 +1,123 @@ +spring: + application: + name: base-server + + profiles: + active: ${env.name} + #统一nacos配置,使用 profile 管理 + cloud: + nacos: + server-addr: ${config.server-addr} # Nacos 服务器地址 + username: ${config.username} # Nacos 账号 + password: ${config.password} # Nacos 密码 + discovery: # 【配置中心】配置项 + namespace: ${config.namespace} # 命名空间。这里使用 maven Profile 资源过滤进行动态替换 + group: ${config.group} # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + metadata: + version: 1.0.0 # 服务实例的版本号,可用于灰度发布 + config: # 【注册中心】配置项 + namespace: ${config.namespace} # 命名空间。这里使用 maven Profile 资源过滤进行动态替换 + group: ${config.group} # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + main: + allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。 + allow-bean-definition-overriding: true # 允许 Bean 覆盖,例如说 Feign 等会存在重复定义的服务 + + config: + import: + - optional:classpath:application-${spring.profiles.active}.yaml # 加载【本地】配置 + - optional:nacos:${spring.application.name}-${spring.profiles.active}.yaml # 加载【Nacos】的配置 + + # Servlet 配置 + servlet: + # 文件上传相关配置项 + multipart: + max-file-size: 16MB # 单个文件大小 + max-request-size: 32MB # 设置总上传的文件大小 + + # Jackson 配置项 + jackson: + serialization: + write-dates-as-timestamps: true # 设置 LocalDateTime 的格式,使用时间戳 + write-date-timestamps-as-nanoseconds: false # 设置不使用 nanoseconds 的格式。例如说 1611460870.401,而是直接 1611460870401 + write-durations-as-timestamps: true # 设置 Duration 的格式,使用时间戳 + fail-on-empty-beans: false # 允许序列化无属性的 Bean + time-zone: Asia/Shanghai + + # Cache 配置项 + cache: + type: REDIS + redis: + time-to-live: 1h # 设置过期时间为 1 小时 + +server: + port: 48100 + +logging: + file: + name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径 + +springdoc: + api-docs: + enabled: true # 1. 是否开启 Swagger 接文档的元数据 + path: /v3/api-docs + swagger-ui: + enabled: true # 2.1 是否开启 Swagger 文档的官方 UI 界面 + path: /swagger-ui.html + default-flat-param-object: true # 参见 https://doc.xiaominfo.com/docs/faq/v4/knife4j-parameterobject-flat-param 文档 + +knife4j: + enable: true # 2.2 是否开启 Swagger 文档的 Knife4j UI 界面 + setting: + language: zh_cn + +# MyBatis Plus 的配置项 +mybatis-plus: + configuration: + map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。 + global-config: + db-config: + id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。 + # id-type: AUTO # 自增 ID,适合 MySQL 等直接自增的数据库 + # id-type: INPUT # 用户输入 ID,适合 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库 + # id-type: ASSIGN_ID # 分配 ID,默认使用雪花算法。注意,Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解 + logic-delete-value: 1 # 逻辑已删除值(默认为 1) + logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) + banner: false # 关闭控制台的 Banner 打印 + type-aliases-package: cn.iocoder.yudao.module.*.dal.dataobject + encryptor: + password: XDV71a+xqStEA3WH # 加解密的秘钥,可使用 https://www.imaegoo.com/2020/aes-key-generator/ 网站生成 + +mybatis-plus-join: + banner: false # 关闭控制台的 Banner 打印 + +# VO 转换(数据翻译)相关 +easy-trans: + is-enable-global: false # 启用全局翻译(拦截所有 SpringMVC ResponseBody 进行自动翻译 )。如果对于性能要求很高可关闭此配置,或通过 @IgnoreTrans 忽略某个接口 + +xxl: + job: + executor: + appname: ${spring.application.name} # 执行器 AppName + logpath: ${user.home}/logs/xxl-job/${spring.application.name} # 执行器运行日志文件存储磁盘路径 + accessToken: default_token # 执行器通讯TOKEN + +yudao: + info: + version: 1.0.0 + base-package: cn.iocoder.yudao.module.base + web: + admin-ui: + url: http://dashboard.yudao.iocoder.cn # Admin 管理后台 UI 的地址 + xss: + enable: false + exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系 + - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求 + - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求 + swagger: + title: 管理后台 + description: 提供管理员管理的所有功能 + version: ${yudao.info.version} + tenant: # 多租户相关配置项 + enable: true + +debug: false diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpAssetMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpAssetMapper.xml new file mode 100644 index 00000000..e7798e0e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpAssetMapper.xml @@ -0,0 +1,30 @@ + + + + + + + UPDATE sply_erp_ast + + NAME = CASE + + WHEN CPN_NUM = #{item.companyNumber} AND MAIN_AST_NUM = #{item.mainAssetNumber} THEN #{item.name} + + END, + CPN_ID = CASE + + WHEN CPN_NUM = #{item.companyNumber} AND MAIN_AST_NUM = #{item.mainAssetNumber} THEN #{item.companyId} + + END + + WHERE (CPN_NUM, MAIN_AST_NUM) IN + + #{item.companyNumber}, #{item.mainAssetNumber} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomDetailMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomDetailMapper.xml new file mode 100644 index 00000000..020682e2 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomDetailMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml new file mode 100644 index 00000000..7ebe538b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCompanyMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCompanyMapper.xml new file mode 100644 index 00000000..4e447e67 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCompanyMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpContractMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpContractMapper.xml new file mode 100644 index 00000000..f1f51edd --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpContractMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCostcenterMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCostcenterMapper.xml new file mode 100644 index 00000000..54a74495 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCostcenterMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCustomerMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCustomerMapper.xml new file mode 100644 index 00000000..65522cff --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCustomerMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpFactoryMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpFactoryMapper.xml new file mode 100644 index 00000000..294a9c7d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpFactoryMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpInternalOrderMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpInternalOrderMapper.xml new file mode 100644 index 00000000..ef60853e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpInternalOrderMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpMaterialMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpMaterialMapper.xml new file mode 100644 index 00000000..6ce660c7 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpMaterialMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml new file mode 100644 index 00000000..51befb73 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml new file mode 100644 index 00000000..0e5b7fc5 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveOrderMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveOrderMapper.xml new file mode 100644 index 00000000..4570fd8f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveOrderMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveVersionMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveVersionMapper.xml new file mode 100644 index 00000000..a978df25 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveVersionMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpPurchaseOrganizationMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpPurchaseOrganizationMapper.xml new file mode 100644 index 00000000..195c2c64 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpPurchaseOrganizationMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpSalesOrganizationMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpSalesOrganizationMapper.xml new file mode 100644 index 00000000..3ed699f8 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpSalesOrganizationMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpWarehouseMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpWarehouseMapper.xml new file mode 100644 index 00000000..4fb6b6c0 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpWarehouseMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + UPDATE sply_erp_fact + + NAME = #{item.name}, + CPN_ID = #{item.companyId}, + + WHERE NUM = #{item.number} + + + \ No newline at end of file