From 38f4d4c0ab2ca44f41623f39a7a4cc2c5cd5dec1 Mon Sep 17 00:00:00 2001 From: xs Date: Tue, 11 Nov 2025 08:34:43 +0800 Subject: [PATCH] =?UTF-8?q?1.0.35.0=EF=BC=9A=20=E5=90=8E=E7=AB=AF=E5=B0=81?= =?UTF-8?q?=E8=A3=85=E5=B7=A5=E4=BD=9C=E6=B5=81=EF=BC=9A=E5=8C=85=E6=8B=AC?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E7=9A=84=E6=89=A7=E8=A1=8C=E5=92=8C?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E7=9A=84=E7=9B=91=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/domain/RemoteStartProcess.java | 15 ++ ruoyi-common/hwbm-common-workflow/pom.xml | 36 +++ .../workflow/enums/FlowConfigEnum.java | 88 +++++++ .../event/AbstractProcessEventHandler.java | 182 ++++++++++++++ .../workflow/event/IProcessEventHandler.java | 17 ++ .../strategy/AbstractWorkflowService.java | 52 ++++ .../workflow/strategy/WorkflowStrategy.java | 21 ++ .../mybatis/utils/UniversalSqlProvider.java | 103 ++++++++ ruoyi-modules/ruoyi-oa/pom.xml | 6 + .../controller/ErpBudgetInfoController.java | 145 ++++++++++++ .../oa/erp/domain/ErpBudgetDetail.java | 65 +++++ .../dromara/oa/erp/domain/ErpBudgetInfo.java | 167 +++++++++++++ .../oa/erp/domain/ErpBudgetInstallCost.java | 117 +++++++++ .../oa/erp/domain/ErpBudgetLaborCost.java | 122 ++++++++++ .../oa/erp/domain/ErpBudgetMaterialCost.java | 122 ++++++++++ .../oa/erp/domain/ErpBudgetOtherCost.java | 82 +++++++ .../oa/erp/domain/ErpBudgetTravelCost.java | 152 ++++++++++++ .../erp/domain/ErpRdBudgetEquipmentCost.java | 82 +++++++ .../erp/domain/ErpRdBudgetExchangeCost.java | 97 ++++++++ .../oa/erp/domain/ErpRdBudgetLaborCost.java | 97 ++++++++ .../erp/domain/ErpRdBudgetLiteratureCost.java | 72 ++++++ .../erp/domain/ErpRdBudgetMaterialCost.java | 87 +++++++ .../oa/erp/domain/ErpRdBudgetMeetingCost.java | 102 ++++++++ .../oa/erp/domain/ErpRdBudgetOtherCost.java | 67 ++++++ .../oa/erp/domain/ErpRdBudgetTechCost.java | 97 ++++++++ .../oa/erp/domain/ErpRdBudgetTestingCost.java | 92 ++++++++ .../oa/erp/domain/ErpRdBudgetTravelCost.java | 107 +++++++++ .../oa/erp/domain/bo/ErpBudgetDetailBo.java | 67 ++++++ .../oa/erp/domain/bo/ErpBudgetInfoBo.java | 171 ++++++++++++++ .../erp/domain/bo/ErpBudgetInstallCostBo.java | 111 +++++++++ .../erp/domain/bo/ErpBudgetLaborCostBo.java | 116 +++++++++ .../domain/bo/ErpBudgetMaterialCostBo.java | 116 +++++++++ .../erp/domain/bo/ErpBudgetOtherCostBo.java | 76 ++++++ .../erp/domain/bo/ErpBudgetTravelCostBo.java | 146 ++++++++++++ .../domain/bo/ErpRdBudgetEquipmentCostBo.java | 76 ++++++ .../domain/bo/ErpRdBudgetExchangeCostBo.java | 91 +++++++ .../erp/domain/bo/ErpRdBudgetLaborCostBo.java | 93 ++++++++ .../bo/ErpRdBudgetLiteratureCostBo.java | 66 ++++++ .../domain/bo/ErpRdBudgetMaterialCostBo.java | 81 +++++++ .../domain/bo/ErpRdBudgetMeetingCostBo.java | 96 ++++++++ .../erp/domain/bo/ErpRdBudgetOtherCostBo.java | 61 +++++ .../erp/domain/bo/ErpRdBudgetTechCostBo.java | 92 ++++++++ .../domain/bo/ErpRdBudgetTestingCostBo.java | 86 +++++++ .../domain/bo/ErpRdBudgetTravelCostBo.java | 101 ++++++++ .../oa/erp/domain/vo/ErpBudgetDetailVo.java | 80 +++++++ .../oa/erp/domain/vo/ErpBudgetInfoVo.java | 198 ++++++++++++++++ .../erp/domain/vo/ErpBudgetInstallCostVo.java | 142 +++++++++++ .../erp/domain/vo/ErpBudgetLaborCostVo.java | 148 ++++++++++++ .../domain/vo/ErpBudgetMaterialCostVo.java | 142 +++++++++++ .../erp/domain/vo/ErpBudgetOtherCostVo.java | 94 ++++++++ .../erp/domain/vo/ErpBudgetTravelCostVo.java | 186 +++++++++++++++ .../domain/vo/ErpRdBudgetEquipmentCostVo.java | 93 ++++++++ .../domain/vo/ErpRdBudgetExchangeCostVo.java | 114 +++++++++ .../erp/domain/vo/ErpRdBudgetLaborCostVo.java | 114 +++++++++ .../vo/ErpRdBudgetLiteratureCostVo.java | 82 +++++++ .../domain/vo/ErpRdBudgetMaterialCostVo.java | 99 ++++++++ .../domain/vo/ErpRdBudgetMeetingCostVo.java | 117 +++++++++ .../erp/domain/vo/ErpRdBudgetOtherCostVo.java | 75 ++++++ .../erp/domain/vo/ErpRdBudgetTechCostVo.java | 111 +++++++++ .../domain/vo/ErpRdBudgetTestingCostVo.java | 105 +++++++++ .../domain/vo/ErpRdBudgetTravelCostVo.java | 127 ++++++++++ .../oa/erp/mapper/ErpBudgetDetailMapper.java | 40 ++++ .../oa/erp/mapper/ErpBudgetInfoMapper.java | 37 +++ .../mapper/ErpBudgetInstallCostMapper.java | 37 +++ .../erp/mapper/ErpBudgetLaborCostMapper.java | 37 +++ .../mapper/ErpBudgetMaterialCostMapper.java | 37 +++ .../erp/mapper/ErpBudgetOtherCostMapper.java | 37 +++ .../erp/mapper/ErpBudgetTravelCostMapper.java | 37 +++ .../ErpRdBudgetEquipmentCostMapper.java | 37 +++ .../mapper/ErpRdBudgetExchangeCostMapper.java | 37 +++ .../mapper/ErpRdBudgetLaborCostMapper.java | 37 +++ .../ErpRdBudgetLiteratureCostMapper.java | 37 +++ .../mapper/ErpRdBudgetMaterialCostMapper.java | 37 +++ .../mapper/ErpRdBudgetMeetingCostMapper.java | 37 +++ .../mapper/ErpRdBudgetOtherCostMapper.java | 37 +++ .../erp/mapper/ErpRdBudgetTechCostMapper.java | 37 +++ .../mapper/ErpRdBudgetTestingCostMapper.java | 37 +++ .../mapper/ErpRdBudgetTravelCostMapper.java | 37 +++ .../oa/erp/mapper/OaUniversalMapper.java | 29 +++ .../oa/erp/service/IErpBudgetInfoService.java | 69 ++++++ .../impl/ErpBudgetInfoServiceImpl.java | 222 ++++++++++++++++++ .../handler/OaProcessEventHandler.java | 54 +++++ .../strategy/BudgetWorkflowStrategy.java | 39 +++ .../mapper/oa/erp/ErpBudgetDetailMapper.xml | 14 ++ .../mapper/oa/erp/ErpBudgetInfoMapper.xml | 14 ++ .../oa/erp/ErpBudgetInstallCostMapper.xml | 14 ++ .../oa/erp/ErpBudgetLaborCostMapper.xml | 14 ++ .../oa/erp/ErpBudgetMaterialCostMapper.xml | 14 ++ .../oa/erp/ErpBudgetOtherCostMapper.xml | 14 ++ .../oa/erp/ErpBudgetTravelCostMapper.xml | 14 ++ .../oa/erp/ErpRdBudgetEquipmentCostMapper.xml | 14 ++ .../oa/erp/ErpRdBudgetExchangeCostMapper.xml | 14 ++ .../oa/erp/ErpRdBudgetLaborCostMapper.xml | 14 ++ .../erp/ErpRdBudgetLiteratureCostMapper.xml | 14 ++ .../oa/erp/ErpRdBudgetMaterialCostMapper.xml | 14 ++ .../oa/erp/ErpRdBudgetMeetingCostMapper.xml | 14 ++ .../oa/erp/ErpRdBudgetOtherCostMapper.xml | 14 ++ .../oa/erp/ErpRdBudgetTechCostMapper.xml | 14 ++ .../oa/erp/ErpRdBudgetTestingCostMapper.xml | 14 ++ .../oa/erp/ErpRdBudgetTravelCostMapper.xml | 14 ++ 100 files changed, 7348 insertions(+) create mode 100644 ruoyi-common/hwbm-common-workflow/pom.xml create mode 100644 ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/enums/FlowConfigEnum.java create mode 100644 ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/event/AbstractProcessEventHandler.java create mode 100644 ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/event/IProcessEventHandler.java create mode 100644 ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/strategy/AbstractWorkflowService.java create mode 100644 ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/strategy/WorkflowStrategy.java create mode 100644 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/utils/UniversalSqlProvider.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpBudgetInfoController.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetDetail.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetInfo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetInstallCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetLaborCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetMaterialCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetOtherCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetTravelCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetEquipmentCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetExchangeCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetLaborCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetLiteratureCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetMaterialCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetMeetingCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetOtherCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetTechCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetTestingCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetTravelCost.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetDetailBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetInfoBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetInstallCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetLaborCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetMaterialCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetOtherCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetTravelCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetEquipmentCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetExchangeCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetLaborCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetLiteratureCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetMaterialCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetMeetingCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetOtherCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetTechCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetTestingCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetTravelCostBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetDetailVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetInfoVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetInstallCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetLaborCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetMaterialCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetOtherCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetTravelCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetEquipmentCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetExchangeCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetLaborCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetLiteratureCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetMaterialCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetMeetingCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetOtherCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetTechCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetTestingCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetTravelCostVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetDetailMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetInfoMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetInstallCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetLaborCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetMaterialCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetOtherCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetTravelCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetEquipmentCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetExchangeCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetLaborCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetLiteratureCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetMaterialCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetMeetingCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetOtherCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetTechCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetTestingCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetTravelCostMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/OaUniversalMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpBudgetInfoService.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpBudgetInfoServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/workflow/handler/OaProcessEventHandler.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/workflow/strategy/BudgetWorkflowStrategy.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetDetailMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetInfoMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetInstallCostMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetLaborCostMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetMaterialCostMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetOtherCostMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetTravelCostMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetEquipmentCostMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetExchangeCostMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetLaborCostMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetLiteratureCostMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetMaterialCostMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetMeetingCostMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetOtherCostMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetTechCostMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetTestingCostMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetTravelCostMapper.xml diff --git a/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteStartProcess.java b/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteStartProcess.java index d94e4b02..f9204927 100644 --- a/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteStartProcess.java +++ b/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteStartProcess.java @@ -3,6 +3,7 @@ package org.dromara.workflow.api.domain; import cn.hutool.core.util.ObjectUtil; import lombok.Data; +import org.dromara.common.core.utils.StringUtils; import java.io.Serial; import java.io.Serializable; @@ -46,6 +47,7 @@ public class RemoteStartProcess implements Serializable { */ private RemoteFlowInstanceBizExt bizExt; + public Map getVariables() { if (variables == null) { return new HashMap<>(16); @@ -61,4 +63,17 @@ public class RemoteStartProcess implements Serializable { return bizExt; } + public void setFlowConfig(String flowCode,String businessTitle,String businessCode){ + // 后端发起需要忽略权限 + this.getVariables().put("ignore", true); + this.setFlowCode(flowCode); + RemoteFlowInstanceBizExt bizExt = new RemoteFlowInstanceBizExt(); + bizExt.setBusinessTitle(businessTitle); + bizExt.setBusinessId(this.getBusinessId()); + if(StringUtils.isNotEmpty(businessCode)){ + bizExt.setBusinessCode(businessCode); + } + this.setBizExt(bizExt); + } + } diff --git a/ruoyi-common/hwbm-common-workflow/pom.xml b/ruoyi-common/hwbm-common-workflow/pom.xml new file mode 100644 index 00000000..f4d3818d --- /dev/null +++ b/ruoyi-common/hwbm-common-workflow/pom.xml @@ -0,0 +1,36 @@ + + + 4.0.0 + + org.dromara + ruoyi-common + 2.5.0 + + + hwbm-common-workflow + + + 17 + 17 + UTF-8 + + + + org.projectlombok + lombok + provided + + + org.dromara + ruoyi-api-workflow + + + + org.dromara + ruoyi-common-bus + + + + diff --git a/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/enums/FlowConfigEnum.java b/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/enums/FlowConfigEnum.java new file mode 100644 index 00000000..464379f0 --- /dev/null +++ b/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/enums/FlowConfigEnum.java @@ -0,0 +1,88 @@ +package org.dromara.workflow.enums; + +import lombok.Getter; +import org.dromara.common.core.enums.OAStatusEnum; + +/** + * @description + * 流程配置枚举 + * 定义流程编码与业务实体的映射关系 + * @author xins + * @date 2025/11/4 9:41 + */ +@Getter +public enum FlowConfigEnum { + + /** + * 预算流程 + */ + BUDGET("HWOABudget", "erp_budget_info", "budget_status", OAStatusEnum.COMPLETED.getStatus(), "flow_status","预算审批","budget_id"); + + + /** + * 流程编码 + */ + private final String flowCode; + + /** + * 数据库表名 + */ + private final String tableName; + + /** + * 业务状态字段名 + */ + private final String businessStatusField; + + /** + * 流程完成时的业务状态值 + */ + private final String completedBusinessStatus; + + /** + * 流程状态字段名 + */ + private final String flowStatusField; + + + /** + * 业务标题 + */ + private final String businessTitle; + + /** + * 业务主键名称 + */ + private final String businessPk; + + + FlowConfigEnum(String flowCode, String tableName, String businessStatusField, + String completedBusinessStatus, String flowStatusField, String businessTitle, String businessPk) { + this.flowCode = flowCode; + this.tableName = tableName; + this.businessStatusField = businessStatusField; + this.completedBusinessStatus = completedBusinessStatus; + this.flowStatusField = flowStatusField; + this.businessTitle = businessTitle; + this.businessPk = businessPk; + } + + /** + * 根据流程编码获取配置 + */ + public static FlowConfigEnum getByFlowCode(String flowCode) { + for (FlowConfigEnum config : values()) { + if (config.getFlowCode().equals(flowCode)) { + return config; + } + } + return null; + } + + /** + * 判断是否支持该流程编码 + */ + public static boolean supports(String flowCode) { + return getByFlowCode(flowCode) != null; + } +} diff --git a/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/event/AbstractProcessEventHandler.java b/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/event/AbstractProcessEventHandler.java new file mode 100644 index 00000000..07b10229 --- /dev/null +++ b/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/event/AbstractProcessEventHandler.java @@ -0,0 +1,182 @@ +package org.dromara.workflow.event; + +import cn.hutool.core.convert.Convert; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.workflow.api.event.ProcessEvent; +import org.dromara.workflow.enums.FlowConfigEnum; + +import java.util.HashMap; +import java.util.Map; + +/** + * @Author xins + * @Date 2025/11/10 10:16 + * @Description: * 流程事件处理抽象模板类 + * 定义处理流程的标准模板,子类只需实现特定方法 + */ +@Slf4j +public abstract class AbstractProcessEventHandler implements IProcessEventHandler { + + /** + * 统一事件监听方法 + * 所有子类的事件都会经过这里统一处理 + */ + public abstract void onProcessEvent(ProcessEvent processEvent); + + /** + * 模板方法 - 定义处理流程的标准步骤 + */ + @Override + public final int handleProcessEvent(ProcessEvent processEvent) { + // 步骤1: 参数校验 + validateParameters(processEvent); + + String flowCode = processEvent.getFlowCode(); + String businessId = processEvent.getBusinessId(); + + log.info("开始处理流程事件: flowCode={}, businessId={}, status={}", + flowCode, businessId, processEvent.getStatus()); + + // 检查是否支持该流程编码 + FlowConfigEnum flowConfig = FlowConfigEnum.getByFlowCode(flowCode); + + // 步骤2: 构建更新字段 + Map setFields = buildSetFields(flowConfig,processEvent); + + // 步骤3: 构建查询条件 + Map conditions = buildConditions(flowConfig,processEvent); + + // 步骤4: 执行更新 + int updateCount = doUpdate(flowConfig, setFields, conditions); + + // 步骤5: 验证更新结果 + validateUpdateResult(processEvent, updateCount); + + return updateCount; + } + + /** + * 参数校验 - 可被子类重写 + */ + protected void validateParameters(ProcessEvent processEvent) { + if (processEvent == null) { + throw new IllegalArgumentException("流程事件不能为空"); + } + String flowCode = processEvent.getFlowCode(); + + // 检查是否支持该流程编码 + FlowConfigEnum flowConfig = FlowConfigEnum.getByFlowCode(flowCode); + if (flowConfig == null) { + throw new IllegalArgumentException("不支持的流程编码: "+flowCode+", 忽略处理"); + } +// if (flowConfig == null) { +// throw new IllegalArgumentException("流程配置不能为空"); +// } + if (StringUtils.isBlank(processEvent.getBusinessId())) { + throw new IllegalArgumentException("业务ID不能为空"); + } + + log.debug("参数校验通过: flowCode={}, businessId={}", + processEvent.getFlowCode(), processEvent.getBusinessId()); + } + + + /** + * 构建更新字段 + */ + protected Map buildSetFields(FlowConfigEnum flowConfig, ProcessEvent processEvent) { + Map setFields = new HashMap<>(); + + // 设置流程状态 + setFields.put(flowConfig.getFlowStatusField(), processEvent.getStatus()); + + // 如果流程完成,更新业务状态 + if (BusinessStatusEnum.FINISH.getStatus().equals(processEvent.getStatus())) { + setFields.put(flowConfig.getBusinessStatusField(), flowConfig.getCompletedBusinessStatus()); + } + + // 处理特殊状态转换 +// handleSpecialStatus(flowConfig, processEvent, setFields); + + // 设置更新时间(如果表中有这个字段) + setFields.put("update_time", new java.util.Date()); + + return setFields; + } + + /** + * 构建条件 + */ + protected Map buildConditions(FlowConfigEnum flowConfig, ProcessEvent processEvent) { + Map conditions = new HashMap<>(); + + // 主键条件 + conditions.put(flowConfig.getBusinessPk(), Convert.toLong(processEvent.getBusinessId())); + + // 可以添加其他条件,如租户ID等 + // conditions.put("tenant_id", processEvent.getTenantId()); + + return conditions; + } + + /** + * 执行更新操作 - 可被子类重写 + */ + protected abstract int doUpdate(FlowConfigEnum flowConfig, + Map setFields, Map conditions); + + /** + * 验证更新结果 - 可被子类重写 + */ + protected void validateUpdateResult(ProcessEvent processEvent, int updateCount) { + if (updateCount == 0) { + log.warn("未更新到任何记录: flowCode={}, businessId={}", + processEvent.getFlowCode(), processEvent.getBusinessId()); + } else if (updateCount > 1) { + log.warn("更新了多条记录: flowCode={}, businessId={}, updateCount={}", + processEvent.getFlowCode(), processEvent.getBusinessId(), updateCount); + } + } + + /** + * 处理特殊状态转换 + */ + protected void handleSpecialStatus(FlowConfigEnum flowConfig, ProcessEvent processEvent, Map setFields) { + // 可以根据需要添加特殊的状态转换逻辑 + switch (processEvent.getStatus()) { + case "BACK": // 退回 + setFields.put(flowConfig.getBusinessStatusField(), "REJECTED"); + break; + case "CANCEL": // 取消 + setFields.put(flowConfig.getBusinessStatusField(), "CANCELLED"); + break; + case "TERMINATE": // 终止 + setFields.put(flowConfig.getBusinessStatusField(), "TERMINATED"); + break; + default: + // 默认不处理 + break; + } + } + + /** + * 后处理逻辑 + */ + protected void handlePostProcess(FlowConfigEnum flowConfig, ProcessEvent processEvent, int updateCount) { + // 可以在这里添加后处理逻辑,如发送消息、记录日志等 + + switch (flowConfig) { + case BUDGET: + log.debug("预算流程处理完成, businessId: {}", processEvent.getBusinessId()); + // 可以发送预算特定的领域事件 + break; + default: + log.debug("流程处理完成, flowCode: {}, businessId: {}", + processEvent.getFlowCode(), processEvent.getBusinessId()); + break; + } + } + +} diff --git a/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/event/IProcessEventHandler.java b/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/event/IProcessEventHandler.java new file mode 100644 index 00000000..7fbc4eee --- /dev/null +++ b/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/event/IProcessEventHandler.java @@ -0,0 +1,17 @@ +package org.dromara.workflow.event; + +import org.dromara.workflow.api.event.ProcessEvent; + +/** + * @Author xins + * @Date 2025/11/10 10:14 + * @Description: + */ +public interface IProcessEventHandler { + + /** + * 通用的流程事件监听器 + */ + public int handleProcessEvent(ProcessEvent processEvent); + +} diff --git a/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/strategy/AbstractWorkflowService.java b/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/strategy/AbstractWorkflowService.java new file mode 100644 index 00000000..e970e4b2 --- /dev/null +++ b/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/strategy/AbstractWorkflowService.java @@ -0,0 +1,52 @@ +package org.dromara.workflow.strategy;//package org.dromara.workflow.strategy; + + +import org.dromara.common.core.exception.ServiceException; +import org.dromara.workflow.api.domain.RemoteStartProcess; +import org.dromara.workflow.enums.FlowConfigEnum; + +/** + * @Author xins + * @Date 2025/11/10 13:48 + * @Description:工作流抽象基类(泛型版本) + */ +public abstract class AbstractWorkflowService { + + /** + * 模板方法 - 启动工作流 + */ + protected final void executeWorkflow(T bo) { + WorkflowStrategy strategy = getStrategy(); + if (strategy != null && strategy.shouldStartWorkflow(bo)) { + startWorkFlow(bo, strategy); + } + } + + /** + * 通用的工作流启动方法 + */ + protected void startWorkFlow(T bo, WorkflowStrategy strategy) { + RemoteStartProcess startProcess = new RemoteStartProcess(); + startProcess.setBusinessId(strategy.getBusinessId(bo)); + startProcess.setVariables(strategy.getVariables(bo)); + FlowConfigEnum flowConfigEnum = strategy.getFlowConfig(bo); + startProcess.setFlowConfig(flowConfigEnum.getFlowCode(), flowConfigEnum.getBusinessTitle(), ""); + + boolean flagOne = this.doStartWorkflow(startProcess); + if (!flagOne) { + throw new ServiceException("流程发起异常"); + } + } + + + /** + * 实现时执行remoteWorkflowService.startCompleteTask(startProcess); + */ + protected abstract boolean doStartWorkflow(RemoteStartProcess startProcess); + + + /** + * 获取工作流策略(由子类实现) + */ + protected abstract WorkflowStrategy getStrategy(); +} diff --git a/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/strategy/WorkflowStrategy.java b/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/strategy/WorkflowStrategy.java new file mode 100644 index 00000000..f441f323 --- /dev/null +++ b/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/strategy/WorkflowStrategy.java @@ -0,0 +1,21 @@ +package org.dromara.workflow.strategy; + + +import org.dromara.workflow.enums.FlowConfigEnum; + +import java.util.Map; + +/** + * @Author xins + * @Date 2025/11/10 13:50 + * @Description:工作流策略接口(泛型) + */ +public interface WorkflowStrategy { + boolean shouldStartWorkflow(T bo); + + String getBusinessId(T bo); + + Map getVariables(T bo); + + FlowConfigEnum getFlowConfig(T bo); +} diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/utils/UniversalSqlProvider.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/utils/UniversalSqlProvider.java new file mode 100644 index 00000000..76bf6a0c --- /dev/null +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/utils/UniversalSqlProvider.java @@ -0,0 +1,103 @@ +package org.dromara.common.mybatis.utils; + +/** + * @Author xins + * @Date 2025/11/3 16:27 + * @Description: + */ + +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.jdbc.SQL; + +import java.util.Map; + +/** + * 通用SQL提供者 + * 动态构建SQL语句 + */ +public class UniversalSqlProvider { + + /** + * 构建动态更新SQL + */ + public String buildDynamicUpdate(@Param("tableName") String tableName, + @Param("setFields") Map setFields, + @Param("conditions") Map conditions) { + return new SQL() {{ + UPDATE(tableName); + + // 设置更新字段 + if (setFields != null && !setFields.isEmpty()) { + for (Map.Entry entry : setFields.entrySet()) { + SET(entry.getKey() + " = #{setFields." + entry.getKey() + "}"); + } + } + + // 设置条件 + if (conditions != null && !conditions.isEmpty()) { + for (Map.Entry entry : conditions.entrySet()) { + WHERE(entry.getKey() + " = #{conditions." + entry.getKey() + "}"); + } + } + }}.toString(); + } + + /** + * 构建带操作符的动态更新SQL + */ + public String buildDynamicUpdateWithOperator(@Param("tableName") String tableName, + @Param("setFields") Map setFields, + @Param("conditions") Map conditions) { + return new SQL() {{ + UPDATE(tableName); + + // 设置更新字段 + if (setFields != null && !setFields.isEmpty()) { + for (Map.Entry entry : setFields.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + + if (value instanceof String && ((String) value).startsWith("+")) { + // 增量更新,如: set quantity = quantity + 1 + SET(key + " = " + key + " + " + ((String) value).substring(1)); + } else if (value instanceof String && ((String) value).startsWith("-")) { + // 减量更新 + SET(key + " = " + key + " - " + ((String) value).substring(1)); + } else { + // 普通赋值更新 + SET(key + " = #{setFields." + key + "}"); + } + } + } + + // 设置条件 + if (conditions != null && !conditions.isEmpty()) { + for (Map.Entry entry : conditions.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + + if (value instanceof String) { + String strValue = (String) value; + if (strValue.startsWith(">=")) { + WHERE(key + " >= " + strValue.substring(2)); + } else if (strValue.startsWith("<=")) { + WHERE(key + " <= " + strValue.substring(2)); + } else if (strValue.startsWith(">")) { + WHERE(key + " > " + strValue.substring(1)); + } else if (strValue.startsWith("<")) { + WHERE(key + " < " + strValue.substring(1)); + } else if (strValue.startsWith("!=")) { + WHERE(key + " != " + strValue.substring(2)); + } else if (strValue.startsWith("LIKE ")) { + WHERE(key + " LIKE '%" + strValue.substring(5) + "%'"); + } else { + WHERE(key + " = #{conditions." + key + "}"); + } + } else { + WHERE(key + " = #{conditions." + key + "}"); + } + } + } + }}.toString(); + } +} diff --git a/ruoyi-modules/ruoyi-oa/pom.xml b/ruoyi-modules/ruoyi-oa/pom.xml index 69f70aa8..3ff2a153 100644 --- a/ruoyi-modules/ruoyi-oa/pom.xml +++ b/ruoyi-modules/ruoyi-oa/pom.xml @@ -109,6 +109,12 @@ org.dromara ruoyi-common-bus + + org.dromara + hwbm-common-workflow + 2.5.0 + compile + diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpBudgetInfoController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpBudgetInfoController.java new file mode 100644 index 00000000..ba4c315a --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpBudgetInfoController.java @@ -0,0 +1,145 @@ +package org.dromara.oa.erp.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.oa.base.domain.bo.BaseMaterialInfoBo; +import org.dromara.oa.base.domain.vo.BaseMaterialInfoVo; +import org.dromara.oa.base.service.IBaseMaterialInfoService; +import org.dromara.oa.erp.domain.bo.ErpProjectInfoBo; +import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo; +import org.dromara.oa.erp.service.IErpProjectInfoService; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.oa.erp.domain.vo.ErpBudgetInfoVo; +import org.dromara.oa.erp.domain.bo.ErpBudgetInfoBo; +import org.dromara.oa.erp.service.IErpBudgetInfoService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 项目预算 + * 前端访问路由地址为:/oa/erp/budgetInfo + * + * @author xins + * @date 2025-10-28 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/erp/budgetInfo") +public class ErpBudgetInfoController extends BaseController { + + private final IErpBudgetInfoService erpBudgetInfoService; + + private final IErpProjectInfoService erpProjectInfoService; + + private final IBaseMaterialInfoService baseMaterialInfoService; + + /** + * 查询项目预算列表 + */ + @SaCheckPermission("oa:erp/budgetInfo:list") + @GetMapping("/list") + public TableDataInfo list(ErpBudgetInfoBo bo, PageQuery pageQuery) { + return erpBudgetInfoService.queryPageList(bo, pageQuery); + } + + /** + * 导出项目预算列表 + */ + @SaCheckPermission("oa:erp/budgetInfo:export") + @Log(title = "项目预算", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ErpBudgetInfoBo bo, HttpServletResponse response) { + List list = erpBudgetInfoService.queryList(bo); + ExcelUtil.exportExcel(list, "项目预算", ErpBudgetInfoVo.class, response); + } + + /** + * 获取项目预算详细信息 + * + * @param budgetId 主键 + */ + @SaCheckPermission("oa:erp/budgetInfo:query") + @GetMapping("/{budgetId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("budgetId") Long budgetId) { + return R.ok(erpBudgetInfoService.queryById(budgetId)); + } + + /** + * 新增项目预算 + */ + @SaCheckPermission("oa:erp/budgetInfo:add") + @Log(title = "项目预算", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ErpBudgetInfoBo bo) { + return toAjax(erpBudgetInfoService.insertByBo(bo)); + } + + /** + * 修改项目预算 + */ + @SaCheckPermission("oa:erp/budgetInfo:edit") + @Log(title = "项目预算", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ErpBudgetInfoBo bo) { + return toAjax(erpBudgetInfoService.updateByBo(bo)); + } + + /** + * 删除项目预算 + * + * @param budgetIds 主键串 + */ + @SaCheckPermission("oa:erp/budgetInfo:remove") + @Log(title = "项目预算", businessType = BusinessType.DELETE) + @DeleteMapping("/{budgetIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("budgetIds") Long[] budgetIds) { + return toAjax(erpBudgetInfoService.deleteWithValidByIds(List.of(budgetIds), true)); + } + + /** + * 下拉框查询项目预算列表 + */ + @GetMapping("/getErpBudgetInfoList") + public R> getErpBudgetInfoList(ErpBudgetInfoBo bo) { + List list = erpBudgetInfoService.queryList(bo); + return R.ok(list); + } + + + /** + * 查询项目信息列表 + */ + @SaCheckPermission("oa:erp/budgetInfo:list") + @GetMapping("/listProjectInfo") + public TableDataInfo listProjectInfo(ErpProjectInfoBo bo, PageQuery pageQuery) { + return erpProjectInfoService.queryPageList(bo, pageQuery); + } + + /** + * 查询SAP物料信息列表 + */ + @SaCheckPermission("oa:erp/budgetInfo:list") + @GetMapping("/listMaterialInfo") + public TableDataInfo listMaterialInfo(BaseMaterialInfoBo bo, PageQuery pageQuery) { + return baseMaterialInfoService.queryPageList(bo, pageQuery); + } + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetDetail.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetDetail.java new file mode 100644 index 00000000..9d5a24d2 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetDetail.java @@ -0,0 +1,65 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 项目预算详情对象 erp_budget_detail + * + * @author xins + * @date 2025-10-28 + */ +@Data +@TableName("erp_budget_detail") +public class ErpBudgetDetail{ + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 预算详情ID + */ + @TableId(value = "budget_detail_id", type = IdType.AUTO) + private Long budgetDetailId; + + /** + * 预算ID + */ + private Long budgetId; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 预算科目 + */ + private String budgetItem; + + /** + * 预算成本(元) + */ + private Long budgetCost; + + /** + * 降成本预算成本(元) + */ + private Long reduceBudgetCost; + + /** + * 参考项目ID + */ + private Long referenceProjectId; + + /** + * 参考项目名称 + */ + private String referenceProjectName; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetInfo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetInfo.java new file mode 100644 index 00000000..0732c065 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetInfo.java @@ -0,0 +1,167 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 项目预算对象 erp_budget_info + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_budget_info") +public class ErpBudgetInfo extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 预算ID + */ + @TableId(value = "budget_id", type = IdType.AUTO) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 等同于项目ID,做唯一索引使用,在作废时此值要清空 + */ + private Long approvedFlag; + + /** + * 版本,新版本+1 + */ + private Long budgetVersion; + + /** + * 冗余,项目类别(1销售 2研发 3预投) + */ + private String projectCategory; + + /** + * 项目号 + */ + private String projectCode; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 项目经理(市场预算表的项目经理,研发预算表中的编制),关联sys_user + */ + private Long managerId; + + /** + * 项目经理姓名 + */ + private String managerName; + + /** + * 产品经理,关联sys_user + */ + private Long productManagerId; + + /** + * 产品经理姓名 + */ + private String productManagerName; + + /** + * 审核(评审组长)ID,关联sys_user + */ + private Long approveUserId; + + /** + * 审核(评审组长)姓名 + */ + private String approveUserName; + + /** + * 合同额(元) + */ + private Long contractAmount; + + /** + * 合同净额(元) + */ + private Long netContractAmount; + + /** + * 预算成本(元) + */ + private Long budgetCost; + + /** + * 预算毛利率,乘以100保存(如1%,保存1) + */ + private Long budgetRate; + + /** + * 降成本后预算成本(元) + */ + private Long reduceBudgetCost; + + /** + * 降成本后预算毛利率 + */ + private Long reduceBudgetRate; + + /** + * 项目预算期间 + */ + private String duringOperation; + + /** + * 单位ID,关联base_unit_info + */ + private Long unitId; + + /** + * 单位名称 + */ + private String unitName; + + /** + * 是否出口(1是 0否) + */ + private String exportFlag; + + /** + * 预算状态(1暂存 2审批中 3可用) + */ + private String budgetStatus; + + /** + * 流程状态 + */ + private String flowStatus; + + /** + * 合同ID(预留) + */ + private Long contractId; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetInstallCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetInstallCost.java new file mode 100644 index 00000000..6cadc324 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetInstallCost.java @@ -0,0 +1,117 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 预算安装费对象 erp_budget_install_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_budget_install_cost") +public class ErpBudgetInstallCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 安装费ID + */ + @TableId(value = "install_cost_id", type = IdType.AUTO) + private Long installCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 人员类别 + */ + private String personnelCategory; + + /** + * 人数 + */ + private Long peopleNumber; + + /** + * 累计时间(月) + */ + private Long cumulativeTime; + + /** + * 月平均投入比例(%) + */ + private Long monthRate; + + /** + * 人工标准(元/人月) + */ + private Long artificialStandard; + + /** + * 金额(元) + */ + private Long price; + + /** + * 降成本人数 + */ + private Long reducePeopleNumber; + + /** + * 降成本累计时间(月) + */ + private Long reduceCumulativeTime; + + /** + * 降成本月平均投入比例(%) + */ + private Long reduceMonthRate; + + /** + * 降成本人工标准(元/人月) + */ + private Long reduceArtificialStandard; + + /** + * 降成本降成本金额(元) + */ + private Long reducePrice; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 降成本方案 + */ + private String reduceProposal; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetLaborCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetLaborCost.java new file mode 100644 index 00000000..8bd71e46 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetLaborCost.java @@ -0,0 +1,122 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 预算人工费对象 erp_budget_labor_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_budget_labor_cost") +public class ErpBudgetLaborCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 人工费ID + */ + @TableId(value = "labor_cost_id", type = IdType.AUTO) + private Long laborCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 人员类别,关联sys_dict_data的dict_value + */ + private String personnelCategory; + + /** + * 人数 + */ + private Long peopleNumber; + + /** + * 累计时间(月) + */ + private Long cumulativeTime; + + /** + * 月平均投入比例(%),乘以100保存 + */ + private Long monthRate; + + /** + * 人工标准(元/人月) + */ + private Long artificialStandard; + + /** + * 金额(元) + */ + private Long price; + + /** + * 降成本人员类别,关联sys_dict_data的dict_value + */ + private String reducePersonnelCategory; + + /** + * 降成本人数 + */ + private Long reducePeopleNumber; + + /** + * 降成本累计时间(月) + */ + private Long reduceCumulativeTime; + + /** + * 降成本月平均投入比例(%) + */ + private Long reduceMonthRate; + + /** + * 降成本人工标准(元/人月) + */ + private Long reduceArtificialStandard; + + /** + * 降成本金额(元) + */ + private Long reducePrice; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 降成本方案 + */ + private String reduceProposal; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetMaterialCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetMaterialCost.java new file mode 100644 index 00000000..039cd3d4 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetMaterialCost.java @@ -0,0 +1,122 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 预算材料费对象 erp_budget_material_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_budget_material_cost") +public class ErpBudgetMaterialCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 材料费ID + */ + @TableId(value = "material_cost_id", type = IdType.AUTO) + private Long materialCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 物料ID,关联base_material_info + */ + private Long materielId; + + /** + * SAP物料编码 + */ + private String materielCode; + + /** + * SAP物料名称 + */ + private String materielName; + + /** + * 销售物料ID? + */ + private Long relationMaterielId; + + /** + * 单位,关联base_unit_info + */ + private Long unitId; + + /** + * 单位名称 + */ + private String unitName; + + /** + * 单价(元) + */ + private Long unitPrice; + + /** + * 购置数量 + */ + private Long amount; + + /** + * 金额(元) + */ + private Long price; + + /** + * 降成本单价(元) + */ + private Long reduceUnitPrice; + + /** + * 降成本数量 + */ + private Long reduceAmount; + + /** + * 降成本金额(元) + */ + private Long reducePrice; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 降成本方案 + */ + private String reduceProposal; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetOtherCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetOtherCost.java new file mode 100644 index 00000000..527f5364 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetOtherCost.java @@ -0,0 +1,82 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 预算其他费用对象 erp_budget_other_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_budget_other_cost") +public class ErpBudgetOtherCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 其他费用ID + */ + @TableId(value = "other_cost_id", type = IdType.AUTO) + private Long otherCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 项目描述 + */ + private String itemDesc; + + /** + * 金额(元) + */ + private Long price; + + /** + * 降成本项目描述 + */ + private String reduceItemDesc; + + /** + * 降成本金额(元) + */ + private Long reducePrice; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 降成本方案 + */ + private String reduceProposal; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetTravelCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetTravelCost.java new file mode 100644 index 00000000..c17386d6 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpBudgetTravelCost.java @@ -0,0 +1,152 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 预算差旅费对象 erp_budget_travel_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_budget_travel_cost") +public class ErpBudgetTravelCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 差旅费ID + */ + @TableId(value = "travel_cost_id", type = IdType.AUTO) + private Long travelCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 出差地点 + */ + private String tripLocation; + + /** + * 事由 + */ + private String reason; + + /** + * 次数 + */ + private Long frequency; + + /** + * 人数 + */ + private Long peopleNumber; + + /** + * 天数 + */ + private Long days; + + /** + * 住宿标准(元) + */ + private Long stayStandard; + + /** + * 往返路费(元) + */ + private Long travelExpenses; + + /** + * 住宿费(元) + */ + private Long stayCosts; + + /** + * 补贴(元) + */ + private Long subsidyCosts; + + /** + * 小计(元) + */ + private Long subtotalCosts; + + /** + * 降成本次数 + */ + private Long reduceFrequency; + + /** + * 降成本人数 + */ + private Long reducePeopleNumber; + + /** + * 降成本天数 + */ + private Long reduceDayNumber; + + /** + * 降成本住宿标准(元) + */ + private Long reduceStayStandard; + + /** + * 降成本往返路费(元) + */ + private Long reduceTravelExpenses; + + /** + * 降成本住宿费(元) + */ + private Long reduceStayCosts; + + /** + * 降成本补贴(元) + */ + private Long reduceSubsidyCosts; + + /** + * 降成本小计(元) + */ + private Long reduceSubtotalCosts; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 降成本方案 + */ + private String reduceProposal; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetEquipmentCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetEquipmentCost.java new file mode 100644 index 00000000..d498a41f --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetEquipmentCost.java @@ -0,0 +1,82 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 研发预算设备费对象 erp_rd_budget_equipment_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_rd_budget_equipment_cost") +public class ErpRdBudgetEquipmentCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 设备费ID + */ + @TableId(value = "equipment_cost_id", type = IdType.AUTO) + private Long equipmentCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 设备名称 + */ + private String equipmentName; + + /** + * 设备型号 + */ + private String equipmentSpec; + + /** + * 单价(元/台件) + */ + private Long unitPrice; + + /** + * 数量(台件) + */ + private Long amount; + + /** + * 金额(元) + */ + private Long price; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetExchangeCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetExchangeCost.java new file mode 100644 index 00000000..7418fd71 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetExchangeCost.java @@ -0,0 +1,97 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 研发预算交流费对象 erp_rd_budget_exchange_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_rd_budget_exchange_cost") +public class ErpRdBudgetExchangeCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 交流费ID + */ + @TableId(value = "exchange_cost_id", type = IdType.AUTO) + private Long exchangeCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 合作交流类型(下拉列表选择,也可以直接输入) + */ + private String communicationType; + + /** + * 国家和地区 + */ + private String countryRegion; + + /** + * 机构 + */ + private String institution; + + /** + * 人数(人) + */ + private Long peopleNumber; + + /** + * 时间(天) + */ + private Long days; + + /** + * 往返路费及住宿费(元) + */ + private Long travelAccommodationExpense; + + /** + * 补贴(元) + */ + private Long subsidy; + + /** + * 小计(元) + */ + private Long price; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetLaborCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetLaborCost.java new file mode 100644 index 00000000..218b7f10 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetLaborCost.java @@ -0,0 +1,97 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 研发预算人工费对象 erp_rd_budget_labor_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_rd_budget_labor_cost") +public class ErpRdBudgetLaborCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 人工费ID + */ + @TableId(value = "labor_cost_id", type = IdType.AUTO) + private Long laborCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 类型(1人工费,2劳务费) + */ + private String laborType; + + /** + * 人员类别,关联sys_dict_data的dict_value + */ + private String personnelCategory; + + /** + * 人数 + */ + private Long peopleNumber; + + /** + * 累计时间(月) + */ + private Long cumulativeTime; + + /** + * 月平均投入比例(%) + */ + private Long monthRate; + + /** + * 人工标准(元/人月) + */ + private Long artificialStandard; + + /** + * 金额(元) + */ + private Long price; + + /** + * 投入人员,多个以,隔开 + */ + private String projectPersonnel; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetLiteratureCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetLiteratureCost.java new file mode 100644 index 00000000..d116379c --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetLiteratureCost.java @@ -0,0 +1,72 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 研发预算资料文献费对象 erp_rd_budget_literature_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_rd_budget_literature_cost") +public class ErpRdBudgetLiteratureCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 资料文献费ID + */ + @TableId(value = "literature_cost_id", type = IdType.AUTO) + private Long literatureCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 类型(1、资料费,2文献检索费,3专用软件购买费) + */ + private String literatureType; + + /** + * 项目描述 + */ + private String itemDesc; + + /** + * 金额(元) + */ + private Long price; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetMaterialCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetMaterialCost.java new file mode 100644 index 00000000..dbf6df5e --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetMaterialCost.java @@ -0,0 +1,87 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 研发预算材料费对象 erp_rd_budget_material_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_rd_budget_material_cost") +public class ErpRdBudgetMaterialCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 材料费ID + */ + @TableId(value = "material_cost_id", type = IdType.AUTO) + private Long materialCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 材料名称 + */ + private String materialName; + + /** + * 单位,关联base_unit_info + */ + private Long unitId; + + /** + * 单位名称 + */ + private String unitName; + + /** + * 单价(元/台件) + */ + private Long unitPrice; + + /** + * 数量 + */ + private Long amount; + + /** + * 金额(元) + */ + private Long price; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetMeetingCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetMeetingCost.java new file mode 100644 index 00000000..8bfd888b --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetMeetingCost.java @@ -0,0 +1,102 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 研发预算会议费对象 erp_rd_budget_meeting_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_rd_budget_meeting_cost") +public class ErpRdBudgetMeetingCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 会议费ID + */ + @TableId(value = "meeting_cost_id", type = IdType.AUTO) + private Long meetingCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 会议类型 + */ + private String meetingType; + + /** + * 会议内容 + */ + private String meetingContent; + + /** + * 场地日租金(元) + */ + private Long rentalFee; + + /** + * 日均杂费(元) + */ + private Long dailyExpense; + + /** + * 天数 + */ + private Long days; + + /** + * 专家交通住宿费(元) + */ + private Long expertExpense; + + /** + * 人数 + */ + private Long peopleNumber; + + /** + * 人均花费(元) + */ + private Long perPersonExpense; + + /** + * 会议费(元) + */ + private Long meetingPrice; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetOtherCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetOtherCost.java new file mode 100644 index 00000000..8542ee5a --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetOtherCost.java @@ -0,0 +1,67 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 研发预算其他费用对象 erp_rd_budget_other_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_rd_budget_other_cost") +public class ErpRdBudgetOtherCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 其他费用ID + */ + @TableId(value = "other_cost_id", type = IdType.AUTO) + private Long otherCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 项目描述 + */ + private String itemDesc; + + /** + * 金额(元) + */ + private Long price; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetTechCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetTechCost.java new file mode 100644 index 00000000..df84072f --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetTechCost.java @@ -0,0 +1,97 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 研发预算技术服务费对象 erp_rd_budget_tech_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_rd_budget_tech_cost") +public class ErpRdBudgetTechCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 技术服务费ID + */ + @TableId(value = "tech_cost_id", type = IdType.AUTO) + private Long techCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 技术服务费类型(1、技术咨询开发,2、专家咨询-会议形式,3、专家咨询-通讯形式) + */ + private String techType; + + /** + * 内容 + */ + private String techContent; + + /** + * 单位,关联base_unit_info + */ + private Long unitId; + + /** + * 单位名称 + */ + private String unitName; + + /** + * 人数 + */ + private Long peopleNumber; + + /** + * 天数 + */ + private Long days; + + /** + * 次数 + */ + private Long frequency; + + /** + * 金额(元) + */ + private Long price; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetTestingCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetTestingCost.java new file mode 100644 index 00000000..c8daf09b --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetTestingCost.java @@ -0,0 +1,92 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 研发预算测试化验费对象 erp_rd_budget_testing_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_rd_budget_testing_cost") +public class ErpRdBudgetTestingCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 测试化验费ID + */ + @TableId(value = "testing_cost_id", type = IdType.AUTO) + private Long testingCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 测试化验的内容 + */ + private String testingContent; + + /** + * 测试化验单位 + */ + private String testingUnitName; + + /** + * 单位,关联base_unit_info + */ + private Long unitId; + + /** + * 单位名称 + */ + private String unitName; + + /** + * 单价(元/单位数量) + */ + private Long unitPrice; + + /** + * 数量 + */ + private Long amount; + + /** + * 金额(元) + */ + private Long price; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetTravelCost.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetTravelCost.java new file mode 100644 index 00000000..43d13316 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpRdBudgetTravelCost.java @@ -0,0 +1,107 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 研发预算差旅费对象 erp_rd_budget_travel_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_rd_budget_travel_cost") +public class ErpRdBudgetTravelCost extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 差旅费ID + */ + @TableId(value = "travel_cost_id", type = IdType.AUTO) + private Long travelCostId; + + /** + * 预算ID,关联erp_budget_info + */ + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 出差地点 + */ + private String tripLocation; + + /** + * 事由 + */ + private String reason; + + /** + * 次数 + */ + private Long frequency; + + /** + * 人数 + */ + private Long peopleNumber; + + /** + * 天数 + */ + private Long days; + + /** + * 住宿标准(元) + */ + private Long stayStandard; + + /** + * 往返路费(元) + */ + private Long travelExpenses; + + /** + * 住宿费(元) + */ + private Long stayCosts; + + /** + * 补贴(元) + */ + private Long subsidyCosts; + + /** + * 小计(元) + */ + private Long subtotalCosts; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetDetailBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetDetailBo.java new file mode 100644 index 00000000..dbdff61d --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetDetailBo.java @@ -0,0 +1,67 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpBudgetDetail; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 项目预算详情业务对象 erp_budget_detail + * + * @author xins + * @date 2025-10-28 + */ +@Data +@AutoMapper(target = ErpBudgetDetail.class, reverseConvertGenerate = false) +public class ErpBudgetDetailBo { + + /** + * 预算详情ID + */ + @NotNull(message = "预算详情ID不能为空", groups = { EditGroup.class }) + private Long budgetDetailId; + + /** + * 预算ID + */ + @NotNull(message = "预算ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 排序号 + */ + @NotNull(message = "排序号不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long sortOrder; + + /** + * 预算科目 + */ + @NotBlank(message = "预算科目不能为空", groups = { AddGroup.class, EditGroup.class }) + private String budgetItem; + + /** + * 预算成本(元) + */ + private Long budgetCost; + + /** + * 降成本预算成本(元) + */ + private Long reduceBudgetCost; + + /** + * 参考项目ID + */ + private Long referenceProjectId; + + /** + * 参考项目名称 + */ + private String referenceProjectName; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetInfoBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetInfoBo.java new file mode 100644 index 00000000..4c4a2b28 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetInfoBo.java @@ -0,0 +1,171 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpBudgetDetail; +import org.dromara.oa.erp.domain.ErpBudgetInfo; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import org.dromara.oa.erp.domain.ErpBudgetMaterialCost; + +import java.util.List; + +/** + * 项目预算业务对象 erp_budget_info + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpBudgetInfo.class, reverseConvertGenerate = false) +public class ErpBudgetInfoBo extends BaseEntity { + + /** + * 预算ID + */ + @NotNull(message = "预算ID不能为空", groups = { EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + @NotNull(message = "项目ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long projectId; + + /** + * 等同于项目ID,做唯一索引使用,在作废时此值要清空 + */ + private Long approvedFlag; + + /** + * 版本,新版本+1 + */ + private Long budgetVersion; + + /** + * 冗余,项目类别(1销售 2研发 3预投) + */ + @NotBlank(message = "冗余,项目类别(1销售 2研发 3预投)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String projectCategory; + + /** + * 项目号 + */ + @NotBlank(message = "项目号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String projectCode; + + /** + * 项目名称 + */ + @NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String projectName; + + /** + * 项目经理(市场预算表的项目经理,研发预算表中的编制),关联sys_user + */ + private Long managerId; + + /** + * 项目经理姓名 + */ + private String managerName; + + /** + * 产品经理,关联sys_user + */ + private Long productManagerId; + + /** + * 产品经理姓名 + */ + private String productManagerName; + + /** + * 审核(评审组长)ID,关联sys_user + */ + private Long approveUserId; + + /** + * 审核(评审组长)姓名 + */ + private String approveUserName; + + /** + * 合同额(元) + */ + private Long contractAmount; + + /** + * 合同净额(元) + */ + private Long netContractAmount; + + /** + * 预算成本(元) + */ + private Long budgetCost; + + /** + * 预算毛利率,乘以100保存(如1%,保存1) + */ + private Long budgetRate; + + /** + * 降成本后预算成本(元) + */ + private Long reduceBudgetCost; + + /** + * 降成本后预算毛利率 + */ + private Long reduceBudgetRate; + + /** + * 项目预算期间 + */ + private String duringOperation; + + /** + * 单位ID,关联base_unit_info + */ + private Long unitId; + + /** + * 单位名称 + */ + private String unitName; + + /** + * 是否出口(1是 0否) + */ + private String exportFlag; + + /** + * 预算状态(1暂存 2审批中 3可用) + */ + private String budgetStatus; + + /** + * 流程状态 + */ + private String flowStatus; + + /** + * 合同ID(预留) + */ + private Long contractId; + + /** + * 备注 + */ + private String remark; + + private List erpBudgetDetailList; + + private List erpBudgetMaterialCostList; + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetInstallCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetInstallCostBo.java new file mode 100644 index 00000000..623399de --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetInstallCostBo.java @@ -0,0 +1,111 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpBudgetInstallCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 预算安装费业务对象 erp_budget_install_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpBudgetInstallCost.class, reverseConvertGenerate = false) +public class ErpBudgetInstallCostBo extends BaseEntity { + + /** + * 安装费ID + */ + @NotNull(message = "安装费ID不能为空", groups = { EditGroup.class }) + private Long installCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 人员类别 + */ + private String personnelCategory; + + /** + * 人数 + */ + private Long peopleNumber; + + /** + * 累计时间(月) + */ + private Long cumulativeTime; + + /** + * 月平均投入比例(%) + */ + private Long monthRate; + + /** + * 人工标准(元/人月) + */ + private Long artificialStandard; + + /** + * 金额(元) + */ + private Long price; + + /** + * 降成本人数 + */ + private Long reducePeopleNumber; + + /** + * 降成本累计时间(月) + */ + private Long reduceCumulativeTime; + + /** + * 降成本月平均投入比例(%) + */ + private Long reduceMonthRate; + + /** + * 降成本人工标准(元/人月) + */ + private Long reduceArtificialStandard; + + /** + * 降成本降成本金额(元) + */ + private Long reducePrice; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 降成本方案 + */ + private String reduceProposal; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetLaborCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetLaborCostBo.java new file mode 100644 index 00000000..ad078585 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetLaborCostBo.java @@ -0,0 +1,116 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpBudgetLaborCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 预算人工费业务对象 erp_budget_labor_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpBudgetLaborCost.class, reverseConvertGenerate = false) +public class ErpBudgetLaborCostBo extends BaseEntity { + + /** + * 人工费ID + */ + @NotNull(message = "人工费ID不能为空", groups = { EditGroup.class }) + private Long laborCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 人员类别,关联sys_dict_data的dict_value + */ + private String personnelCategory; + + /** + * 人数 + */ + private Long peopleNumber; + + /** + * 累计时间(月) + */ + private Long cumulativeTime; + + /** + * 月平均投入比例(%),乘以100保存 + */ + private Long monthRate; + + /** + * 人工标准(元/人月) + */ + private Long artificialStandard; + + /** + * 金额(元) + */ + private Long price; + + /** + * 降成本人员类别,关联sys_dict_data的dict_value + */ + private String reducePersonnelCategory; + + /** + * 降成本人数 + */ + private Long reducePeopleNumber; + + /** + * 降成本累计时间(月) + */ + private Long reduceCumulativeTime; + + /** + * 降成本月平均投入比例(%) + */ + private Long reduceMonthRate; + + /** + * 降成本人工标准(元/人月) + */ + private Long reduceArtificialStandard; + + /** + * 降成本金额(元) + */ + private Long reducePrice; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 降成本方案 + */ + private String reduceProposal; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetMaterialCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetMaterialCostBo.java new file mode 100644 index 00000000..a62d7ef2 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetMaterialCostBo.java @@ -0,0 +1,116 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpBudgetMaterialCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 预算材料费业务对象 erp_budget_material_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpBudgetMaterialCost.class, reverseConvertGenerate = false) +public class ErpBudgetMaterialCostBo extends BaseEntity { + + /** + * 材料费ID + */ + @NotNull(message = "材料费ID不能为空", groups = { EditGroup.class }) + private Long materialCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 物料ID,关联base_material_info + */ + private Long materielId; + + /** + * SAP物料编码 + */ + private String materielCode; + + /** + * SAP物料名称 + */ + private String materielName; + + /** + * 销售物料ID? + */ + private Long relationMaterielId; + + /** + * 单位,关联base_unit_info + */ + private Long unitId; + + /** + * 单位名称 + */ + private String unitName; + + /** + * 单价(元) + */ + private Long unitPrice; + + /** + * 购置数量 + */ + private Long amount; + + /** + * 金额(元) + */ + private Long price; + + /** + * 降成本单价(元) + */ + private Long reduceUnitPrice; + + /** + * 降成本数量 + */ + private Long reduceAmount; + + /** + * 降成本金额(元) + */ + private Long reducePrice; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 降成本方案 + */ + private String reduceProposal; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetOtherCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetOtherCostBo.java new file mode 100644 index 00000000..2d0b6faa --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetOtherCostBo.java @@ -0,0 +1,76 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpBudgetOtherCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 预算其他费用业务对象 erp_budget_other_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpBudgetOtherCost.class, reverseConvertGenerate = false) +public class ErpBudgetOtherCostBo extends BaseEntity { + + /** + * 其他费用ID + */ + @NotNull(message = "其他费用ID不能为空", groups = { EditGroup.class }) + private Long otherCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 项目描述 + */ + private String itemDesc; + + /** + * 金额(元) + */ + private Long price; + + /** + * 降成本项目描述 + */ + private String reduceItemDesc; + + /** + * 降成本金额(元) + */ + private Long reducePrice; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 降成本方案 + */ + private String reduceProposal; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetTravelCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetTravelCostBo.java new file mode 100644 index 00000000..85e76945 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpBudgetTravelCostBo.java @@ -0,0 +1,146 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpBudgetTravelCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 预算差旅费业务对象 erp_budget_travel_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpBudgetTravelCost.class, reverseConvertGenerate = false) +public class ErpBudgetTravelCostBo extends BaseEntity { + + /** + * 差旅费ID + */ + @NotNull(message = "差旅费ID不能为空", groups = { EditGroup.class }) + private Long travelCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 出差地点 + */ + private String tripLocation; + + /** + * 事由 + */ + private String reason; + + /** + * 次数 + */ + private Long frequency; + + /** + * 人数 + */ + private Long peopleNumber; + + /** + * 天数 + */ + private Long days; + + /** + * 住宿标准(元) + */ + private Long stayStandard; + + /** + * 往返路费(元) + */ + private Long travelExpenses; + + /** + * 住宿费(元) + */ + private Long stayCosts; + + /** + * 补贴(元) + */ + private Long subsidyCosts; + + /** + * 小计(元) + */ + private Long subtotalCosts; + + /** + * 降成本次数 + */ + private Long reduceFrequency; + + /** + * 降成本人数 + */ + private Long reducePeopleNumber; + + /** + * 降成本天数 + */ + private Long reduceDayNumber; + + /** + * 降成本住宿标准(元) + */ + private Long reduceStayStandard; + + /** + * 降成本往返路费(元) + */ + private Long reduceTravelExpenses; + + /** + * 降成本住宿费(元) + */ + private Long reduceStayCosts; + + /** + * 降成本补贴(元) + */ + private Long reduceSubsidyCosts; + + /** + * 降成本小计(元) + */ + private Long reduceSubtotalCosts; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 降成本方案 + */ + private String reduceProposal; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetEquipmentCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetEquipmentCostBo.java new file mode 100644 index 00000000..0da0a719 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetEquipmentCostBo.java @@ -0,0 +1,76 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpRdBudgetEquipmentCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 研发预算设备费业务对象 erp_rd_budget_equipment_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpRdBudgetEquipmentCost.class, reverseConvertGenerate = false) +public class ErpRdBudgetEquipmentCostBo extends BaseEntity { + + /** + * 设备费ID + */ + @NotNull(message = "设备费ID不能为空", groups = { EditGroup.class }) + private Long equipmentCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 设备名称 + */ + private String equipmentName; + + /** + * 设备型号 + */ + private String equipmentSpec; + + /** + * 单价(元/台件) + */ + private Long unitPrice; + + /** + * 数量(台件) + */ + private Long amount; + + /** + * 金额(元) + */ + private Long price; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetExchangeCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetExchangeCostBo.java new file mode 100644 index 00000000..f649b259 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetExchangeCostBo.java @@ -0,0 +1,91 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpRdBudgetExchangeCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 研发预算交流费业务对象 erp_rd_budget_exchange_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpRdBudgetExchangeCost.class, reverseConvertGenerate = false) +public class ErpRdBudgetExchangeCostBo extends BaseEntity { + + /** + * 交流费ID + */ + @NotNull(message = "交流费ID不能为空", groups = { EditGroup.class }) + private Long exchangeCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 合作交流类型(下拉列表选择,也可以直接输入) + */ + private String communicationType; + + /** + * 国家和地区 + */ + private String countryRegion; + + /** + * 机构 + */ + private String institution; + + /** + * 人数(人) + */ + private Long peopleNumber; + + /** + * 时间(天) + */ + private Long days; + + /** + * 往返路费及住宿费(元) + */ + private Long travelAccommodationExpense; + + /** + * 补贴(元) + */ + private Long subsidy; + + /** + * 小计(元) + */ + private Long price; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetLaborCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetLaborCostBo.java new file mode 100644 index 00000000..2579f41a --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetLaborCostBo.java @@ -0,0 +1,93 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpRdBudgetLaborCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 研发预算人工费业务对象 erp_rd_budget_labor_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpRdBudgetLaborCost.class, reverseConvertGenerate = false) +public class ErpRdBudgetLaborCostBo extends BaseEntity { + + /** + * 人工费ID + */ + @NotNull(message = "人工费ID不能为空", groups = { EditGroup.class }) + private Long laborCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + @NotNull(message = "项目ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long projectId; + + /** + * 类型(1人工费,2劳务费) + */ + @NotBlank(message = "类型(1人工费,2劳务费)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String laborType; + + /** + * 人员类别,关联sys_dict_data的dict_value + */ + private String personnelCategory; + + /** + * 人数 + */ + private Long peopleNumber; + + /** + * 累计时间(月) + */ + private Long cumulativeTime; + + /** + * 月平均投入比例(%) + */ + private Long monthRate; + + /** + * 人工标准(元/人月) + */ + private Long artificialStandard; + + /** + * 金额(元) + */ + private Long price; + + /** + * 投入人员,多个以,隔开 + */ + private String projectPersonnel; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetLiteratureCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetLiteratureCostBo.java new file mode 100644 index 00000000..d03c68db --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetLiteratureCostBo.java @@ -0,0 +1,66 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpRdBudgetLiteratureCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 研发预算资料文献费业务对象 erp_rd_budget_literature_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpRdBudgetLiteratureCost.class, reverseConvertGenerate = false) +public class ErpRdBudgetLiteratureCostBo extends BaseEntity { + + /** + * 资料文献费ID + */ + @NotNull(message = "资料文献费ID不能为空", groups = { EditGroup.class }) + private Long literatureCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 类型(1、资料费,2文献检索费,3专用软件购买费) + */ + private String literatureType; + + /** + * 项目描述 + */ + private String itemDesc; + + /** + * 金额(元) + */ + private Long price; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetMaterialCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetMaterialCostBo.java new file mode 100644 index 00000000..a5a080c8 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetMaterialCostBo.java @@ -0,0 +1,81 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpRdBudgetMaterialCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 研发预算材料费业务对象 erp_rd_budget_material_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpRdBudgetMaterialCost.class, reverseConvertGenerate = false) +public class ErpRdBudgetMaterialCostBo extends BaseEntity { + + /** + * 材料费ID + */ + @NotNull(message = "材料费ID不能为空", groups = { EditGroup.class }) + private Long materialCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 材料名称 + */ + private String materialName; + + /** + * 单位,关联base_unit_info + */ + private Long unitId; + + /** + * 单位名称 + */ + private String unitName; + + /** + * 单价(元/台件) + */ + private Long unitPrice; + + /** + * 数量 + */ + private Long amount; + + /** + * 金额(元) + */ + private Long price; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetMeetingCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetMeetingCostBo.java new file mode 100644 index 00000000..a74131da --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetMeetingCostBo.java @@ -0,0 +1,96 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpRdBudgetMeetingCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 研发预算会议费业务对象 erp_rd_budget_meeting_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpRdBudgetMeetingCost.class, reverseConvertGenerate = false) +public class ErpRdBudgetMeetingCostBo extends BaseEntity { + + /** + * 会议费ID + */ + @NotNull(message = "会议费ID不能为空", groups = { EditGroup.class }) + private Long meetingCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 会议类型 + */ + private String meetingType; + + /** + * 会议内容 + */ + private String meetingContent; + + /** + * 场地日租金(元) + */ + private Long rentalFee; + + /** + * 日均杂费(元) + */ + private Long dailyExpense; + + /** + * 天数 + */ + private Long days; + + /** + * 专家交通住宿费(元) + */ + private Long expertExpense; + + /** + * 人数 + */ + private Long peopleNumber; + + /** + * 人均花费(元) + */ + private Long perPersonExpense; + + /** + * 会议费(元) + */ + private Long meetingPrice; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetOtherCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetOtherCostBo.java new file mode 100644 index 00000000..140f2bdf --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetOtherCostBo.java @@ -0,0 +1,61 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpRdBudgetOtherCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 研发预算其他费用业务对象 erp_rd_budget_other_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpRdBudgetOtherCost.class, reverseConvertGenerate = false) +public class ErpRdBudgetOtherCostBo extends BaseEntity { + + /** + * 其他费用ID + */ + @NotNull(message = "其他费用ID不能为空", groups = { EditGroup.class }) + private Long otherCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 项目描述 + */ + private String itemDesc; + + /** + * 金额(元) + */ + private Long price; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetTechCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetTechCostBo.java new file mode 100644 index 00000000..497f2e66 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetTechCostBo.java @@ -0,0 +1,92 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpRdBudgetTechCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 研发预算技术服务费业务对象 erp_rd_budget_tech_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpRdBudgetTechCost.class, reverseConvertGenerate = false) +public class ErpRdBudgetTechCostBo extends BaseEntity { + + /** + * 技术服务费ID + */ + @NotNull(message = "技术服务费ID不能为空", groups = { EditGroup.class }) + private Long techCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 技术服务费类型(1、技术咨询开发,2、专家咨询-会议形式,3、专家咨询-通讯形式) + */ + @NotBlank(message = "技术服务费类型(1、技术咨询开发,2、专家咨询-会议形式,3、专家咨询-通讯形式)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String techType; + + /** + * 内容 + */ + private String techContent; + + /** + * 单位,关联base_unit_info + */ + private Long unitId; + + /** + * 单位名称 + */ + private String unitName; + + /** + * 人数 + */ + private Long peopleNumber; + + /** + * 天数 + */ + private Long days; + + /** + * 次数 + */ + private Long frequency; + + /** + * 金额(元) + */ + private Long price; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetTestingCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetTestingCostBo.java new file mode 100644 index 00000000..8e583927 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetTestingCostBo.java @@ -0,0 +1,86 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpRdBudgetTestingCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 研发预算测试化验费业务对象 erp_rd_budget_testing_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpRdBudgetTestingCost.class, reverseConvertGenerate = false) +public class ErpRdBudgetTestingCostBo extends BaseEntity { + + /** + * 测试化验费ID + */ + @NotNull(message = "测试化验费ID不能为空", groups = { EditGroup.class }) + private Long testingCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 测试化验的内容 + */ + private String testingContent; + + /** + * 测试化验单位 + */ + private String testingUnitName; + + /** + * 单位,关联base_unit_info + */ + private Long unitId; + + /** + * 单位名称 + */ + private String unitName; + + /** + * 单价(元/单位数量) + */ + private Long unitPrice; + + /** + * 数量 + */ + private Long amount; + + /** + * 金额(元) + */ + private Long price; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetTravelCostBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetTravelCostBo.java new file mode 100644 index 00000000..563066d5 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpRdBudgetTravelCostBo.java @@ -0,0 +1,101 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpRdBudgetTravelCost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 研发预算差旅费业务对象 erp_rd_budget_travel_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpRdBudgetTravelCost.class, reverseConvertGenerate = false) +public class ErpRdBudgetTravelCostBo extends BaseEntity { + + /** + * 差旅费ID + */ + @NotNull(message = "差旅费ID不能为空", groups = { EditGroup.class }) + private Long travelCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @NotNull(message = "预算ID,关联erp_budget_info不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 出差地点 + */ + private String tripLocation; + + /** + * 事由 + */ + private String reason; + + /** + * 次数 + */ + private Long frequency; + + /** + * 人数 + */ + private Long peopleNumber; + + /** + * 天数 + */ + private Long days; + + /** + * 住宿标准(元) + */ + private Long stayStandard; + + /** + * 往返路费(元) + */ + private Long travelExpenses; + + /** + * 住宿费(元) + */ + private Long stayCosts; + + /** + * 补贴(元) + */ + private Long subsidyCosts; + + /** + * 小计(元) + */ + private Long subtotalCosts; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetDetailVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetDetailVo.java new file mode 100644 index 00000000..30499440 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetDetailVo.java @@ -0,0 +1,80 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpBudgetDetail; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 项目预算详情视图对象 erp_budget_detail + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpBudgetDetail.class) +public class ErpBudgetDetailVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 预算详情ID + */ + @ExcelProperty(value = "预算详情ID") + private Long budgetDetailId; + + /** + * 预算ID + */ + @ExcelProperty(value = "预算ID") + private Long budgetId; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 预算科目 + */ + @ExcelProperty(value = "预算科目") + private String budgetItem; + + /** + * 预算成本(元) + */ + @ExcelProperty(value = "预算成本(元)") + private Long budgetCost; + + /** + * 降成本预算成本(元) + */ + @ExcelProperty(value = "降成本预算成本(元)") + private Long reduceBudgetCost; + + /** + * 参考项目ID + */ + @ExcelProperty(value = "参考项目ID") + private Long referenceProjectId; + + /** + * 参考项目名称 + */ + @ExcelProperty(value = "参考项目名称") + private String referenceProjectName; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetInfoVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetInfoVo.java new file mode 100644 index 00000000..dbbeda0b --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetInfoVo.java @@ -0,0 +1,198 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpBudgetInfo; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 项目预算视图对象 erp_budget_info + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpBudgetInfo.class) +public class ErpBudgetInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 预算ID + */ + @ExcelProperty(value = "预算ID") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 等同于项目ID,做唯一索引使用,在作废时此值要清空 + */ + @ExcelProperty(value = "等同于项目ID,做唯一索引使用,在作废时此值要清空") + private Long approvedFlag; + + /** + * 版本,新版本+1 + */ + @ExcelProperty(value = "版本,新版本+1") + private Long budgetVersion; + + /** + * 冗余,项目类别(1销售 2研发 3预投) + */ + @ExcelProperty(value = "冗余,项目类别", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "1=销售,2=研发,3=预投") + private String projectCategory; + + /** + * 项目号 + */ + @ExcelProperty(value = "项目号") + private String projectCode; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + private String projectName; + + /** + * 项目经理(市场预算表的项目经理,研发预算表中的编制),关联sys_user + */ + @ExcelProperty(value = "项目经理", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "市=场预算表的项目经理,研发预算表中的编制") + private Long managerId; + + /** + * 项目经理姓名 + */ + @ExcelProperty(value = "项目经理姓名") + private String managerName; + + /** + * 产品经理,关联sys_user + */ + @ExcelProperty(value = "产品经理,关联sys_user") + private Long productManagerId; + + /** + * 产品经理姓名 + */ + @ExcelProperty(value = "产品经理姓名") + private String productManagerName; + + /** + * 审核(评审组长)ID,关联sys_user + */ + @ExcelProperty(value = "审核(评审组长)ID,关联sys_user") + private Long approveUserId; + + /** + * 审核(评审组长)姓名 + */ + @ExcelProperty(value = "审核(评审组长)姓名") + private String approveUserName; + + /** + * 合同额(元) + */ + @ExcelProperty(value = "合同额(元)") + private Long contractAmount; + + /** + * 合同净额(元) + */ + @ExcelProperty(value = "合同净额(元)") + private Long netContractAmount; + + /** + * 预算成本(元) + */ + @ExcelProperty(value = "预算成本(元)") + private Long budgetCost; + + /** + * 预算毛利率,乘以100保存(如1%,保存1) + */ + @ExcelProperty(value = "预算毛利率,乘以100保存", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "如=1%,保存1") + private Long budgetRate; + + /** + * 降成本后预算成本(元) + */ + @ExcelProperty(value = "降成本后预算成本(元)") + private Long reduceBudgetCost; + + /** + * 降成本后预算毛利率 + */ + @ExcelProperty(value = "降成本后预算毛利率") + private Long reduceBudgetRate; + + /** + * 项目预算期间 + */ + @ExcelProperty(value = "项目预算期间") + private String duringOperation; + + /** + * 单位ID,关联base_unit_info + */ + @ExcelProperty(value = "单位ID,关联base_unit_info") + private Long unitId; + + /** + * 单位名称 + */ + @ExcelProperty(value = "单位名称") + private String unitName; + + /** + * 是否出口(1是 0否) + */ + @ExcelProperty(value = "是否出口", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "1=是,0=否") + private String exportFlag; + + /** + * 预算状态(1暂存 2审批中 3可用) + */ + @ExcelProperty(value = "预算状态(1暂存 2审批中 3可用)") + private String budgetStatus; + + /** + * 流程状态 + */ + @ExcelProperty(value = "流程状态") + private String flowStatus; + + /** + * 合同ID(预留) + */ + @ExcelProperty(value = "合同ID(预留)") + private Long contractId; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetInstallCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetInstallCostVo.java new file mode 100644 index 00000000..8b19aefa --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetInstallCostVo.java @@ -0,0 +1,142 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpBudgetInstallCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 预算安装费视图对象 erp_budget_install_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpBudgetInstallCost.class) +public class ErpBudgetInstallCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 安装费ID + */ + @ExcelProperty(value = "安装费ID") + private Long installCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 人员类别 + */ + @ExcelProperty(value = "人员类别") + private String personnelCategory; + + /** + * 人数 + */ + @ExcelProperty(value = "人数") + private Long peopleNumber; + + /** + * 累计时间(月) + */ + @ExcelProperty(value = "累计时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "月=") + private Long cumulativeTime; + + /** + * 月平均投入比例(%) + */ + @ExcelProperty(value = "月平均投入比例", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=") + private Long monthRate; + + /** + * 人工标准(元/人月) + */ + @ExcelProperty(value = "人工标准", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=/人月") + private Long artificialStandard; + + /** + * 金额(元) + */ + @ExcelProperty(value = "金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long price; + + /** + * 降成本人数 + */ + @ExcelProperty(value = "降成本人数") + private Long reducePeopleNumber; + + /** + * 降成本累计时间(月) + */ + @ExcelProperty(value = "降成本累计时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "月=") + private Long reduceCumulativeTime; + + /** + * 降成本月平均投入比例(%) + */ + @ExcelProperty(value = "降成本月平均投入比例", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=") + private Long reduceMonthRate; + + /** + * 降成本人工标准(元/人月) + */ + @ExcelProperty(value = "降成本人工标准", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=/人月") + private Long reduceArtificialStandard; + + /** + * 降成本降成本金额(元) + */ + @ExcelProperty(value = "降成本降成本金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long reducePrice; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 降成本方案 + */ + @ExcelProperty(value = "降成本方案") + private String reduceProposal; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetLaborCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetLaborCostVo.java new file mode 100644 index 00000000..47daa0e9 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetLaborCostVo.java @@ -0,0 +1,148 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpBudgetLaborCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 预算人工费视图对象 erp_budget_labor_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpBudgetLaborCost.class) +public class ErpBudgetLaborCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 人工费ID + */ + @ExcelProperty(value = "人工费ID") + private Long laborCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 人员类别,关联sys_dict_data的dict_value + */ + @ExcelProperty(value = "人员类别,关联sys_dict_data的dict_value") + private String personnelCategory; + + /** + * 人数 + */ + @ExcelProperty(value = "人数") + private Long peopleNumber; + + /** + * 累计时间(月) + */ + @ExcelProperty(value = "累计时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "月=") + private Long cumulativeTime; + + /** + * 月平均投入比例(%),乘以100保存 + */ + @ExcelProperty(value = "月平均投入比例", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=") + private Long monthRate; + + /** + * 人工标准(元/人月) + */ + @ExcelProperty(value = "人工标准", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=/人月") + private Long artificialStandard; + + /** + * 金额(元) + */ + @ExcelProperty(value = "金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long price; + + /** + * 降成本人员类别,关联sys_dict_data的dict_value + */ + @ExcelProperty(value = "降成本人员类别,关联sys_dict_data的dict_value") + private String reducePersonnelCategory; + + /** + * 降成本人数 + */ + @ExcelProperty(value = "降成本人数") + private Long reducePeopleNumber; + + /** + * 降成本累计时间(月) + */ + @ExcelProperty(value = "降成本累计时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "月=") + private Long reduceCumulativeTime; + + /** + * 降成本月平均投入比例(%) + */ + @ExcelProperty(value = "降成本月平均投入比例", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=") + private Long reduceMonthRate; + + /** + * 降成本人工标准(元/人月) + */ + @ExcelProperty(value = "降成本人工标准", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=/人月") + private Long reduceArtificialStandard; + + /** + * 降成本金额(元) + */ + @ExcelProperty(value = "降成本金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long reducePrice; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 降成本方案 + */ + @ExcelProperty(value = "降成本方案") + private String reduceProposal; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetMaterialCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetMaterialCostVo.java new file mode 100644 index 00000000..57f5487c --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetMaterialCostVo.java @@ -0,0 +1,142 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpBudgetMaterialCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 预算材料费视图对象 erp_budget_material_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpBudgetMaterialCost.class) +public class ErpBudgetMaterialCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 材料费ID + */ + @ExcelProperty(value = "材料费ID") + private Long materialCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 物料ID,关联base_material_info + */ + @ExcelProperty(value = "物料ID,关联base_material_info") + private Long materielId; + + /** + * SAP物料编码 + */ + @ExcelProperty(value = "SAP物料编码") + private String materielCode; + + /** + * SAP物料名称 + */ + @ExcelProperty(value = "SAP物料名称") + private String materielName; + + /** + * 销售物料ID? + */ + @ExcelProperty(value = "销售物料ID?") + private Long relationMaterielId; + + /** + * 单位,关联base_unit_info + */ + @ExcelProperty(value = "单位,关联base_unit_info") + private Long unitId; + + /** + * 单位名称 + */ + @ExcelProperty(value = "单位名称") + private String unitName; + + /** + * 单价(元) + */ + @ExcelProperty(value = "单价(元)") + private Long unitPrice; + + /** + * 购置数量 + */ + @ExcelProperty(value = "购置数量") + private Long amount; + + /** + * 金额(元) + */ + @ExcelProperty(value = "金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long price; + + /** + * 降成本单价(元) + */ + @ExcelProperty(value = "降成本单价(元)") + private Long reduceUnitPrice; + + /** + * 降成本数量 + */ + @ExcelProperty(value = "降成本数量") + private Long reduceAmount; + + /** + * 降成本金额(元) + */ + @ExcelProperty(value = "降成本金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long reducePrice; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 降成本方案 + */ + @ExcelProperty(value = "降成本方案") + private String reduceProposal; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetOtherCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetOtherCostVo.java new file mode 100644 index 00000000..7dfd0d93 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetOtherCostVo.java @@ -0,0 +1,94 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpBudgetOtherCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 预算其他费用视图对象 erp_budget_other_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpBudgetOtherCost.class) +public class ErpBudgetOtherCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 其他费用ID + */ + @ExcelProperty(value = "其他费用ID") + private Long otherCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 项目描述 + */ + @ExcelProperty(value = "项目描述") + private String itemDesc; + + /** + * 金额(元) + */ + @ExcelProperty(value = "金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long price; + + /** + * 降成本项目描述 + */ + @ExcelProperty(value = "降成本项目描述") + private String reduceItemDesc; + + /** + * 降成本金额(元) + */ + @ExcelProperty(value = "降成本金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long reducePrice; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 降成本方案 + */ + @ExcelProperty(value = "降成本方案") + private String reduceProposal; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetTravelCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetTravelCostVo.java new file mode 100644 index 00000000..196fb5ef --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpBudgetTravelCostVo.java @@ -0,0 +1,186 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpBudgetTravelCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 预算差旅费视图对象 erp_budget_travel_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpBudgetTravelCost.class) +public class ErpBudgetTravelCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 差旅费ID + */ + @ExcelProperty(value = "差旅费ID") + private Long travelCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 出差地点 + */ + @ExcelProperty(value = "出差地点") + private String tripLocation; + + /** + * 事由 + */ + @ExcelProperty(value = "事由") + private String reason; + + /** + * 次数 + */ + @ExcelProperty(value = "次数") + private Long frequency; + + /** + * 人数 + */ + @ExcelProperty(value = "人数") + private Long peopleNumber; + + /** + * 天数 + */ + @ExcelProperty(value = "天数") + private Long days; + + /** + * 住宿标准(元) + */ + @ExcelProperty(value = "住宿标准", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long stayStandard; + + /** + * 往返路费(元) + */ + @ExcelProperty(value = "往返路费", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long travelExpenses; + + /** + * 住宿费(元) + */ + @ExcelProperty(value = "住宿费", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long stayCosts; + + /** + * 补贴(元) + */ + @ExcelProperty(value = "补贴", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long subsidyCosts; + + /** + * 小计(元) + */ + @ExcelProperty(value = "小计", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long subtotalCosts; + + /** + * 降成本次数 + */ + @ExcelProperty(value = "降成本次数") + private Long reduceFrequency; + + /** + * 降成本人数 + */ + @ExcelProperty(value = "降成本人数") + private Long reducePeopleNumber; + + /** + * 降成本天数 + */ + @ExcelProperty(value = "降成本天数") + private Long reduceDayNumber; + + /** + * 降成本住宿标准(元) + */ + @ExcelProperty(value = "降成本住宿标准", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long reduceStayStandard; + + /** + * 降成本往返路费(元) + */ + @ExcelProperty(value = "降成本往返路费", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long reduceTravelExpenses; + + /** + * 降成本住宿费(元) + */ + @ExcelProperty(value = "降成本住宿费", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long reduceStayCosts; + + /** + * 降成本补贴(元) + */ + @ExcelProperty(value = "降成本补贴", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long reduceSubsidyCosts; + + /** + * 降成本小计(元) + */ + @ExcelProperty(value = "降成本小计", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long reduceSubtotalCosts; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 降成本方案 + */ + @ExcelProperty(value = "降成本方案") + private String reduceProposal; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetEquipmentCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetEquipmentCostVo.java new file mode 100644 index 00000000..e25443e4 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetEquipmentCostVo.java @@ -0,0 +1,93 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpRdBudgetEquipmentCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 研发预算设备费视图对象 erp_rd_budget_equipment_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpRdBudgetEquipmentCost.class) +public class ErpRdBudgetEquipmentCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 设备费ID + */ + @ExcelProperty(value = "设备费ID") + private Long equipmentCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 设备名称 + */ + @ExcelProperty(value = "设备名称") + private String equipmentName; + + /** + * 设备型号 + */ + @ExcelProperty(value = "设备型号") + private String equipmentSpec; + + /** + * 单价(元/台件) + */ + @ExcelProperty(value = "单价(元/台件)") + private Long unitPrice; + + /** + * 数量(台件) + */ + @ExcelProperty(value = "数量(台件)") + private Long amount; + + /** + * 金额(元) + */ + @ExcelProperty(value = "金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long price; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetExchangeCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetExchangeCostVo.java new file mode 100644 index 00000000..12990a34 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetExchangeCostVo.java @@ -0,0 +1,114 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpRdBudgetExchangeCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 研发预算交流费视图对象 erp_rd_budget_exchange_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpRdBudgetExchangeCost.class) +public class ErpRdBudgetExchangeCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 交流费ID + */ + @ExcelProperty(value = "交流费ID") + private Long exchangeCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 合作交流类型(下拉列表选择,也可以直接输入) + */ + @ExcelProperty(value = "合作交流类型(下拉列表选择,也可以直接输入)") + private String communicationType; + + /** + * 国家和地区 + */ + @ExcelProperty(value = "国家和地区") + private String countryRegion; + + /** + * 机构 + */ + @ExcelProperty(value = "机构") + private String institution; + + /** + * 人数(人) + */ + @ExcelProperty(value = "人数", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "人=") + private Long peopleNumber; + + /** + * 时间(天) + */ + @ExcelProperty(value = "时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "天=") + private Long days; + + /** + * 往返路费及住宿费(元) + */ + @ExcelProperty(value = "往返路费及住宿费(元)") + private Long travelAccommodationExpense; + + /** + * 补贴(元) + */ + @ExcelProperty(value = "补贴", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long subsidy; + + /** + * 小计(元) + */ + @ExcelProperty(value = "小计", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long price; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetLaborCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetLaborCostVo.java new file mode 100644 index 00000000..64081ae9 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetLaborCostVo.java @@ -0,0 +1,114 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpRdBudgetLaborCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 研发预算人工费视图对象 erp_rd_budget_labor_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpRdBudgetLaborCost.class) +public class ErpRdBudgetLaborCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 人工费ID + */ + @ExcelProperty(value = "人工费ID") + private Long laborCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 类型(1人工费,2劳务费) + */ + @ExcelProperty(value = "类型(1人工费,2劳务费)") + private String laborType; + + /** + * 人员类别,关联sys_dict_data的dict_value + */ + @ExcelProperty(value = "人员类别,关联sys_dict_data的dict_value") + private String personnelCategory; + + /** + * 人数 + */ + @ExcelProperty(value = "人数") + private Long peopleNumber; + + /** + * 累计时间(月) + */ + @ExcelProperty(value = "累计时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "月=") + private Long cumulativeTime; + + /** + * 月平均投入比例(%) + */ + @ExcelProperty(value = "月平均投入比例", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=") + private Long monthRate; + + /** + * 人工标准(元/人月) + */ + @ExcelProperty(value = "人工标准", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=/人月") + private Long artificialStandard; + + /** + * 金额(元) + */ + @ExcelProperty(value = "金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long price; + + /** + * 投入人员,多个以,隔开 + */ + @ExcelProperty(value = "投入人员,多个以,隔开") + private String projectPersonnel; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetLiteratureCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetLiteratureCostVo.java new file mode 100644 index 00000000..d0c2f8d6 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetLiteratureCostVo.java @@ -0,0 +1,82 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpRdBudgetLiteratureCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 研发预算资料文献费视图对象 erp_rd_budget_literature_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpRdBudgetLiteratureCost.class) +public class ErpRdBudgetLiteratureCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 资料文献费ID + */ + @ExcelProperty(value = "资料文献费ID") + private Long literatureCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 类型(1、资料费,2文献检索费,3专用软件购买费) + */ + @ExcelProperty(value = "类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "1=、资料费,2文献检索费,3专用软件购买费") + private String literatureType; + + /** + * 项目描述 + */ + @ExcelProperty(value = "项目描述") + private String itemDesc; + + /** + * 金额(元) + */ + @ExcelProperty(value = "金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long price; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetMaterialCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetMaterialCostVo.java new file mode 100644 index 00000000..ef308cac --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetMaterialCostVo.java @@ -0,0 +1,99 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpRdBudgetMaterialCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 研发预算材料费视图对象 erp_rd_budget_material_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpRdBudgetMaterialCost.class) +public class ErpRdBudgetMaterialCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 材料费ID + */ + @ExcelProperty(value = "材料费ID") + private Long materialCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 材料名称 + */ + @ExcelProperty(value = "材料名称") + private String materialName; + + /** + * 单位,关联base_unit_info + */ + @ExcelProperty(value = "单位,关联base_unit_info") + private Long unitId; + + /** + * 单位名称 + */ + @ExcelProperty(value = "单位名称") + private String unitName; + + /** + * 单价(元/台件) + */ + @ExcelProperty(value = "单价(元/台件)") + private Long unitPrice; + + /** + * 数量 + */ + @ExcelProperty(value = "数量") + private Long amount; + + /** + * 金额(元) + */ + @ExcelProperty(value = "金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long price; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetMeetingCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetMeetingCostVo.java new file mode 100644 index 00000000..692cb82e --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetMeetingCostVo.java @@ -0,0 +1,117 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpRdBudgetMeetingCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 研发预算会议费视图对象 erp_rd_budget_meeting_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpRdBudgetMeetingCost.class) +public class ErpRdBudgetMeetingCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 会议费ID + */ + @ExcelProperty(value = "会议费ID") + private Long meetingCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 会议类型 + */ + @ExcelProperty(value = "会议类型") + private String meetingType; + + /** + * 会议内容 + */ + @ExcelProperty(value = "会议内容") + private String meetingContent; + + /** + * 场地日租金(元) + */ + @ExcelProperty(value = "场地日租金(元)") + private Long rentalFee; + + /** + * 日均杂费(元) + */ + @ExcelProperty(value = "日均杂费(元)") + private Long dailyExpense; + + /** + * 天数 + */ + @ExcelProperty(value = "天数") + private Long days; + + /** + * 专家交通住宿费(元) + */ + @ExcelProperty(value = "专家交通住宿费(元)") + private Long expertExpense; + + /** + * 人数 + */ + @ExcelProperty(value = "人数") + private Long peopleNumber; + + /** + * 人均花费(元) + */ + @ExcelProperty(value = "人均花费(元)") + private Long perPersonExpense; + + /** + * 会议费(元) + */ + @ExcelProperty(value = "会议费", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long meetingPrice; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetOtherCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetOtherCostVo.java new file mode 100644 index 00000000..58b5e2e4 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetOtherCostVo.java @@ -0,0 +1,75 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpRdBudgetOtherCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 研发预算其他费用视图对象 erp_rd_budget_other_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpRdBudgetOtherCost.class) +public class ErpRdBudgetOtherCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 其他费用ID + */ + @ExcelProperty(value = "其他费用ID") + private Long otherCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 项目描述 + */ + @ExcelProperty(value = "项目描述") + private String itemDesc; + + /** + * 金额(元) + */ + @ExcelProperty(value = "金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long price; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetTechCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetTechCostVo.java new file mode 100644 index 00000000..d1f75ddc --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetTechCostVo.java @@ -0,0 +1,111 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpRdBudgetTechCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 研发预算技术服务费视图对象 erp_rd_budget_tech_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpRdBudgetTechCost.class) +public class ErpRdBudgetTechCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 技术服务费ID + */ + @ExcelProperty(value = "技术服务费ID") + private Long techCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 技术服务费类型(1、技术咨询开发,2、专家咨询-会议形式,3、专家咨询-通讯形式) + */ + @ExcelProperty(value = "技术服务费类型(1、技术咨询开发,2、专家咨询-会议形式,3、专家咨询-通讯形式)") + private String techType; + + /** + * 内容 + */ + @ExcelProperty(value = "内容") + private String techContent; + + /** + * 单位,关联base_unit_info + */ + @ExcelProperty(value = "单位,关联base_unit_info") + private Long unitId; + + /** + * 单位名称 + */ + @ExcelProperty(value = "单位名称") + private String unitName; + + /** + * 人数 + */ + @ExcelProperty(value = "人数") + private Long peopleNumber; + + /** + * 天数 + */ + @ExcelProperty(value = "天数") + private Long days; + + /** + * 次数 + */ + @ExcelProperty(value = "次数") + private Long frequency; + + /** + * 金额(元) + */ + @ExcelProperty(value = "金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long price; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetTestingCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetTestingCostVo.java new file mode 100644 index 00000000..80faad1e --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetTestingCostVo.java @@ -0,0 +1,105 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpRdBudgetTestingCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 研发预算测试化验费视图对象 erp_rd_budget_testing_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpRdBudgetTestingCost.class) +public class ErpRdBudgetTestingCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 测试化验费ID + */ + @ExcelProperty(value = "测试化验费ID") + private Long testingCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 测试化验的内容 + */ + @ExcelProperty(value = "测试化验的内容") + private String testingContent; + + /** + * 测试化验单位 + */ + @ExcelProperty(value = "测试化验单位") + private String testingUnitName; + + /** + * 单位,关联base_unit_info + */ + @ExcelProperty(value = "单位,关联base_unit_info") + private Long unitId; + + /** + * 单位名称 + */ + @ExcelProperty(value = "单位名称") + private String unitName; + + /** + * 单价(元/单位数量) + */ + @ExcelProperty(value = "单价(元/单位数量)") + private Long unitPrice; + + /** + * 数量 + */ + @ExcelProperty(value = "数量") + private Long amount; + + /** + * 金额(元) + */ + @ExcelProperty(value = "金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long price; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetTravelCostVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetTravelCostVo.java new file mode 100644 index 00000000..7a080d25 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpRdBudgetTravelCostVo.java @@ -0,0 +1,127 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpRdBudgetTravelCost; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 研发预算差旅费视图对象 erp_rd_budget_travel_cost + * + * @author xins + * @date 2025-10-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpRdBudgetTravelCost.class) +public class ErpRdBudgetTravelCostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 差旅费ID + */ + @ExcelProperty(value = "差旅费ID") + private Long travelCostId; + + /** + * 预算ID,关联erp_budget_info + */ + @ExcelProperty(value = "预算ID,关联erp_budget_info") + private Long budgetId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 出差地点 + */ + @ExcelProperty(value = "出差地点") + private String tripLocation; + + /** + * 事由 + */ + @ExcelProperty(value = "事由") + private String reason; + + /** + * 次数 + */ + @ExcelProperty(value = "次数") + private Long frequency; + + /** + * 人数 + */ + @ExcelProperty(value = "人数") + private Long peopleNumber; + + /** + * 天数 + */ + @ExcelProperty(value = "天数") + private Long days; + + /** + * 住宿标准(元) + */ + @ExcelProperty(value = "住宿标准", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long stayStandard; + + /** + * 往返路费(元) + */ + @ExcelProperty(value = "往返路费", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long travelExpenses; + + /** + * 住宿费(元) + */ + @ExcelProperty(value = "住宿费", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long stayCosts; + + /** + * 补贴(元) + */ + @ExcelProperty(value = "补贴", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long subsidyCosts; + + /** + * 小计(元) + */ + @ExcelProperty(value = "小计", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "元=") + private Long subtotalCosts; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetDetailMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetDetailMapper.java new file mode 100644 index 00000000..518fa2c6 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetDetailMapper.java @@ -0,0 +1,40 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpBudgetDetail; +import org.dromara.oa.erp.domain.vo.ErpBudgetDetailVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 项目预算详情Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +@InterceptorIgnore(dataPermission = "true", tenantLine = "true") +public interface ErpBudgetDetailMapper extends BaseMapperPlus { + + /** + * 查询项目预算详情列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 项目预算详情集合 + */ + public Page selectCustomErpBudgetDetailVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询项目预算详情列表 + * + * @param queryWrapper 条件 + * @return 项目预算详情集合 + */ + public List selectCustomErpBudgetDetailVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetInfoMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetInfoMapper.java new file mode 100644 index 00000000..527a37ab --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetInfoMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpBudgetInfo; +import org.dromara.oa.erp.domain.vo.ErpBudgetInfoVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 项目预算Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpBudgetInfoMapper extends BaseMapperPlus { + + /** + * 查询项目预算列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 项目预算集合 + */ + public Page selectCustomErpBudgetInfoVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询项目预算列表 + * + * @param queryWrapper 条件 + * @return 项目预算集合 + */ + public List selectCustomErpBudgetInfoVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetInstallCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetInstallCostMapper.java new file mode 100644 index 00000000..482d4599 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetInstallCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpBudgetInstallCost; +import org.dromara.oa.erp.domain.vo.ErpBudgetInstallCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 预算安装费Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpBudgetInstallCostMapper extends BaseMapperPlus { + + /** + * 查询预算安装费列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 预算安装费集合 + */ + public Page selectCustomErpBudgetInstallCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询预算安装费列表 + * + * @param queryWrapper 条件 + * @return 预算安装费集合 + */ + public List selectCustomErpBudgetInstallCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetLaborCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetLaborCostMapper.java new file mode 100644 index 00000000..8190d76f --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetLaborCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpBudgetLaborCost; +import org.dromara.oa.erp.domain.vo.ErpBudgetLaborCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 预算人工费Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpBudgetLaborCostMapper extends BaseMapperPlus { + + /** + * 查询预算人工费列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 预算人工费集合 + */ + public Page selectCustomErpBudgetLaborCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询预算人工费列表 + * + * @param queryWrapper 条件 + * @return 预算人工费集合 + */ + public List selectCustomErpBudgetLaborCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetMaterialCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetMaterialCostMapper.java new file mode 100644 index 00000000..c554c4c3 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetMaterialCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpBudgetMaterialCost; +import org.dromara.oa.erp.domain.vo.ErpBudgetMaterialCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 预算材料费Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpBudgetMaterialCostMapper extends BaseMapperPlus { + + /** + * 查询预算材料费列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 预算材料费集合 + */ + public Page selectCustomErpBudgetMaterialCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询预算材料费列表 + * + * @param queryWrapper 条件 + * @return 预算材料费集合 + */ + public List selectCustomErpBudgetMaterialCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetOtherCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetOtherCostMapper.java new file mode 100644 index 00000000..46dd9cf4 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetOtherCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpBudgetOtherCost; +import org.dromara.oa.erp.domain.vo.ErpBudgetOtherCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 预算其他费用Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpBudgetOtherCostMapper extends BaseMapperPlus { + + /** + * 查询预算其他费用列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 预算其他费用集合 + */ + public Page selectCustomErpBudgetOtherCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询预算其他费用列表 + * + * @param queryWrapper 条件 + * @return 预算其他费用集合 + */ + public List selectCustomErpBudgetOtherCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetTravelCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetTravelCostMapper.java new file mode 100644 index 00000000..eee7afa8 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpBudgetTravelCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpBudgetTravelCost; +import org.dromara.oa.erp.domain.vo.ErpBudgetTravelCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 预算差旅费Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpBudgetTravelCostMapper extends BaseMapperPlus { + + /** + * 查询预算差旅费列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 预算差旅费集合 + */ + public Page selectCustomErpBudgetTravelCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询预算差旅费列表 + * + * @param queryWrapper 条件 + * @return 预算差旅费集合 + */ + public List selectCustomErpBudgetTravelCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetEquipmentCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetEquipmentCostMapper.java new file mode 100644 index 00000000..c6f0f089 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetEquipmentCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpRdBudgetEquipmentCost; +import org.dromara.oa.erp.domain.vo.ErpRdBudgetEquipmentCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 研发预算设备费Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpRdBudgetEquipmentCostMapper extends BaseMapperPlus { + + /** + * 查询研发预算设备费列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 研发预算设备费集合 + */ + public Page selectCustomErpRdBudgetEquipmentCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询研发预算设备费列表 + * + * @param queryWrapper 条件 + * @return 研发预算设备费集合 + */ + public List selectCustomErpRdBudgetEquipmentCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetExchangeCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetExchangeCostMapper.java new file mode 100644 index 00000000..48d9d590 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetExchangeCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpRdBudgetExchangeCost; +import org.dromara.oa.erp.domain.vo.ErpRdBudgetExchangeCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 研发预算交流费Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpRdBudgetExchangeCostMapper extends BaseMapperPlus { + + /** + * 查询研发预算交流费列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 研发预算交流费集合 + */ + public Page selectCustomErpRdBudgetExchangeCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询研发预算交流费列表 + * + * @param queryWrapper 条件 + * @return 研发预算交流费集合 + */ + public List selectCustomErpRdBudgetExchangeCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetLaborCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetLaborCostMapper.java new file mode 100644 index 00000000..db3f6fc1 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetLaborCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpRdBudgetLaborCost; +import org.dromara.oa.erp.domain.vo.ErpRdBudgetLaborCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 研发预算人工费Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpRdBudgetLaborCostMapper extends BaseMapperPlus { + + /** + * 查询研发预算人工费列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 研发预算人工费集合 + */ + public Page selectCustomErpRdBudgetLaborCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询研发预算人工费列表 + * + * @param queryWrapper 条件 + * @return 研发预算人工费集合 + */ + public List selectCustomErpRdBudgetLaborCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetLiteratureCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetLiteratureCostMapper.java new file mode 100644 index 00000000..7ec98852 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetLiteratureCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpRdBudgetLiteratureCost; +import org.dromara.oa.erp.domain.vo.ErpRdBudgetLiteratureCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 研发预算资料文献费Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpRdBudgetLiteratureCostMapper extends BaseMapperPlus { + + /** + * 查询研发预算资料文献费列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 研发预算资料文献费集合 + */ + public Page selectCustomErpRdBudgetLiteratureCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询研发预算资料文献费列表 + * + * @param queryWrapper 条件 + * @return 研发预算资料文献费集合 + */ + public List selectCustomErpRdBudgetLiteratureCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetMaterialCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetMaterialCostMapper.java new file mode 100644 index 00000000..e610103a --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetMaterialCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpRdBudgetMaterialCost; +import org.dromara.oa.erp.domain.vo.ErpRdBudgetMaterialCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 研发预算材料费Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpRdBudgetMaterialCostMapper extends BaseMapperPlus { + + /** + * 查询研发预算材料费列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 研发预算材料费集合 + */ + public Page selectCustomErpRdBudgetMaterialCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询研发预算材料费列表 + * + * @param queryWrapper 条件 + * @return 研发预算材料费集合 + */ + public List selectCustomErpRdBudgetMaterialCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetMeetingCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetMeetingCostMapper.java new file mode 100644 index 00000000..3c0e8cdf --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetMeetingCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpRdBudgetMeetingCost; +import org.dromara.oa.erp.domain.vo.ErpRdBudgetMeetingCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 研发预算会议费Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpRdBudgetMeetingCostMapper extends BaseMapperPlus { + + /** + * 查询研发预算会议费列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 研发预算会议费集合 + */ + public Page selectCustomErpRdBudgetMeetingCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询研发预算会议费列表 + * + * @param queryWrapper 条件 + * @return 研发预算会议费集合 + */ + public List selectCustomErpRdBudgetMeetingCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetOtherCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetOtherCostMapper.java new file mode 100644 index 00000000..0e1524a9 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetOtherCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpRdBudgetOtherCost; +import org.dromara.oa.erp.domain.vo.ErpRdBudgetOtherCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 研发预算其他费用Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpRdBudgetOtherCostMapper extends BaseMapperPlus { + + /** + * 查询研发预算其他费用列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 研发预算其他费用集合 + */ + public Page selectCustomErpRdBudgetOtherCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询研发预算其他费用列表 + * + * @param queryWrapper 条件 + * @return 研发预算其他费用集合 + */ + public List selectCustomErpRdBudgetOtherCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetTechCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetTechCostMapper.java new file mode 100644 index 00000000..70f9c174 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetTechCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpRdBudgetTechCost; +import org.dromara.oa.erp.domain.vo.ErpRdBudgetTechCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 研发预算技术服务费Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpRdBudgetTechCostMapper extends BaseMapperPlus { + + /** + * 查询研发预算技术服务费列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 研发预算技术服务费集合 + */ + public Page selectCustomErpRdBudgetTechCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询研发预算技术服务费列表 + * + * @param queryWrapper 条件 + * @return 研发预算技术服务费集合 + */ + public List selectCustomErpRdBudgetTechCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetTestingCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetTestingCostMapper.java new file mode 100644 index 00000000..ad29eed3 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetTestingCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpRdBudgetTestingCost; +import org.dromara.oa.erp.domain.vo.ErpRdBudgetTestingCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 研发预算测试化验费Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpRdBudgetTestingCostMapper extends BaseMapperPlus { + + /** + * 查询研发预算测试化验费列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 研发预算测试化验费集合 + */ + public Page selectCustomErpRdBudgetTestingCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询研发预算测试化验费列表 + * + * @param queryWrapper 条件 + * @return 研发预算测试化验费集合 + */ + public List selectCustomErpRdBudgetTestingCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetTravelCostMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetTravelCostMapper.java new file mode 100644 index 00000000..82ef0d14 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpRdBudgetTravelCostMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpRdBudgetTravelCost; +import org.dromara.oa.erp.domain.vo.ErpRdBudgetTravelCostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 研发预算差旅费Mapper接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface ErpRdBudgetTravelCostMapper extends BaseMapperPlus { + + /** + * 查询研发预算差旅费列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 研发预算差旅费集合 + */ + public Page selectCustomErpRdBudgetTravelCostVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询研发预算差旅费列表 + * + * @param queryWrapper 条件 + * @return 研发预算差旅费集合 + */ + public List selectCustomErpRdBudgetTravelCostVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/OaUniversalMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/OaUniversalMapper.java new file mode 100644 index 00000000..63ebeb75 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/OaUniversalMapper.java @@ -0,0 +1,29 @@ +package org.dromara.oa.erp.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.UpdateProvider; +import org.dromara.common.mybatis.utils.UniversalSqlProvider; + +import java.util.Map; + +/** + * 通用Mapper + * 用于执行动态SQL更新操作 + */ +@Mapper +public interface OaUniversalMapper { + + /** + * 动态更新表数据 + * + * @param tableName 表名 + * @param setFields 更新字段和值 + * @param conditions 条件字段和值 + * @return 更新记录数 + */ + @UpdateProvider(type = UniversalSqlProvider.class, method = "buildDynamicUpdate") + int dynamicUpdate(@Param("tableName") String tableName, + @Param("setFields") Map setFields, + @Param("conditions") Map conditions); +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpBudgetInfoService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpBudgetInfoService.java new file mode 100644 index 00000000..52b8152f --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpBudgetInfoService.java @@ -0,0 +1,69 @@ +package org.dromara.oa.erp.service; + +import org.dromara.oa.erp.domain.ErpBudgetInfo; +import org.dromara.oa.erp.domain.vo.ErpBudgetInfoVo; +import org.dromara.oa.erp.domain.bo.ErpBudgetInfoBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 项目预算Service接口 + * + * @author xins + * @date 2025-10-28 + */ +public interface IErpBudgetInfoService { + + /** + * 查询项目预算 + * + * @param budgetId 主键 + * @return 项目预算 + */ + ErpBudgetInfoVo queryById(Long budgetId); + + /** + * 分页查询项目预算列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目预算分页列表 + */ + TableDataInfo queryPageList(ErpBudgetInfoBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的项目预算列表 + * + * @param bo 查询条件 + * @return 项目预算列表 + */ + List queryList(ErpBudgetInfoBo bo); + + /** + * 新增项目预算 + * + * @param bo 项目预算 + * @return 是否新增成功 + */ + Boolean insertByBo(ErpBudgetInfoBo bo); + + /** + * 修改项目预算 + * + * @param bo 项目预算 + * @return 是否修改成功 + */ + Boolean updateByBo(ErpBudgetInfoBo bo); + + /** + * 校验并批量删除项目预算信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpBudgetInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpBudgetInfoServiceImpl.java new file mode 100644 index 00000000..66940417 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpBudgetInfoServiceImpl.java @@ -0,0 +1,222 @@ +package org.dromara.oa.erp.service.impl; + +import org.apache.dubbo.config.annotation.DubboReference; +import org.apache.seata.spring.annotation.GlobalTransactional; +import org.dromara.common.core.enums.OAStatusEnum; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import org.dromara.oa.erp.domain.ErpBudgetDetail; +import org.dromara.oa.erp.domain.ErpBudgetMaterialCost; +import org.dromara.oa.erp.mapper.ErpBudgetDetailMapper; +import org.dromara.oa.erp.mapper.ErpBudgetMaterialCostMapper; +import org.dromara.oa.workflow.strategy.BudgetWorkflowStrategy; +import org.dromara.workflow.api.RemoteWorkflowService; +import org.dromara.workflow.api.domain.RemoteStartProcess; +import org.dromara.workflow.strategy.AbstractWorkflowService; +import org.springframework.stereotype.Service; +import org.dromara.oa.erp.domain.bo.ErpBudgetInfoBo; +import org.dromara.oa.erp.domain.vo.ErpBudgetInfoVo; +import org.dromara.oa.erp.domain.ErpBudgetInfo; +import org.dromara.oa.erp.mapper.ErpBudgetInfoMapper; +import org.dromara.oa.erp.service.IErpBudgetInfoService; +import org.dromara.workflow.strategy.WorkflowStrategy; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 项目预算Service业务层处理 + * + * @author xins + * @date 2025-10-28 + */ +@RequiredArgsConstructor +@Service +public class ErpBudgetInfoServiceImpl extends AbstractWorkflowService implements IErpBudgetInfoService { + + private final ErpBudgetInfoMapper baseMapper; + + private final ErpBudgetDetailMapper erpBudgetDetailMapper; + + private final ErpBudgetMaterialCostMapper erpBudgetMaterialCostMapper; + + @DubboReference(timeout = 30000) + private RemoteWorkflowService remoteWorkflowService; + + @Override + protected WorkflowStrategy getStrategy() { + return new BudgetWorkflowStrategy(); + } + + /** + * 实现时执行remoteWorkflowService.startCompleteTask(startProcess); + */ + @Override + protected boolean doStartWorkflow(RemoteStartProcess startProcess){ + return remoteWorkflowService.startCompleteTask(startProcess); + } + + /** + * 查询项目预算 + * + * @param budgetId 主键 + * @return 项目预算 + */ + @Override + public ErpBudgetInfoVo queryById(Long budgetId) { + return baseMapper.selectVoById(budgetId); + } + + /** + * 分页查询项目预算列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目预算分页列表 + */ + @Override + public TableDataInfo queryPageList(ErpBudgetInfoBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的项目预算列表 + * + * @param bo 查询条件 + * @return 项目预算列表 + */ + @Override + public List queryList(ErpBudgetInfoBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(ErpBudgetInfoBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpBudgetInfo.class) + .selectAll(ErpBudgetInfo.class) + .eq(bo.getProjectId() != null, ErpBudgetInfo::getProjectId, bo.getProjectId()) + .eq(bo.getApprovedFlag() != null, ErpBudgetInfo::getApprovedFlag, bo.getApprovedFlag()) + .eq(bo.getBudgetVersion() != null, ErpBudgetInfo::getBudgetVersion, bo.getBudgetVersion()) + .eq(StringUtils.isNotBlank(bo.getProjectCategory()), ErpBudgetInfo::getProjectCategory, bo.getProjectCategory()) + .eq(StringUtils.isNotBlank(bo.getProjectCode()), ErpBudgetInfo::getProjectCode, bo.getProjectCode()) + .like(StringUtils.isNotBlank(bo.getProjectName()), ErpBudgetInfo::getProjectName, bo.getProjectName()) + .eq(bo.getManagerId() != null, ErpBudgetInfo::getManagerId, bo.getManagerId()) + .like(StringUtils.isNotBlank(bo.getManagerName()), ErpBudgetInfo::getManagerName, bo.getManagerName()) + .eq(bo.getProductManagerId() != null, ErpBudgetInfo::getProductManagerId, bo.getProductManagerId()) + .like(StringUtils.isNotBlank(bo.getProductManagerName()), ErpBudgetInfo::getProductManagerName, bo.getProductManagerName()) + .eq(bo.getApproveUserId() != null, ErpBudgetInfo::getApproveUserId, bo.getApproveUserId()) + .like(StringUtils.isNotBlank(bo.getApproveUserName()), ErpBudgetInfo::getApproveUserName, bo.getApproveUserName()) + .eq(bo.getContractAmount() != null, ErpBudgetInfo::getContractAmount, bo.getContractAmount()) + .eq(bo.getNetContractAmount() != null, ErpBudgetInfo::getNetContractAmount, bo.getNetContractAmount()) + .eq(bo.getBudgetCost() != null, ErpBudgetInfo::getBudgetCost, bo.getBudgetCost()) + .eq(bo.getBudgetRate() != null, ErpBudgetInfo::getBudgetRate, bo.getBudgetRate()) + .eq(bo.getReduceBudgetCost() != null, ErpBudgetInfo::getReduceBudgetCost, bo.getReduceBudgetCost()) + .eq(bo.getReduceBudgetRate() != null, ErpBudgetInfo::getReduceBudgetRate, bo.getReduceBudgetRate()) + .eq(StringUtils.isNotBlank(bo.getDuringOperation()), ErpBudgetInfo::getDuringOperation, bo.getDuringOperation()) + .eq(bo.getUnitId() != null, ErpBudgetInfo::getUnitId, bo.getUnitId()) + .like(StringUtils.isNotBlank(bo.getUnitName()), ErpBudgetInfo::getUnitName, bo.getUnitName()) + .eq(StringUtils.isNotBlank(bo.getExportFlag()), ErpBudgetInfo::getExportFlag, bo.getExportFlag()) + .eq(StringUtils.isNotBlank(bo.getBudgetStatus()), ErpBudgetInfo::getBudgetStatus, bo.getBudgetStatus()) + .eq(StringUtils.isNotBlank(bo.getFlowStatus()), ErpBudgetInfo::getFlowStatus, bo.getFlowStatus()) + .eq(bo.getContractId() != null, ErpBudgetInfo::getContractId, bo.getContractId()); + return lqw; + } + + /** + * 新增项目预算 + * + * @param bo 项目预算 + * @return 是否新增成功 + */ + @Override + @GlobalTransactional(rollbackFor = Exception.class) + public Boolean insertByBo(ErpBudgetInfoBo bo) { + ErpBudgetInfo add = MapstructUtils.convert(bo, ErpBudgetInfo.class); + validEntityBeforeSave(add); + add.setApprovedFlag(add.getProjectId()); + add.setBudgetVersion(1L); + boolean flag = baseMapper.insert(add) > 0; + List erpBudgetDetailList = bo.getErpBudgetDetailList(); + erpBudgetDetailList.forEach(erpBudgetDetail -> erpBudgetDetail.setBudgetId(add.getBudgetId())); + List erpBudgetMaterialCostList = bo.getErpBudgetMaterialCostList(); + erpBudgetMaterialCostList.forEach(erpBudgetMaterialCost -> erpBudgetMaterialCost.setBudgetId(add.getBudgetId())); + erpBudgetDetailMapper.insertBatch(erpBudgetDetailList); + erpBudgetMaterialCostMapper.insertBatch(erpBudgetMaterialCostList); + if (flag) { + bo.setBudgetId(add.getBudgetId()); + } + + this.executeWorkflow(bo); + + return flag; + } + + /** + * 开始工作流 + * @param bo + */ +// private void startWorkFlow(ErpBudgetInfoBo bo){ +// if (!bo.getBudgetStatus().equals(OAStatusEnum.DRAFT.getStatus())) { +// Map variables = new HashMap<>(); +// variables.put("projectName", bo.getProjectName()); +// RemoteStartProcess startProcess = new RemoteStartProcess(); +// startProcess.setBusinessId(bo.getBudgetId().toString()); +// startProcess.setVariables(variables); +// startProcess.setFlowConfig(FlowConfigEnum.BUDGET,""); +// boolean flagOne = remoteWorkflowService.startCompleteTask(startProcess); +// if (!flagOne) { +// throw new ServiceException("流程发起异常"); +// } +// } +// } + + + /** + * 修改项目预算 + * + * @param bo 项目预算 + * @return 是否修改成功 + */ + @Override + @GlobalTransactional(rollbackFor = Exception.class) + public Boolean updateByBo(ErpBudgetInfoBo bo) { + ErpBudgetInfo update = MapstructUtils.convert(bo, ErpBudgetInfo.class); + validEntityBeforeSave(update); + boolean isUpdated = baseMapper.updateById(update) > 0; + this.executeWorkflow(bo); + return isUpdated; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(ErpBudgetInfo entity) { + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除项目预算信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/workflow/handler/OaProcessEventHandler.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/workflow/handler/OaProcessEventHandler.java new file mode 100644 index 00000000..e67cc809 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/workflow/handler/OaProcessEventHandler.java @@ -0,0 +1,54 @@ +package org.dromara.oa.workflow.handler; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.oa.erp.mapper.OaUniversalMapper; +import org.dromara.workflow.api.event.ProcessEvent; +import org.dromara.workflow.enums.FlowConfigEnum; +import org.dromara.workflow.event.AbstractProcessEventHandler; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Map; + +/** + * @Author xins + * @Date 2025/11/10 10:28 + * @Description:项目预算流程事件处理器,处理预算相关的流程状态更新 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class OaProcessEventHandler extends AbstractProcessEventHandler { + private final OaUniversalMapper oaUniversalMapper; + + @EventListener(condition = "#processEvent.flowCode.startsWith('HWOA')") + @Transactional(rollbackFor = Exception.class) + @Override + public void onProcessEvent(ProcessEvent processEvent) { + String flowCode = processEvent.getFlowCode(); + + FlowConfigEnum flowConfig = FlowConfigEnum.getByFlowCode(flowCode); + if (flowConfig == null) { + log.warn("不支持的流程编码: {}, 忽略处理", flowCode); + return; + } + + log.info("处理器开始处理流程事件: handler={}, flowCode={}, businessId={}", + this.getClass().getSimpleName(), flowCode, processEvent.getBusinessId()); + + int updateCount = handleProcessEvent(processEvent); + + + } + + @Override + protected int doUpdate(FlowConfigEnum flowConfig, Map setFields, Map conditions) { + String tableName = flowConfig.getTableName(); + log.debug("执行数据库更新: table={}, conditions={}", tableName, conditions); + + return oaUniversalMapper.dynamicUpdate(tableName, setFields, conditions); + } + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/workflow/strategy/BudgetWorkflowStrategy.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/workflow/strategy/BudgetWorkflowStrategy.java new file mode 100644 index 00000000..9920eca9 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/workflow/strategy/BudgetWorkflowStrategy.java @@ -0,0 +1,39 @@ +package org.dromara.oa.workflow.strategy; + +import org.dromara.common.core.enums.OAStatusEnum; +import org.dromara.oa.erp.domain.bo.ErpBudgetInfoBo; +import org.dromara.workflow.enums.FlowConfigEnum; +import org.dromara.workflow.strategy.WorkflowStrategy; + +import java.util.HashMap; +import java.util.Map; + +/** + * @Author xins + * @Date 2025/11/4 14:42 + * @Description:项目预算工作流策略 + */ +public class BudgetWorkflowStrategy implements WorkflowStrategy { + + @Override + public boolean shouldStartWorkflow(ErpBudgetInfoBo bo) { + return !bo.getBudgetStatus().equals(OAStatusEnum.DRAFT.getStatus()); + } + + @Override + public String getBusinessId(ErpBudgetInfoBo bo) { + return bo.getBudgetId().toString(); + } + + @Override + public Map getVariables(ErpBudgetInfoBo bo) { + Map variables = new HashMap<>(); + variables.put("projectName", bo.getProjectName()); + return variables; + } + + @Override + public FlowConfigEnum getFlowConfig(ErpBudgetInfoBo bo) { + return FlowConfigEnum.BUDGET; + } +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetDetailMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetDetailMapper.xml new file mode 100644 index 00000000..a55fdcef --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetDetailMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetInfoMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetInfoMapper.xml new file mode 100644 index 00000000..d5cd4ec2 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetInfoMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetInstallCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetInstallCostMapper.xml new file mode 100644 index 00000000..cbbbf2c4 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetInstallCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetLaborCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetLaborCostMapper.xml new file mode 100644 index 00000000..72859e2f --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetLaborCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetMaterialCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetMaterialCostMapper.xml new file mode 100644 index 00000000..af3d60d6 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetMaterialCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetOtherCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetOtherCostMapper.xml new file mode 100644 index 00000000..b079fb05 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetOtherCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetTravelCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetTravelCostMapper.xml new file mode 100644 index 00000000..9e4ddfb6 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpBudgetTravelCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetEquipmentCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetEquipmentCostMapper.xml new file mode 100644 index 00000000..f085127a --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetEquipmentCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetExchangeCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetExchangeCostMapper.xml new file mode 100644 index 00000000..ae55bd5d --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetExchangeCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetLaborCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetLaborCostMapper.xml new file mode 100644 index 00000000..42058763 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetLaborCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetLiteratureCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetLiteratureCostMapper.xml new file mode 100644 index 00000000..8a41bf58 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetLiteratureCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetMaterialCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetMaterialCostMapper.xml new file mode 100644 index 00000000..c8498162 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetMaterialCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetMeetingCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetMeetingCostMapper.xml new file mode 100644 index 00000000..2127202f --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetMeetingCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetOtherCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetOtherCostMapper.xml new file mode 100644 index 00000000..d3aa226f --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetOtherCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetTechCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetTechCostMapper.xml new file mode 100644 index 00000000..11b227c0 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetTechCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetTestingCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetTestingCostMapper.xml new file mode 100644 index 00000000..25f86d92 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetTestingCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetTravelCostMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetTravelCostMapper.xml new file mode 100644 index 00000000..08deb21b --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpRdBudgetTravelCostMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + +