From 2d3ef291253c31224cf36b1e1fabf55cbfb2f98d Mon Sep 17 00:00:00 2001 From: yinq Date: Tue, 25 Nov 2025 18:01:57 +0800 Subject: [PATCH] =?UTF-8?q?1.0.40=20=E9=A1=B9=E7=9B=AE=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E5=85=B3=E8=81=94=E9=A1=B9=E7=9B=AE=E7=BC=96=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oa/erp/domain/vo/ErpProjectPlanVo.java | 6 ++ .../impl/ErpProjectPlanServiceImpl.java | 93 +++++++++---------- .../mapper/oa/erp/ErpProjectPlanMapper.xml | 12 ++- 3 files changed, 60 insertions(+), 51 deletions(-) diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectPlanVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectPlanVo.java index ee3509af..3e59f007 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectPlanVo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectPlanVo.java @@ -122,6 +122,12 @@ public class ErpProjectPlanVo implements Serializable { @ExcelProperty(value = "项目名称") private String projectName; + /** + * 项目编号 + */ + @ExcelProperty(value = "项目编号") + private String projectCode; + /** * 项目经理名称 */ diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectPlanServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectPlanServiceImpl.java index 563a57c4..94f3ad7a 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectPlanServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectPlanServiceImpl.java @@ -59,6 +59,7 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService { @DubboReference(timeout = 30000) private RemoteWorkflowService remoteWorkflowService; + @DubboReference(timeout = 30000) private RemoteCodeRuleService remoteCodeRuleService; @@ -69,7 +70,7 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService { * @return 项目计划 */ @Override - public ErpProjectPlanVo queryById(Long projectPlanId){ + public ErpProjectPlanVo queryById(Long projectPlanId) { // 使用自定义方法查询,包含关联数据 ErpProjectPlanVo projectPlanVo = baseMapper.selectCustomErpProjectPlanVoById(projectPlanId); if (ObjectUtils.isEmpty(projectPlanVo)) { @@ -77,28 +78,28 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService { } // 查询项目计划阶段列表 MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpProjectPlanStage.class) - .selectAll(ErpProjectPlanStage.class) - .eq("t.del_flag", "0") - .eq(projectPlanId != null, ErpProjectPlanStage::getProjectPlanId, projectPlanId); + .selectAll(ErpProjectPlanStage.class) + .eq("t.del_flag", "0") + .eq(projectPlanId != null, ErpProjectPlanStage::getProjectPlanId, projectPlanId); List planStageList = planStageMapper.selectVoList(lqw); projectPlanVo.setPlanStageList(planStageList); return projectPlanVo; } - /** - * 分页查询项目计划列表 - * - * @param bo 查询条件 - * @param pageQuery 分页参数 - * @return 项目计划分页列表 - */ - @Override - public TableDataInfo queryPageList(ErpProjectPlanBo bo, PageQuery pageQuery) { - MPJLambdaWrapper lqw = buildQueryWrapper(bo); - // 使用自定义分页查询方法获取包含关联数据的结果 - Page result = baseMapper.selectCustomErpProjectPlanVoList(pageQuery.build(), lqw); - return TableDataInfo.build(result); - } + /** + * 分页查询项目计划列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目计划分页列表 + */ + @Override + public TableDataInfo queryPageList(ErpProjectPlanBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + // 使用自定义分页查询方法获取包含关联数据的结果 + Page result = baseMapper.selectCustomErpProjectPlanVoList(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } /** * 查询符合条件的项目计划列表 @@ -116,22 +117,20 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService { private MPJLambdaWrapper buildQueryWrapper(ErpProjectPlanBo bo) { Map params = bo.getParams(); MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpProjectPlan.class) - .selectAll(ErpProjectPlan.class) - .eq(ErpProjectPlan::getDelFlag, "0") - // 关联项目信息 - .select(ErpProjectInfo::getProjectName) - .leftJoin(ErpProjectInfo.class,ErpProjectInfo::getProjectId, ErpProjectPlan::getProjectId) - .eq(bo.getProjectId() != null, ErpProjectPlan::getProjectId, bo.getProjectId()) - .eq(StringUtils.isNotBlank(bo.getProjectPlanCode()), ErpProjectPlan::getProjectPlanCode, bo.getProjectPlanCode()) - .eq(bo.getManagerId() != null, ErpProjectPlan::getManagerId, bo.getManagerId()) - .eq(bo.getChargeId() != null, ErpProjectPlan::getChargeId, bo.getChargeId()) - .eq(StringUtils.isNotBlank(bo.getPaymentMethod()), ErpProjectPlan::getPaymentMethod, bo.getPaymentMethod()) - .eq(StringUtils.isNotBlank(bo.getProjectPlanStatus()), ErpProjectPlan::getProjectPlanStatus, bo.getProjectPlanStatus()) - .eq(StringUtils.isNotBlank(bo.getFlowStatus()), ErpProjectPlan::getFlowStatus, bo.getFlowStatus()) - .eq(bo.getSortOrder() != null, ErpProjectPlan::getSortOrder, bo.getSortOrder()) - .eq(bo.getContractId() != null, ErpProjectPlan::getContractId, bo.getContractId()) - .eq(StringUtils.isNotBlank(bo.getOssId()), ErpProjectPlan::getOssId, bo.getOssId()) - .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpProjectPlan::getActiveFlag, bo.getActiveFlag()); + .selectAll(ErpProjectPlan.class) + .eq(ErpProjectPlan::getDelFlag, "0") + .eq(bo.getProjectId() != null, ErpProjectPlan::getProjectId, bo.getProjectId()) + .eq(StringUtils.isNotBlank(bo.getProjectPlanCode()), ErpProjectPlan::getProjectPlanCode, bo.getProjectPlanCode()) + .eq(bo.getManagerId() != null, ErpProjectPlan::getManagerId, bo.getManagerId()) + .eq(bo.getChargeId() != null, ErpProjectPlan::getChargeId, bo.getChargeId()) + .eq(StringUtils.isNotBlank(bo.getPaymentMethod()), ErpProjectPlan::getPaymentMethod, bo.getPaymentMethod()) + .eq(StringUtils.isNotBlank(bo.getProjectPlanStatus()), ErpProjectPlan::getProjectPlanStatus, bo.getProjectPlanStatus()) + .eq(StringUtils.isNotBlank(bo.getFlowStatus()), ErpProjectPlan::getFlowStatus, bo.getFlowStatus()) + .eq(bo.getSortOrder() != null, ErpProjectPlan::getSortOrder, bo.getSortOrder()) + .eq(bo.getContractId() != null, ErpProjectPlan::getContractId, bo.getContractId()) + .eq(StringUtils.isNotBlank(bo.getOssId()), ErpProjectPlan::getOssId, bo.getOssId()) + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpProjectPlan::getActiveFlag, bo.getActiveFlag()) + .orderByDesc(ErpProjectPlan::getCreateTime); return lqw; } @@ -154,7 +153,7 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService { if (flag) { bo.setProjectPlanId(add.getProjectPlanId()); bo.setProjectPlanCode(add.getProjectPlanCode()); - if ( ObjectUtils.isNotEmpty(planStageList)) { + if (ObjectUtils.isNotEmpty(planStageList)) { for (ErpProjectPlanStage planStage : planStageList) { planStage.setProjectPlanId(add.getProjectPlanId()); planStage.setProjectId(add.getProjectId()); @@ -227,14 +226,14 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService { // 收集当前计划阶段列表中已存在的计划阶段ID集合 Set existingPlanStageIds = planStageList.stream() - .map(ErpProjectPlanStage::getPlanStageId) - .filter(Objects::nonNull) - .collect(Collectors.toSet()); + .map(ErpProjectPlanStage::getPlanStageId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); // 从旧的计划阶段列表中筛选出需要删除的记录(即不在当前列表中的记录) List filterPlanStageIds = planStageOldList.stream() - .filter(stage -> !existingPlanStageIds.contains(stage.getPlanStageId())) - .toList(); + .filter(stage -> !existingPlanStageIds.contains(stage.getPlanStageId())) + .toList(); // 删除需要移除的计划阶段记录 for (ErpProjectPlanStage filterPlanStageId : filterPlanStageIds) { @@ -248,15 +247,15 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService { /** * 保存前的数据校验 */ - private void validEntityBeforeSave(ErpProjectPlan entity){ + private void validEntityBeforeSave(ErpProjectPlan entity) { // 唯一性校验:一个项目只能有一个项目计划 Long projectId = entity.getProjectId(); if (projectId == null) { throw new ServiceException("项目不能为空"); } MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpProjectPlan.class) - .eq(ErpProjectPlan::getProjectId, projectId) - .eq(ErpProjectPlan::getDelFlag, "0"); + .eq(ErpProjectPlan::getProjectId, projectId) + .eq(ErpProjectPlan::getDelFlag, "0"); // 更新时排除自身ID if (entity.getProjectPlanId() != null) { lqw.ne(ErpProjectPlan::getProjectPlanId, entity.getProjectPlanId()); @@ -308,12 +307,12 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService { @Override @GlobalTransactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } // 先删除子表 planStageMapper.delete(Wrappers.lambdaQuery() - .in(ErpProjectPlanStage::getProjectPlanId, ids)); + .in(ErpProjectPlanStage::getProjectPlanId, ids)); baseMapper.deleteByIds(ids); //删除工作流 List businessIds = ids.stream().toList(); @@ -374,10 +373,10 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService { } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) { projectPlan.setProjectPlanStatus(OAStatusEnum.COMPLETED.getStatus()); } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.INVALID.getStatus()) - || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.TERMINATION.getStatus())) { + || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.TERMINATION.getStatus())) { projectPlan.setProjectPlanStatus(OAStatusEnum.INVALID.getStatus()); } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus()) - || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.CANCEL.getStatus())) { + || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.CANCEL.getStatus())) { // 流程驳回:业务状态还原为草稿,允许重新编辑和提交 projectPlan.setProjectPlanStatus(OAStatusEnum.DRAFT.getStatus()); } diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectPlanMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectPlanMapper.xml index 7ae0f312..8305a5a4 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectPlanMapper.xml +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectPlanMapper.xml @@ -28,11 +28,12 @@ t.update_by, t.update_time, p.project_name, - u1.nick_name as managerName, - d1.dept_name as managerDeptName, - u2.nick_name as chargeName, + p.project_code as projectCode, + u1.nick_name as managerName, + d1.dept_name as managerDeptName, + u2.nick_name as chargeName, c.contract_name as contractName, - u3.nick_name as createName + u3.nick_name as createName from erp_project_plan t left join erp_project_info p on t.project_id = p.project_id left join sys_user u1 on t.manager_id = u1.user_id @@ -66,6 +67,7 @@ t.update_by, t.update_time, p.project_name, + p.project_code as projectCode, u1.nick_name as managerName, d1.dept_name as managerDeptName, u2.nick_name as chargeName, @@ -102,6 +104,7 @@ t.update_by, t.update_time, p.project_name, + p.project_code as projectCode, u1.nick_name as managerName, d1.dept_name as managerDeptName, u2.nick_name as chargeName, @@ -147,6 +150,7 @@ t.update_by, t.update_time, p.project_name, + p.project_code as projectCode, u1.nick_name as managerName, d1.dept_name as managerDeptName, u2.nick_name as chargeName,