From 5e9c90e3bf03230735260ca8b630466ae697afcf Mon Sep 17 00:00:00 2001 From: yinq Date: Mon, 15 Dec 2025 18:31:04 +0800 Subject: [PATCH] =?UTF-8?q?1.0.47=20=E7=AE=A1=E7=90=86=E9=94=80=E5=94=AE?= =?UTF-8?q?=E7=89=A9=E6=96=99=E6=B7=BB=E5=8A=A0=E7=89=A9=E6=96=99=E5=9E=8B?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BaseMaterialInfoController.java | 10 +++++ .../domain/vo/BaseRelationMaterialVo.java | 6 +++ .../service/IBaseMaterialInfoService.java | 10 +++++ .../impl/BaseMaterialInfoServiceImpl.java | 39 +++++++++++++++++++ 4 files changed, 65 insertions(+) diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/controller/BaseMaterialInfoController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/controller/BaseMaterialInfoController.java index d8caf6d4..47689576 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/controller/BaseMaterialInfoController.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/controller/BaseMaterialInfoController.java @@ -18,6 +18,7 @@ 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.base.domain.vo.BaseMaterialInfoVo; +import org.dromara.oa.base.domain.vo.BaseRelationMaterialVo; import org.dromara.oa.base.domain.bo.BaseMaterialInfoBo; import org.dromara.oa.base.service.IBaseMaterialInfoService; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -113,4 +114,13 @@ public class BaseMaterialInfoController extends BaseController { return R.ok(list); } + /** + * 查询物料信息并关联销售物料表 + */ + @SaCheckPermission("oa/base:materialInfo:list") + @GetMapping("/listWithRelation") + public TableDataInfo listWithRelation(BaseMaterialInfoBo bo, PageQuery pageQuery) { + return baseMaterialInfoService.queryMaterialWithRelationPageList(bo, pageQuery); + } + } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/domain/vo/BaseRelationMaterialVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/domain/vo/BaseRelationMaterialVo.java index 53048dbf..71d50e1e 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/domain/vo/BaseRelationMaterialVo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/domain/vo/BaseRelationMaterialVo.java @@ -58,6 +58,12 @@ public class BaseRelationMaterialVo implements Serializable { @ExcelProperty(value = "SAP物料名称") private String materialName; + /** + * 物料型号 + */ + @ExcelProperty(value = "物料型号") + private String materialModel; + /** * 客户名称 */ diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/IBaseMaterialInfoService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/IBaseMaterialInfoService.java index a6a468c9..aee45d40 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/IBaseMaterialInfoService.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/IBaseMaterialInfoService.java @@ -5,6 +5,7 @@ import org.dromara.oa.base.domain.vo.BaseMaterialInfoVo; import org.dromara.oa.base.domain.bo.BaseMaterialInfoBo; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.oa.base.domain.vo.BaseRelationMaterialVo; import java.util.Collection; import java.util.List; @@ -42,6 +43,15 @@ public interface IBaseMaterialInfoService { */ List queryList(BaseMaterialInfoBo bo); + /** + * 分页查询物料信息并关联销售物料表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物料信息分页列表(包含关联的销售物料信息) + */ + TableDataInfo queryMaterialWithRelationPageList(BaseMaterialInfoBo bo, PageQuery pageQuery); + /** * 新增SAP物料信息 * diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/BaseMaterialInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/BaseMaterialInfoServiceImpl.java index b1ef5353..ed0df84b 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/BaseMaterialInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/BaseMaterialInfoServiceImpl.java @@ -9,6 +9,9 @@ import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.RequiredArgsConstructor; import org.dromara.oa.base.domain.BaseUnitInfo; +import org.dromara.oa.crm.domain.CrmCustomerInfo; +import org.dromara.oa.base.domain.BaseRelationMaterial; +import org.dromara.oa.base.domain.vo.BaseRelationMaterialVo; import org.springframework.stereotype.Service; import org.dromara.oa.base.domain.bo.BaseMaterialInfoBo; import org.dromara.oa.base.domain.vo.BaseMaterialInfoVo; @@ -141,4 +144,40 @@ public class BaseMaterialInfoServiceImpl implements IBaseMaterialInfoService { } return baseMapper.deleteByIds(ids) > 0; } + + /** + * 分页查询物料信息并关联销售物料表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物料信息分页列表(包含关联的销售物料信息) + */ + @Override + public TableDataInfo queryMaterialWithRelationPageList(BaseMaterialInfoBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildMaterialWithRelationQueryWrapper(bo); + Page result = baseMapper.selectJoinPage(pageQuery.build(), BaseRelationMaterialVo.class, lqw); + return TableDataInfo.build(result); + } + + /** + * 构建物料信息关联销售物料表的查询条件 + */ + private MPJLambdaWrapper buildMaterialWithRelationQueryWrapper(BaseMaterialInfoBo bo) { + MPJLambdaWrapper lqw = JoinWrappers.lambda(BaseMaterialInfo.class) + .selectAll(BaseMaterialInfo.class) + .select(BaseRelationMaterial::getRelationMaterialId) + .select(BaseRelationMaterial::getCustomerId) + .select(BaseRelationMaterial::getSaleMaterialName) + .select(BaseRelationMaterial::getSaleMaterialModel) + .select(CrmCustomerInfo::getCustomerName) + .leftJoin(BaseRelationMaterial.class, BaseRelationMaterial::getMaterialId, BaseMaterialInfo::getMaterialId) + .leftJoin(CrmCustomerInfo.class, CrmCustomerInfo::getCustomerId, BaseRelationMaterial::getCustomerId) + .eq(StringUtils.isNotBlank(bo.getMaterialCode()), BaseMaterialInfo::getMaterialCode, bo.getMaterialCode()) + .like(StringUtils.isNotBlank(bo.getMaterialName()), BaseMaterialInfo::getMaterialName, bo.getMaterialName()) + .eq(StringUtils.isNotBlank(bo.getMaterialBrand()), BaseMaterialInfo::getMaterialBrand, bo.getMaterialBrand()) + .like(StringUtils.isNotBlank(bo.getMaterialModel()), BaseMaterialInfo::getMaterialModel, bo.getMaterialModel()) + .eq("t.del_flag", "0") + .orderByDesc(BaseRelationMaterial::getRelationMaterialId); + return lqw; + } }