From 1045837bd72c7e13501265f25968c4823fc641b6 Mon Sep 17 00:00:00 2001 From: yinq Date: Tue, 30 Dec 2025 16:50:50 +0800 Subject: [PATCH] =?UTF-8?q?1.0.54=20=E5=90=88=E5=90=8C=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E9=A1=B5=E9=9D=A2=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E9=A1=B9=E7=9B=AE=E7=B1=BB=E5=88=AB=E5=8C=BA?= =?UTF-8?q?=E5=88=86=E9=A1=B9=E7=9B=AE=E4=B8=8E=E5=90=88=E5=90=8C=E8=AE=A2?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/constant/ProjectCategoryConstant.java | 36 +++++++++ .../ErpContractOrderController.java | 11 +++ .../dromara/oa/erp/domain/ErpProjectInfo.java | 2 +- .../oa/erp/domain/bo/ErpProjectInfoBo.java | 2 +- .../oa/erp/domain/vo/ErpProjectInfoVo.java | 14 +++- .../erp/service/IErpContractOrderService.java | 21 ++++++ .../impl/ErpContractOrderServiceImpl.java | 75 +++++++++++++++++-- .../impl/ErpProjectInfoServiceImpl.java | 7 +- .../impl/ErpProjectPlanServiceImpl.java | 2 + .../mapper/oa/erp/ErpProjectInfoMapper.xml | 5 +- 10 files changed, 162 insertions(+), 13 deletions(-) create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/constant/ProjectCategoryConstant.java diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/constant/ProjectCategoryConstant.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/constant/ProjectCategoryConstant.java new file mode 100644 index 00000000..2aac6220 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/constant/ProjectCategoryConstant.java @@ -0,0 +1,36 @@ +package org.dromara.oa.erp.constant; + +/** + * 项目类别常量 + * + * @author ruoyi + */ +public interface ProjectCategoryConstant { + + /** + * 销售(实施、物流) + */ + String MARKET = "1"; + + /** + * 销售(备件) + */ + String MARKET_PART = "2"; + + /** + * 研发 + */ + String RD = "3"; + + /** + * 预投 + */ + String PRE_PRODUCTION = "4"; + + /** + * 合同订单 + */ + String CONTRACT_ORDER = "9"; + +} + diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractOrderController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractOrderController.java index bf429285..e9af5994 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractOrderController.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractOrderController.java @@ -13,6 +13,8 @@ import org.dromara.common.web.core.BaseController; import org.dromara.oa.erp.domain.bo.ErpProjectInfoBo; import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo; import org.dromara.oa.erp.service.IErpContractOrderService; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -31,6 +33,15 @@ public class ErpContractOrderController extends BaseController { private final IErpContractOrderService erpContractOrderService; + /** + * 查询合同订单列表 + */ + @SaCheckPermission("oa/erp:projectInfo:list") + @GetMapping("/list") + public TableDataInfo list(ErpProjectInfoBo bo, PageQuery pageQuery) { + return erpContractOrderService.queryPageList(bo, pageQuery); + } + /** * 暂存合同订单(项目信息) */ diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectInfo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectInfo.java index 97688336..88afc6c5 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectInfo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectInfo.java @@ -49,7 +49,7 @@ public class ErpProjectInfo extends TenantEntity { private String businessDirection; /** - * 项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投 5合同订单) + * 项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投 9合同订单) */ private String projectCategory; diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectInfoBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectInfoBo.java index 7534e293..9deddbde 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectInfoBo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectInfoBo.java @@ -54,7 +54,7 @@ public class ErpProjectInfoBo extends BaseEntity { private String businessDirection; /** - * 项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投 5合同订单) + * 项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投 9合同订单) */ @NotBlank(message = "项目类别", groups = { AddGroup.class, EditGroup.class }) private String projectCategory; diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectInfoVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectInfoVo.java index 882001c0..837b3679 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectInfoVo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectInfoVo.java @@ -62,7 +62,7 @@ public class ErpProjectInfoVo implements Serializable { private String businessDirection; /** - * 项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投 5合同订单) + * 项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投 9合同订单) */ @ExcelProperty(value = "项目类别", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "project_category") @@ -197,4 +197,16 @@ public class ErpProjectInfoVo implements Serializable { @ExcelProperty(value = "分管副总名称") private String deputyName; + /** + * 合同编号 + */ + @ExcelProperty(value = "合同编号") + private String contractCode; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpContractOrderService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpContractOrderService.java index 146753fb..6cb85bd2 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpContractOrderService.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpContractOrderService.java @@ -2,6 +2,10 @@ package org.dromara.oa.erp.service; import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo; import org.dromara.oa.erp.domain.bo.ErpProjectInfoBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.List; /** * 合同订单Service接口 @@ -19,6 +23,23 @@ public interface IErpContractOrderService { */ ErpProjectInfoVo queryById(Long projectId); + /** + * 分页查询合同订单列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 合同订单分页列表 + */ + TableDataInfo queryPageList(ErpProjectInfoBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的合同订单列表 + * + * @param bo 查询条件 + * @return 合同订单列表 + */ + List queryList(ErpProjectInfoBo bo); + /** * 暂存合同订单(项目信息) * diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractOrderServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractOrderServiceImpl.java index e22c0e44..235e1933 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractOrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractOrderServiceImpl.java @@ -24,6 +24,12 @@ import org.dromara.oa.erp.mapper.ErpProjectInfoMapper; import org.dromara.oa.erp.mapper.ErpProjectPlanMapper; import org.dromara.oa.erp.mapper.ErpProjectPlanStageMapper; import org.dromara.oa.erp.service.IErpContractOrderService; +import org.dromara.oa.erp.constant.ProjectCategoryConstant; +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 org.dromara.system.api.RemoteCodeRuleService; import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.domain.RemoteStartProcess; @@ -70,11 +76,70 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService { */ @Override public ErpProjectInfoVo queryById(Long projectId) { - ErpProjectInfo projectInfo = projectInfoMapper.selectById(projectId); - if (projectInfo == null) { - return null; - } - return MapstructUtils.convert(projectInfo, ErpProjectInfoVo.class); + MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpProjectInfo.class) + .eq(ErpProjectInfo::getProjectId, projectId) + .eq(ErpProjectInfo::getProjectCategory, ProjectCategoryConstant.CONTRACT_ORDER) + .eq("t.del_flag", "0"); + List list = projectInfoMapper.selectCustomErpProjectInfoVoList(lqw); + return !list.isEmpty() ? list.get(0) : null; + } + + /** + * 分页查询合同订单列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 合同订单分页列表 + */ + @Override + public TableDataInfo queryPageList(ErpProjectInfoBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = projectInfoMapper.selectCustomErpProjectInfoVoList(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的合同订单列表 + * + * @param bo 查询条件 + * @return 合同订单列表 + */ + @Override + public List queryList(ErpProjectInfoBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return projectInfoMapper.selectCustomErpProjectInfoVoList(lqw); + } + + /** + * 构建查询条件 + * + * @param bo 查询条件 + * @return 查询包装器 + */ + private MPJLambdaWrapper buildQueryWrapper(ErpProjectInfoBo bo) { + MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpProjectInfo.class) + .selectAll(ErpProjectInfo.class) + .eq(ErpProjectInfo::getProjectCategory, ProjectCategoryConstant.CONTRACT_ORDER) + .eq(StringUtils.isNotBlank(bo.getContractFlag()), ErpProjectInfo::getContractFlag, bo.getContractFlag()) + .like(StringUtils.isNotBlank(bo.getProjectCode()), ErpProjectInfo::getProjectCode, bo.getProjectCode()) + .like(StringUtils.isNotBlank(bo.getProjectName()), ErpProjectInfo::getProjectName, bo.getProjectName()) + .eq(StringUtils.isNotBlank(bo.getBusinessDirection()), ErpProjectInfo::getBusinessDirection, bo.getBusinessDirection()) + .eq(StringUtils.isNotBlank(bo.getSpareFlag()), ErpProjectInfo::getSpareFlag, bo.getSpareFlag()) + .eq(bo.getProjectTypeId() != null, ErpProjectInfo::getProjectTypeId, bo.getProjectTypeId()) + .eq(StringUtils.isNotBlank(bo.getPaymentMethod()), ErpProjectInfo::getPaymentMethod, bo.getPaymentMethod()) + .eq(bo.getDeptId() != null, ErpProjectInfo::getDeptId, bo.getDeptId()) + .eq(bo.getManagerId() != null, ErpProjectInfo::getManagerId, bo.getManagerId()) + .eq(bo.getChargeId() != null, ErpProjectInfo::getChargeId, bo.getChargeId()) + .eq(bo.getDeputyId() != null, ErpProjectInfo::getDeputyId, bo.getDeputyId()) + .eq(StringUtils.isNotBlank(bo.getPeopleId()), ErpProjectInfo::getPeopleId, bo.getPeopleId()) + .eq(bo.getAmount() != null, ErpProjectInfo::getAmount, bo.getAmount()) + .eq(StringUtils.isNotBlank(bo.getProjectStatus()), ErpProjectInfo::getProjectStatus, bo.getProjectStatus()) + .eq(StringUtils.isNotBlank(bo.getFlowStatus()), ErpProjectInfo::getFlowStatus, bo.getFlowStatus()) + .eq(bo.getContractId() != null, ErpProjectInfo::getContractId, bo.getContractId()) + .eq(ErpProjectInfo::getProjectCategory, ProjectCategoryConstant.CONTRACT_ORDER) + .eq("t.del_flag", "0") + .orderByDesc(ErpProjectInfo::getCreateTime); + return lqw; } /** diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectInfoServiceImpl.java index 77387b5f..2dfe7ca0 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectInfoServiceImpl.java @@ -14,6 +14,7 @@ import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.RequiredArgsConstructor; import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.oa.erp.constant.ProjectCategoryConstant; import org.dromara.oa.erp.enums.ProjectCategoryEnum; import org.dromara.workflow.api.event.ProcessEvent; import org.springframework.context.event.EventListener; @@ -121,6 +122,7 @@ public class ErpProjectInfoServiceImpl implements IErpProjectInfoService { .eq(bo.getSortOrder() != null, ErpProjectInfo::getSortOrder, bo.getSortOrder()) .eq(bo.getContractId() != null, ErpProjectInfo::getContractId, bo.getContractId()) .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpProjectInfo::getActiveFlag, bo.getActiveFlag()) + .ne(ErpProjectInfo::getProjectCategory, ProjectCategoryConstant.CONTRACT_ORDER) .eq("t.del_flag", "0") .orderByDesc(ErpProjectInfo::getCreateTime); return lqw; @@ -318,6 +320,7 @@ public class ErpProjectInfoServiceImpl implements IErpProjectInfoService { wrapper.like(StringUtils.isNotBlank(bo.getProjectCode()), ErpProjectInfo::getProjectCode, bo.getProjectCode()) .like(StringUtils.isNotBlank(bo.getProjectName()), ErpProjectInfo::getProjectName, bo.getProjectName()) .eq(StringUtils.isNotBlank(bo.getProjectStatus()), ErpProjectInfo::getProjectStatus, bo.getProjectStatus()) + .ne(ErpProjectInfo::getProjectCategory, ProjectCategoryConstant.CONTRACT_ORDER) .eq("t.del_flag", "0") .and(w -> { @@ -328,12 +331,8 @@ public class ErpProjectInfoServiceImpl implements IErpProjectInfoService { w.eq(StringUtils.isNotBlank(bo.getProjectCategory()), ErpProjectInfo::getProjectCategory, ProjectCategoryEnum.RD.getCode()) .or().eq(StringUtils.isNotBlank(bo.getProjectCategory()), ErpProjectInfo::getProjectCategory, ProjectCategoryEnum.PRE_PRODUCTION.getCode()); } - }).orderByDesc(ErpProjectInfo::getCreateTime); - ; - return wrapper; - } } 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 9f53bfa5..fc7e2558 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 @@ -20,6 +20,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.oa.erp.constant.ProjectCategoryConstant; import org.dromara.oa.erp.domain.ErpProjectPlan; import org.dromara.oa.erp.domain.ErpProjectPlanStage; import org.dromara.oa.erp.domain.bo.ErpProjectPlanBo; @@ -129,6 +130,7 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService { .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()) + .ne("p.project_category", ProjectCategoryConstant.CONTRACT_ORDER) .orderByDesc(ErpProjectPlan::getCreateTime); return lqw; } diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectInfoMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectInfoMapper.xml index 9cdcb092..a9f0b048 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectInfoMapper.xml +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectInfoMapper.xml @@ -40,7 +40,9 @@ d.dept_name deptName, u1.nick_name managerName, u2.nick_name chargeName, - u3.nick_name deputyName + u3.nick_name deputyName, + c.contract_code contractCode, + c.contract_name contractName from erp_project_info t left join erp_project_type t1 on t1.project_type_id = t.project_type_id left join erp_project_type t2 on t1.parent_id = t2.project_type_id @@ -48,6 +50,7 @@ left join sys_user u1 on u1.user_id = t.manager_id left join sys_user u2 on u2.user_id = t.charge_id left join sys_user u3 on u3.user_id = t.deputy_id + left join erp_contract_info c on t.contract_id = c.contract_id ${ew.getCustomSqlSegment}