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; + } }