From 70936024a8a332ecb8b9b4a3d1caa66889b1ac8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Mon, 20 Apr 2026 23:47:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E7=9A=84=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E9=BB=98=E8=AE=A4=E7=BB=91=E5=AE=9A=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E7=99=BB=E5=BD=95=E8=B4=A6=E5=8F=B7=203.=E4=BB=93?= =?UTF-8?q?=E5=BA=93=E7=BB=91=E5=AE=9A=E7=94=A8=E6=88=B7=E6=97=B6=E5=8F=AA?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=9D=9E=E9=BB=98=E8=AE=A4=E7=94=A8=E6=88=B7?= =?UTF-8?q?IS=5FDEFAULT=3D1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ssociationWarehouseApplicationService.java | 105 ++++++++++++++++-- .../WarehouseApplicationService.java | 102 +++++++++++++++-- .../persistence/AssociationWarehouseImpl.java | 10 +- .../todo/AssociationWarehouseDO.java | 5 + .../repository/persistence/WarehouseImpl.java | 6 +- .../warehouse/WarehouseAssembler.java | 27 ++++- .../AssociationWarehouseDTO.java | 3 + .../AssociationWarehouseApi.java | 8 +- .../AssociationWarehouseMapper.xml | 9 +- 9 files changed, 241 insertions(+), 34 deletions(-) diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/associationWarehouse/AssociationWarehouseApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/associationWarehouse/AssociationWarehouseApplicationService.java index 8e76b6b23..fe77199d9 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/associationWarehouse/AssociationWarehouseApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/associationWarehouse/AssociationWarehouseApplicationService.java @@ -1,10 +1,11 @@ package com.mhd.basic.application.service.associationWarehouse; +import com.mhd.basic.application.service.warehouse.WarehouseApplicationService; import com.mhd.basic.domain.warehouse.repository.po.WarehousePO; import com.mhd.basic.domain.warehouse.repository.todo.WarehouseDO; -import com.mhd.basic.domain.warehouse.service.WarehouseDomainService; import com.mhd.common.core.enums.RoleEnum; import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.basic.common.org.OrganizationQueryScope; import com.mhd.basic.domain.associationWarehouse.repository.po.AssociationWarehousePO; import com.mhd.basic.domain.associationWarehouse.repository.todo.AssociationWarehouseDO; import com.mhd.basic.domain.associationWarehouse.service.AssociationWarehouseDomainService; @@ -16,6 +17,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -30,8 +32,76 @@ public class AssociationWarehouseApplicationService { @Autowired private AssociationWarehouseDomainService associationWarehouseDomainService; @Autowired - private WarehouseDomainService warehouseDomainService; + private WarehouseApplicationService warehouseApplicationService; + /** + * 与 {@link com.mhd.basic.application.service.materialClassify.MaterialClassifyApplicationService#queryList} 一致的组织数据权限 + */ + private void applyAssociationWarehouseOrgScope(AssociationWarehouseDO associationWarehouseDO, LoginUser loginUser) { + if (loginUser == null || loginUser.getUserPo() == null) { + return; + } + Long userOrganizationId = OrganizationQueryScope.resolveLoginOrganizationId(loginUser); + Long frontendOrganizationId = associationWarehouseDO.getOrganizationId(); + + if (userOrganizationId != null && userOrganizationId.equals(2827L)) { + if (frontendOrganizationId != null) { + associationWarehouseDO.setOrganizationId(frontendOrganizationId); + associationWarehouseDO.setTopOrganizationId(null); + } else { + associationWarehouseDO.setOrganizationId(null); + associationWarehouseDO.setTopOrganizationId(null); + } + } else { + if (frontendOrganizationId != null && userOrganizationId != null) { + if (!frontendOrganizationId.equals(userOrganizationId)) { + associationWarehouseDO.setOrganizationId(userOrganizationId); + } + } else { + if (userOrganizationId != null) { + associationWarehouseDO.setOrganizationId(userOrganizationId); + } + } + if (associationWarehouseDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + associationWarehouseDO.setTopOrganizationId(topOrganizationId); + } + } else { + associationWarehouseDO.setTopOrganizationId(null); + } + } + } + + /** + * 排除「默认仓」关联(is_default=2),与 Mapper 条件双保险,避免 OGNL/参数未绑定导致仍查出默认行。 + */ + private List filterExcludeDefaultWarehouse( + AssociationWarehouseDO associationWarehouseDO, + List list) { + if (!Boolean.TRUE.equals(associationWarehouseDO.getExcludeDefaultWarehouse()) + || list == null || list.isEmpty()) { + return list; + } + return list.stream() + .filter(po -> po.getIsDefault() == null || !Objects.equals(po.getIsDefault(), 2)) + .collect(Collectors.toList()); + } + + /** + * 按「组织 + 仓库」查该仓下全部绑定(未带 correlationId)时,默认排除新建仓自动产生的默认仓关联(is_default=2)。 + * 需要保留时显式传 excludeDefaultWarehouse=false。 + * 仅在没有显式指定 excludeDefaultWarehouse 时生效。 + */ + private void applyDefaultExcludeForWarehouseBindList(AssociationWarehouseDO associationWarehouseDO) { + if (associationWarehouseDO.getExcludeDefaultWarehouse() != null) { + return; + } + if (associationWarehouseDO.getWarehouseId() != null + && associationWarehouseDO.getCorrelationId() == null) { + associationWarehouseDO.setExcludeDefaultWarehouse(true); + } + } /** * 分页查询关联仓库列表 @@ -40,11 +110,13 @@ public class AssociationWarehouseApplicationService { public List queryList(AssociationWarehouseDO associationWarehouseDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser.getUserPo().getRoleCode().equals(RoleEnum.SUPER_ADMIN.getCode()) || loginUser.getUserPo().getRoleCode().equals(RoleEnum.PLAT_ADMIN.getCode())){ + // 与 warehouseApi/list 一致:走 WarehouseApplicationService,尊重请求中的 organizationId / top 等条件,不能使用空的 WarehouseDO 直查询库 WarehouseDO warehouseDO = new WarehouseDO(); - if (loginUser.getUserPo().getRoleCode().equals(RoleEnum.PLAT_ADMIN.getCode())){ - warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); - } - List warehousePOList = warehouseDomainService.queryList(warehouseDO); + warehouseDO.setOrganizationId(associationWarehouseDO.getOrganizationId()); + warehouseDO.setTopOrganizationId(associationWarehouseDO.getTopOrganizationId()); + warehouseDO.setWarehouseCode(associationWarehouseDO.getWarehouseCode()); + warehouseDO.setWarehouseName(associationWarehouseDO.getWarehouseName()); + List warehousePOList = warehouseApplicationService.queryList(warehouseDO); List associationWarehousePOList = new ArrayList<>(); warehousePOList.forEach(warehousePO -> { AssociationWarehousePO associationWarehousePO = new AssociationWarehousePO(); @@ -56,18 +128,27 @@ public class AssociationWarehouseApplicationService { associationWarehousePO.setTopOrganizationId(warehousePO.getTopOrganizationId()); associationWarehousePOList.add(associationWarehousePO); }); - return associationWarehousePOList; + return filterExcludeDefaultWarehouse(associationWarehouseDO, associationWarehousePOList); }else { - associationWarehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); - associationWarehouseDO.setCorrelationId(loginUser.getUserid()); - return associationWarehouseDomainService.queryList(associationWarehouseDO); + applyAssociationWarehouseOrgScope(associationWarehouseDO, loginUser); + // 未指定仓库时:只查当前登录人在关联表中的记录;指定了 warehouseId 时:查该仓下全部绑定(绑定用户列表),勿收窄为当前用户 + if (associationWarehouseDO.getWarehouseId() == null) { + associationWarehouseDO.setCorrelationId(loginUser.getUserid()); + } + applyDefaultExcludeForWarehouseBindList(associationWarehouseDO); + return filterExcludeDefaultWarehouse(associationWarehouseDO, + associationWarehouseDomainService.queryList(associationWarehouseDO)); } } public List queryListCorrelationId(AssociationWarehouseDO associationWarehouseDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - associationWarehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); - List associationWarehousePOList = associationWarehouseDomainService.queryList(associationWarehouseDO); + if (loginUser != null && loginUser.getUserPo() != null) { + applyAssociationWarehouseOrgScope(associationWarehouseDO, loginUser); + } + applyDefaultExcludeForWarehouseBindList(associationWarehouseDO); + List associationWarehousePOList = filterExcludeDefaultWarehouse(associationWarehouseDO, + associationWarehouseDomainService.queryList(associationWarehouseDO)); return associationWarehousePOList.stream() .map(AssociationWarehousePO::getCorrelationId) .collect(Collectors.toList()); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/warehouse/WarehouseApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/warehouse/WarehouseApplicationService.java index 58c70ce15..922bfd098 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/warehouse/WarehouseApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/warehouse/WarehouseApplicationService.java @@ -2,9 +2,11 @@ package com.mhd.basic.application.service.warehouse; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.mhd.basic.domain.associationWarehouse.entity.AssociationWarehouse; import com.mhd.basic.domain.associationWarehouse.repository.facade.IAssociationWarehouseService; import com.mhd.basic.domain.warehouse.repository.po.WarehousePO; +import com.mhd.basic.common.org.OrganizationQueryScope; import com.mhd.basic.domain.warehouse.repository.po.po.WarehouseLinkagePO; import com.mhd.basic.domain.warehouse.repository.todo.WarehouseDO; import com.mhd.basic.domain.warehouse.service.WarehouseDomainService; @@ -17,9 +19,12 @@ import com.mhd.system.service.ISysDictTypeService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import com.mhd.common.core.utils.StringUtils; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** @@ -46,7 +51,7 @@ public class WarehouseApplicationService { public List queryList(WarehouseDO warehouseDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null) { - Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long userOrganizationId = OrganizationQueryScope.resolveLoginOrganizationId(loginUser); Long frontendOrganizationId = warehouseDO.getOrganizationId(); // 前端传递的 organizationId // 数据权限:根据 organizationId 来设置查询权限 @@ -127,19 +132,100 @@ public class WarehouseApplicationService { /** - * 新增仓库 + * 新增仓库(写入主表后默认在 association_warehouse 绑定当前登录用户,便于按绑定关系展示) */ + @Transactional(rollbackFor = Exception.class) public Boolean insert(WarehouseDO warehouseDO) { - // 设置当前登录用户的组织信息 LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null && loginUser.getUserPo() != null) { - warehouseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); - warehouseDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); - warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (loginUser != null) { + Long orgId = OrganizationQueryScope.resolveLoginOrganizationId(loginUser); + if (orgId != null) { + warehouseDO.setOrganizationId(orgId); + } else if (loginUser.getUserPo() != null && loginUser.getUserPo().getOrganizationId() != null) { + warehouseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + } + String orgName = null; + if (loginUser.getUserPo() != null && StringUtils.isNotEmpty(loginUser.getUserPo().getOrganizationName())) { + orgName = loginUser.getUserPo().getOrganizationName(); + } + if (StringUtils.isEmpty(orgName) && loginUser.getOrganizationPo() != null) { + orgName = loginUser.getOrganizationPo().getOrganizationName(); + } + if (StringUtils.isNotEmpty(orgName)) { + warehouseDO.setOrganizationName(orgName); + } + if (loginUser.getUserPo() != null && loginUser.getUserPo().getTopOrganizationId() != null) { + warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + if (loginUser.getUserid() != null) { + if (warehouseDO.getCreateBy() == null) { + warehouseDO.setCreateBy(loginUser.getUserid()); + } + if (warehouseDO.getUpdateBy() == null) { + warehouseDO.setUpdateBy(loginUser.getUserid()); + } + } + if (StringUtils.isEmpty(warehouseDO.getCreateByName())) { + String showName = loginUser.getUsername(); + if (loginUser.getUserPo() != null && StringUtils.isNotEmpty(loginUser.getUserPo().getUserName())) { + showName = loginUser.getUserPo().getUserName(); + } + warehouseDO.setCreateByName(showName); + } + if (StringUtils.isEmpty(warehouseDO.getUpdateByName())) { + String showName = loginUser.getUsername(); + if (loginUser.getUserPo() != null && StringUtils.isNotEmpty(loginUser.getUserPo().getUserName())) { + showName = loginUser.getUserPo().getUserName(); + } + warehouseDO.setUpdateByName(showName); + } } //设置数据字典键值 setDataDict(warehouseDO); - return warehouseDomainService.insert(warehouseDO); + Boolean ok = warehouseDomainService.insert(warehouseDO); + if (Boolean.TRUE.equals(ok) && warehouseDO.getWarehouseId() != null && loginUser != null && loginUser.getUserid() != null) { + saveDefaultUserWarehouseAssociation(warehouseDO, loginUser); + } + return ok; + } + + /** + * 新增仓库后默认关联当前用户(若已存在相同仓库+用户则跳过) + */ + private void saveDefaultUserWarehouseAssociation(WarehouseDO warehouseDO, LoginUser loginUser) { + long exists = associationWarehouseService.count(new QueryWrapper().lambda() + .eq(AssociationWarehouse::getWarehouseId, warehouseDO.getWarehouseId()) + .eq(AssociationWarehouse::getCorrelationId, loginUser.getUserid()) + .eq(AssociationWarehouse::getDelFlag, 1)); + if (exists > 0) { + return; + } + String createName = loginUser.getUsername(); + if (loginUser.getUserPo() != null && StringUtils.isNotEmpty(loginUser.getUserPo().getUserName())) { + createName = loginUser.getUserPo().getUserName(); + } + // 与切换默认仓一致:先取消该用户下其它「默认」,再绑定新建仓库为默认(is_default: 1-否 2-是) + associationWarehouseService.update(null, new UpdateWrapper().lambda() + .set(AssociationWarehouse::getIsDefault, 1) + .set(AssociationWarehouse::getUpdateBy, loginUser.getUserid()) + .set(AssociationWarehouse::getUpdateByName, createName) + .eq(AssociationWarehouse::getCorrelationId, loginUser.getUserid()) + .eq(AssociationWarehouse::getIsDefault, 2) + .eq(AssociationWarehouse::getDelFlag, 1)); + AssociationWarehouse row = new AssociationWarehouse(); + row.setWarehouseId(warehouseDO.getWarehouseId()); + row.setWarehouseCode(warehouseDO.getWarehouseCode()); + row.setWarehouseName(warehouseDO.getWarehouseName()); + row.setCorrelationId(loginUser.getUserid()); + row.setOrganizationId(warehouseDO.getOrganizationId()); + row.setOrganizationName(warehouseDO.getOrganizationName()); + row.setTopOrganizationId(warehouseDO.getTopOrganizationId()); + row.setDelFlag(1); + row.setIsDefault(2); + row.setCreateBy(loginUser.getUserid()); + row.setCreateByName(createName); + row.setCreateTime(new Date()); + associationWarehouseService.save(row); } /** diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/persistence/AssociationWarehouseImpl.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/persistence/AssociationWarehouseImpl.java index 3db238689..c50c93e9d 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/persistence/AssociationWarehouseImpl.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/persistence/AssociationWarehouseImpl.java @@ -121,9 +121,13 @@ public class AssociationWarehouseImpl extends ServiceImpl().lambda() - .eq(AssociationWarehouse::getWarehouseId, associationWarehouseDO.getWarehouseId())); + // 先删该仓下「非默认仓」绑定,再批量插入本次提交的用户;保留 is_default=2(如新建仓自动写入的创建人默认仓),避免前端列表不展示该条却全量保存时被误删 + remove(new QueryWrapper().lambda() + .eq(AssociationWarehouse::getWarehouseId, associationWarehouseDO.getWarehouseId()) + .eq(AssociationWarehouse::getDelFlag, 1) + .and(w -> w.isNull(AssociationWarehouse::getIsDefault) + .or() + .ne(AssociationWarehouse::getIsDefault, 2))); } return saveBatch(associationWarehouseList); } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/todo/AssociationWarehouseDO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/todo/AssociationWarehouseDO.java index 614015ff9..83a73ecd0 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/todo/AssociationWarehouseDO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/associationWarehouse/repository/todo/AssociationWarehouseDO.java @@ -69,6 +69,11 @@ public class AssociationWarehouseDO extends BaseVOEntity{ @ApiModelProperty(name = "关联用户id集合") private List correlationIdList; + /** + * 为 true 时查询排除「默认仓」关联(is_default=2),例如绑定用户列表不展示新建仓时自动生成的创建人默认关联。 + */ + private Boolean excludeDefaultWarehouse; + @ApiModelProperty("是否批量: 1-是 2-否 ") @Excel(name = "是否批量: 1-是 2-否 ") private Integer isBatch; diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/persistence/WarehouseImpl.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/persistence/WarehouseImpl.java index d00bf4464..b2e4f4f75 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/persistence/WarehouseImpl.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/persistence/WarehouseImpl.java @@ -40,7 +40,11 @@ public class WarehouseImpl extends ServiceImpl imple public Boolean insert(WarehouseDO warehouseDO) { Warehouse warehouse = new Warehouse(); BeanUtils.copyProperties(warehouseDO,warehouse); - return this.save(warehouse); + boolean saved = this.save(warehouse); + if (saved && warehouse.getWarehouseId() != null) { + warehouseDO.setWarehouseId(warehouse.getWarehouseId()); + } + return saved; } /** diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/warehouse/WarehouseAssembler.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/warehouse/WarehouseAssembler.java index a7b494a6c..455360268 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/warehouse/WarehouseAssembler.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/warehouse/WarehouseAssembler.java @@ -1,10 +1,12 @@ package com.mhd.basic.interfaces.assember.warehouse; import cn.hutool.core.util.ObjectUtil; +import com.mhd.basic.common.org.OrganizationQueryScope; import com.mhd.basic.domain.warehouse.repository.todo.WarehouseDO; import com.mhd.basic.interfaces.dto.warehouse.WarehouseDTO; import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.StringUtils; import com.mhd.common.core.utils.bean.BeanUtils; import com.mhd.common.core.utils.IgnoreNullUtil; import com.mhd.common.security.utils.SecurityUtils; @@ -63,11 +65,26 @@ public class WarehouseAssembler { warehouseDO.setCreateBy(new Long("0")); warehouseDO.setUpdateBy(new Long("0")); } - warehouseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); - warehouseDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); - warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); - warehouseDO.setCreateByName(userName); - warehouseDO.setUpdateByName(userName); + Long orgId = OrganizationQueryScope.resolveLoginOrganizationId(loginUser); + if (orgId != null) { + warehouseDO.setOrganizationId(orgId); + } else if (loginUser.getUserPo() != null) { + warehouseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + } + String orgName = loginUser.getUserPo() != null ? loginUser.getUserPo().getOrganizationName() : null; + if (StringUtils.isEmpty(orgName) && loginUser.getOrganizationPo() != null) { + orgName = loginUser.getOrganizationPo().getOrganizationName(); + } + warehouseDO.setOrganizationName(orgName); + if (loginUser.getUserPo() != null) { + warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + String displayName = userName; + if (loginUser.getUserPo() != null && StringUtils.isNotEmpty(loginUser.getUserPo().getUserName())) { + displayName = loginUser.getUserPo().getUserName(); + } + warehouseDO.setCreateByName(displayName); + warehouseDO.setUpdateByName(displayName); warehouseDO.setCreateTime(new Date()); warehouseDO.setUpdateTime(new Date()); warehouseDO.setDelFlag(1); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/associationWarehouse/AssociationWarehouseDTO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/associationWarehouse/AssociationWarehouseDTO.java index a94ed799a..6b29e752e 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/associationWarehouse/AssociationWarehouseDTO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/associationWarehouse/AssociationWarehouseDTO.java @@ -68,4 +68,7 @@ public class AssociationWarehouseDTO extends BaseVOEntity{ @ApiModelProperty(name = "关联用户id集合") private List correlationIdList; + + @ApiModelProperty("是否排除默认仓关联(is_default=2)。按仓查询且未带 correlationId 时后端默认可为 true;需要包含默认行时传 false") + private Boolean excludeDefaultWarehouse; } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/associationWarehouse/AssociationWarehouseApi.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/associationWarehouse/AssociationWarehouseApi.java index a37c2e795..e3616e2dd 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/associationWarehouse/AssociationWarehouseApi.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/associationWarehouse/AssociationWarehouseApi.java @@ -40,19 +40,19 @@ public class AssociationWarehouseApi extends BaseController{ private AssociationWarehouseAssembler associationWarehouseAssembler; /** - * 分页查询关联仓库列表 + * 分页查询关联仓库列表。按组织+仓库(warehouseId)查该仓全部绑定时,默认不返回 is_default=2(默认仓)关联行;需要含该条时传 excludeDefaultWarehouse=false。 */ - @ApiOperation("查询关联仓库列表") + @ApiOperation("查询关联仓库列表(按仓查绑定时默认不含 is_default=2)") @GetMapping("/list") public AjaxResult list(AssociationWarehouseDTO associationWarehouseDTO) { - //转换实体 + //转换实体(组织数据权限在 AssociationWarehouseApplicationService 与其它模块对齐) AssociationWarehouseDO associationWarehouseDO = associationWarehouseAssembler.toDO(associationWarehouseDTO); List list = associationWarehouseApplicationService.queryList(associationWarehouseDO); return AjaxResult.success(list); } - @ApiOperation("查询仓库关联的用户集合") + @ApiOperation("查询仓库关联的用户 id 集合(按仓查时默认不含仅 is_default=2 的绑定)") @GetMapping("/queryListCorrelationId") public AjaxResult listUser(AssociationWarehouseDTO associationWarehouseDTO) { diff --git a/mhd-modules/mhd-system/src/main/resources/mapper/basic/associationWarehouse/AssociationWarehouseMapper.xml b/mhd-modules/mhd-system/src/main/resources/mapper/basic/associationWarehouse/AssociationWarehouseMapper.xml index 4ad59cf7a..cd2d13642 100644 --- a/mhd-modules/mhd-system/src/main/resources/mapper/basic/associationWarehouse/AssociationWarehouseMapper.xml +++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/associationWarehouse/AssociationWarehouseMapper.xml @@ -10,6 +10,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -25,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.association_warehouse_id, a.organization_id, a.organization_name, a.top_organization_id, - a.correlation_id, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.create_time, + a.correlation_id, a.is_default, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag @@ -42,9 +43,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and a.correlation_id = #{correlationId} + + and a.is_default = #{isDefault} + and a.warehouse_id = #{warehouseId} + + and (a.is_default is null or a.is_default <> 2) + and a.warehouse_code = #{warehouseCode}