From 2b44842c0c791dff95b69a9bd1cc39c561a3f5ed Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Fri, 7 Nov 2025 11:29:04 +0800 Subject: [PATCH] =?UTF-8?q?feat(oa):=20=E6=B7=BB=E5=8A=A0=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E8=80=85=E5=90=8D=E7=A7=B0=E5=AD=97=E6=AE=B5=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 CrmQuoteInfo、CrmSupplierInfo 和 ErpProjectPlan 实体中新增 createName 字段- 修改对应的 XML 查询语句,关联 sys_user 表获取创建者昵称 - 更新 VO 对象,补充 createBy、createName 和 createTime 字段 - 为 ErpProjectPlan 添加唯一性校验逻辑,确保一个项目仅有一个计划 - 调整 SQL 查询结构,提升可读性和维护性 --- .../dromara/oa/crm/domain/CrmQuoteInfo.java | 6 + .../oa/crm/domain/CrmSupplierInfo.java | 6 + .../oa/crm/domain/vo/CrmQuoteInfoVo.java | 15 ++ .../oa/crm/domain/vo/CrmSupplierInfoVo.java | 14 ++ .../service/impl/CrmQuoteInfoServiceImpl.java | 2 +- .../dromara/oa/erp/domain/ErpProjectPlan.java | 8 + .../oa/erp/domain/vo/ErpProjectPlanVo.java | 18 +++ .../impl/ErpProjectPlanServiceImpl.java | 17 ++- .../mapper/oa/crm/CrmQuoteInfoMapper.xml | 18 ++- .../mapper/oa/crm/CrmSupplierInfoMapper.xml | 2 + .../mapper/oa/erp/ErpProjectPlanMapper.xml | 140 +++++++++--------- 11 files changed, 172 insertions(+), 74 deletions(-) diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/CrmQuoteInfo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/CrmQuoteInfo.java index 05ddfff4..7af899dd 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/CrmQuoteInfo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/CrmQuoteInfo.java @@ -236,4 +236,10 @@ public class CrmQuoteInfo extends TenantEntity { private List items; + /** + * 创建者名称 + */ + @TableField(exist = false ) + private String createName; + } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/CrmSupplierInfo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/CrmSupplierInfo.java index af9fc8b0..395a9782 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/CrmSupplierInfo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/CrmSupplierInfo.java @@ -174,5 +174,11 @@ public class CrmSupplierInfo extends TenantEntity { @TableField(exist = false) private String ownerDeptName; + /** + * 创建者名称 + */ + @TableField(exist = false) + private String createName; + } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/vo/CrmQuoteInfoVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/vo/CrmQuoteInfoVo.java index 5d7d0aeb..404d17a3 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/vo/CrmQuoteInfoVo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/vo/CrmQuoteInfoVo.java @@ -275,4 +275,19 @@ public class CrmQuoteInfoVo implements Serializable { @ExcelProperty(value = "报价单子表-物料明细") private List itemsVo; + + /** + * 创建者 + */ + private Long createBy; + + /** + * 创建者名称 + */ + private String createName; + + /** + * 创建时间 + */ + private Date createTime; } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/vo/CrmSupplierInfoVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/vo/CrmSupplierInfoVo.java index e76123f4..95531d5c 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/vo/CrmSupplierInfoVo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/domain/vo/CrmSupplierInfoVo.java @@ -205,5 +205,19 @@ public class CrmSupplierInfoVo implements Serializable { @ExcelIgnore private List attachmentList; + /** + * 创建者 + */ + private Long createBy; + + /** + * 创建者名称 + */ + private String createName; + + /** + * 创建时间 + */ + private Date createTime; } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmQuoteInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmQuoteInfoServiceImpl.java index b7b79b11..edf01aea 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmQuoteInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmQuoteInfoServiceImpl.java @@ -75,7 +75,7 @@ public class CrmQuoteInfoServiceImpl implements ICrmQuoteInfoService { @Override public TableDataInfo queryPageList(CrmQuoteInfoBo bo, PageQuery pageQuery) { MPJLambdaWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + Page result = baseMapper.selectCustomCrmQuoteInfoVoList(pageQuery.build(), lqw); return TableDataInfo.build(result); } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectPlan.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectPlan.java index 27e3d0de..b6d40df9 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectPlan.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectPlan.java @@ -84,4 +84,12 @@ public class ErpProjectPlan extends TenantEntity { private String delFlag; + /** + * 创建者名称 + */ + @TableField(exist = false ) + private String createName; + + + } 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 57ecddb4..10b77d62 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 @@ -1,5 +1,7 @@ package org.dromara.oa.erp.domain.vo; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; import org.dromara.oa.erp.domain.ErpProjectPlan; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; @@ -126,4 +128,20 @@ public class ErpProjectPlanVo implements Serializable { @ExcelProperty(value = "合同名称") private String contractName; + + /** + * 创建者 + */ + private Long createBy; + + /** + * 创建者名称 + */ + private String createName; + + /** + * 创建时间 + */ + private Date createTime; + } 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 1208e561..19d841dd 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 @@ -235,7 +235,22 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService { * 保存前的数据校验 */ private void validEntityBeforeSave(ErpProjectPlan entity){ - //TODO 做一些数据校验,如唯一约束 + // 唯一性校验:一个项目只能有一个项目计划 + Long projectId = entity.getProjectId(); + if (projectId == null) { + throw new ServiceException("项目不能为空"); + } + MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpProjectPlan.class) + .eq(ErpProjectPlan::getProjectId, projectId) + .eq(ErpProjectPlan::getDelFlag, "0"); + // 更新时排除自身ID + if (entity.getProjectPlanId() != null) { + lqw.ne(ErpProjectPlan::getProjectPlanId, entity.getProjectPlanId()); + } + long cnt = baseMapper.selectCount(lqw); + if (cnt > 0) { + throw new ServiceException("该项目已存在项目计划,一个项目只能有一个项目计划"); + } } /** diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/crm/CrmQuoteInfoMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/crm/CrmQuoteInfoMapper.xml index 01a663b7..dfa4fb35 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/crm/CrmQuoteInfoMapper.xml +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/crm/CrmQuoteInfoMapper.xml @@ -7,20 +7,32 @@ 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 3e86bb18..97abedb8 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 @@ -7,55 +7,57 @@ - select t.project_plan_id, - t.tenant_id, - t.project_id, - t.manager_id, - t.charge_id, - t.payment_method, - t.project_plan_status, - t.flow_status, - t.sort_order, - t.contract_id, - t.remark, - t.active_flag, - t.del_flag, - t.create_dept, - t.create_by, - t.create_time, - t.update_by, + select t.project_plan_id, + t.tenant_id, + t.project_id, + t.manager_id, + t.charge_id, + t.payment_method, + t.project_plan_status, + t.flow_status, + t.sort_order, + t.contract_id, + t.remark, + t.active_flag, + t.del_flag, + t.create_dept, + t.create_by, + t.create_time, + t.update_by, t.update_time, p.project_name, u1.nick_name as managerName, @@ -112,23 +114,23 @@