From 86db4db68e50e6c58af2017c6df4ba1af6a5b105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Fri, 13 Feb 2026 09:27:12 +0800 Subject: [PATCH 01/49] =?UTF-8?q?=E6=89=8B=E5=8A=A8=E5=88=86=E9=85=8D?= =?UTF-8?q?=E5=AD=90=E9=A1=B9=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ShiftMaterialDetailApplicationService.java | 46 +++++++++++-- .../persistence/ShiftManageImpl.java | 69 ++++++++++++++++++- 2 files changed, 108 insertions(+), 7 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftMaterialDetail/ShiftMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftMaterialDetail/ShiftMaterialDetailApplicationService.java index 256f592ea..08f0fae37 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftMaterialDetail/ShiftMaterialDetailApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftMaterialDetail/ShiftMaterialDetailApplicationService.java @@ -119,7 +119,7 @@ public class ShiftMaterialDetailApplicationService { } // 性能优化:批量获取批次属性,避免N+1查询问题 - // 1. 收集所有唯一的materialBaseInfoId + // 1. 收集所有唯一的materialBaseInfoId(包括子项的,此时子项还未构建,所以直接遍历所有项) Set materialBaseInfoIdSet = list.stream() .map(ShiftMaterialDetailPO::getMaterialBaseInfoId) .filter(Objects::nonNull) @@ -146,18 +146,47 @@ public class ShiftMaterialDetailApplicationService { } } - // 3. 为每个物料明细设置更多属性(从库存表中获取值) - setMaterialMoreDetailListFromInventory(list, batchDetailMap); + // 3. 构建父子关系(类似queryListChildren的逻辑) + List parentList = list.stream() + .filter(e -> e.getLevel() != null && e.getLevel() == 1) + .collect(Collectors.toList()); - return list; + // 递归构建子项关系 + parentList.forEach(parent -> { + List children = getChildren(parent.getUniqueId(), list, 2); + parent.setChildren(children); + }); + + // 4. 为每个物料明细(包括子项)设置更多属性(从库存表中获取值) + setMaterialMoreDetailListFromInventoryRecursively(parentList, batchDetailMap); + + return parentList; } /** - * 为移位物料明细设置更多属性(从库存表中获取值) + * 递归获取子项 + */ + private List getChildren(Long parentUniqueId, List allList, Integer maxLevel) { + List childrenList = allList.stream() + .filter(materialDetailPO -> parentUniqueId != null && parentUniqueId.equals(materialDetailPO.getParentUniqueId())) + .collect(Collectors.toList()); + + if (!CollectionUtils.isEmpty(childrenList)) { + childrenList.forEach(child -> { + if (child.getLevel() != null && child.getLevel() < maxLevel) { + child.setChildren(getChildren(child.getUniqueId(), allList, maxLevel)); + } + }); + } + return childrenList; + } + + /** + * 为移位物料明细设置更多属性(从库存表中获取值),递归处理子项 * @param shiftMaterialDetailPOList 移位物料明细列表 * @param batchDetailMap 批次属性Map */ - private void setMaterialMoreDetailListFromInventory(List shiftMaterialDetailPOList, + private void setMaterialMoreDetailListFromInventoryRecursively(List shiftMaterialDetailPOList, Map> batchDetailMap) { if (CollectionUtils.isEmpty(shiftMaterialDetailPOList)) { return; @@ -235,6 +264,11 @@ public class ShiftMaterialDetailApplicationService { shiftMaterialDetailPO.getUniqueId(), shiftMaterialDetailPO.getMaterialBaseInfoId(), shiftMaterialDetailPO.getMaterialInventoryId(), materialMoreDetailList != null ? materialMoreDetailList.size() : 0); + + // 递归处理子项 + if (!CollectionUtils.isEmpty(shiftMaterialDetailPO.getChildren())) { + setMaterialMoreDetailListFromInventoryRecursively(shiftMaterialDetailPO.getChildren(), batchDetailMap); + } }); } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/persistence/ShiftManageImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/persistence/ShiftManageImpl.java index 1e0f11c85..69edf470c 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/persistence/ShiftManageImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/persistence/ShiftManageImpl.java @@ -41,6 +41,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; @@ -113,7 +114,9 @@ public class ShiftManageImpl extends ServiceImpl setWarehouseInfo(e); //设置物料信息 setMaterialDetailInfo(e); - e.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + // 设置父级信息 + Long parentUniqueId = idGenerator.snowflakeId(SnowFlakeConstants.wmsId); + e.setUniqueId(parentUniqueId); e.setShiftNumber(shiftManage.getShiftNumber()); e.setOrganizationId(loginUser.getUserPo().getOrganizationId()); e.setOrganizationName(loginUser.getUserPo().getOrganizationName()); @@ -125,10 +128,74 @@ public class ShiftManageImpl extends ServiceImpl e.setUpdateBy(loginUser.getUserid()); e.setUpdateTime(new Date()); e.setSerialNumberManage(e.getSerialNumberManage()); + // 设置父级level为1 + if (e.getLevel() == null) { + e.setLevel(1); + } ShiftMaterialDetail shiftMaterialDetail = new ShiftMaterialDetail(); BeanUtils.copyProperties(e, shiftMaterialDetail); shiftMaterialDetail.setNewStorageLocationName(newStorageLocationName); shiftMaterialDetailList.add(shiftMaterialDetail); + + // 处理子项 + List shiftMaterialDetailDOChildList = e.getChildren(); + if (!CollectionUtils.isEmpty(shiftMaterialDetailDOChildList)) { + for (ShiftMaterialDetailDO shiftMaterialDetailDOChild : shiftMaterialDetailDOChildList) { + // 如果子项没有materialInventoryId,则从父级继承库存相关信息 + if (shiftMaterialDetailDOChild.getMaterialInventoryId() == null) { + // 从父级继承库存相关信息 + shiftMaterialDetailDOChild.setMaterialInventoryId(e.getMaterialInventoryId()); + shiftMaterialDetailDOChild.setMaterialBaseInfoId(e.getMaterialBaseInfoId()); + shiftMaterialDetailDOChild.setMaterialCode(e.getMaterialCode()); + shiftMaterialDetailDOChild.setMaterialName(e.getMaterialName()); + shiftMaterialDetailDOChild.setBarCode(e.getBarCode()); + shiftMaterialDetailDOChild.setInventoryQuantity(e.getInventoryQuantity()); + shiftMaterialDetailDOChild.setOldWarehouseId(e.getOldWarehouseId()); + shiftMaterialDetailDOChild.setOldWarehouseCode(e.getOldWarehouseCode()); + shiftMaterialDetailDOChild.setOldWarehouseName(e.getOldWarehouseName()); + shiftMaterialDetailDOChild.setOldStorageSectionId(e.getOldStorageSectionId()); + shiftMaterialDetailDOChild.setOldStorageCode(e.getOldStorageCode()); + shiftMaterialDetailDOChild.setOldStorageName(e.getOldStorageName()); + shiftMaterialDetailDOChild.setOldStorageLocationId(e.getOldStorageLocationId()); + shiftMaterialDetailDOChild.setOldStorageLocationCode(e.getOldStorageLocationCode()); + shiftMaterialDetailDOChild.setOldStorageLocationName(e.getOldStorageLocationName()); + shiftMaterialDetailDOChild.setBatchNumber(e.getBatchNumber()); + shiftMaterialDetailDOChild.setMaterialStatusCode(e.getMaterialStatusCode()); + shiftMaterialDetailDOChild.setMaterialStatusName(e.getMaterialStatusName()); + shiftMaterialDetailDOChild.setContainerId(e.getContainerId()); + shiftMaterialDetailDOChild.setContainerCode(e.getContainerCode()); + shiftMaterialDetailDOChild.setContainerType(e.getContainerType()); + shiftMaterialDetailDOChild.setContainerTypeName(e.getContainerTypeName()); + } else { + // 如果子项有materialInventoryId,则设置库存信息 + setMaterialInventory(shiftMaterialDetailDOChild); + } + // 设置库位信息和物料信息 + setWarehouseInfo(shiftMaterialDetailDOChild); + setMaterialDetailInfo(shiftMaterialDetailDOChild); + + // 设置子项的uniqueId和parentUniqueId + Long childUniqueId = idGenerator.snowflakeId(SnowFlakeConstants.wmsId); + shiftMaterialDetailDOChild.setUniqueId(childUniqueId); + shiftMaterialDetailDOChild.setParentUniqueId(parentUniqueId); + shiftMaterialDetailDOChild.setShiftNumber(shiftManage.getShiftNumber()); + shiftMaterialDetailDOChild.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + shiftMaterialDetailDOChild.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + shiftMaterialDetailDOChild.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + shiftMaterialDetailDOChild.setCreateByName(loginUser.getUsername()); + shiftMaterialDetailDOChild.setCreateBy(loginUser.getUserid()); + shiftMaterialDetailDOChild.setCreateTime(new Date()); + shiftMaterialDetailDOChild.setUpdateByName(loginUser.getUsername()); + shiftMaterialDetailDOChild.setUpdateBy(loginUser.getUserid()); + shiftMaterialDetailDOChild.setUpdateTime(new Date()); + // 设置子项level为2 + shiftMaterialDetailDOChild.setLevel(2); + + ShiftMaterialDetail shiftMaterialDetailChild = new ShiftMaterialDetail(); + BeanUtils.copyProperties(shiftMaterialDetailDOChild, shiftMaterialDetailChild); + shiftMaterialDetailList.add(shiftMaterialDetailChild); + } + } }); iShiftMaterialDetailService.saveBatch(shiftMaterialDetailList); Boolean b; From 766a401d9ad62bc4c3af43cba1aee4225763fc0a 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, 23 Feb 2026 14:09:45 +0800 Subject: [PATCH 02/49] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E5=8D=95=E7=9A=84=E8=AE=A1=E5=88=92=E5=85=A5=E5=BA=93=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/persistence/InMaterialDetailImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/persistence/InMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/persistence/InMaterialDetailImpl.java index d02e44bbc..8236b5e2a 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/persistence/InMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/persistence/InMaterialDetailImpl.java @@ -147,6 +147,10 @@ public class InMaterialDetailImpl extends ServiceImpl Date: Mon, 23 Feb 2026 14:18:15 +0800 Subject: [PATCH 03/49] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9D=83=E9=99=90=E9=9A=94=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Lease/LeaseApplicationService.java | 34 ++++++------------- .../StorageLocationApplicationService.java | 16 +++++++-- ...torageLocationGroupApplicationService.java | 25 ++++++++++---- .../StorageSectionApplicationService.java | 16 ++++++--- .../WarehouseApplicationService.java | 16 ++++++--- 5 files changed, 66 insertions(+), 41 deletions(-) diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java index f64ace339..0f4938221 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java @@ -76,29 +76,17 @@ public class LeaseApplicationService { public List queryList(LeaseDO leaseDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null && loginUser.getUserPo() != null){ - Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId(); - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - - // 数据权限:根据organizationId来设置查询权限 - // organizationId等于2827时查询全部,其他仅查询各自组织的信息 - if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) { - // 南光组织(organizationId=2827):可以查询所有组织的数据 - // 如果前端传递了 organizationId,使用前端传递的值进行过滤 - // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 - if (leaseDO.getOrganizationId() == null) { - leaseDO.setOrganizationId(null); - leaseDO.setTopOrganizationId(null); - } - } else { - // 其他组织:设置organizationId,只查询当前组织的数据 - if (topOrganizationId != null && topOrganizationId != 1){ - leaseDO.setTopOrganizationId(topOrganizationId); - } - // 如果前端传递了organizationId,验证是否与当前登录用户的组织ID一致 - if (leaseDO.getOrganizationId() != null && !leaseDO.getOrganizationId().equals(loginUserOrganizationId)) { - // 前端传递了其他组织的organizationId,强制使用当前登录用户的组织ID,防止越权查询 - leaseDO.setOrganizationId(loginUserOrganizationId); + //前端传organizationId = 2827的时候查询所有组织的数据 + Long frontendOrganizationId = leaseDO.getOrganizationId(); + if (frontendOrganizationId != null && frontendOrganizationId == 2827L) { + // 前端传递2827时,查询所有组织的数据,将organizationId设置为null + leaseDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + if (userOrganizationId != null) { + leaseDO.setOrganizationId(userOrganizationId); } } } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java index 2d69d28eb..d1b436aab 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java @@ -45,9 +45,19 @@ public class StorageLocationApplicationService { public List queryList(StorageLocationDO storageLocationDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null){ - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - storageLocationDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + //前端传organizationId = 2827的时候查询所有组织的数据 + Long frontendOrganizationId = storageLocationDO.getOrganizationId(); + if (frontendOrganizationId != null && frontendOrganizationId == 2827L) { + // 前端传递2827时,查询所有组织的数据,将organizationId设置为null + storageLocationDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + if (userOrganizationId != null) { + storageLocationDO.setOrganizationId(userOrganizationId); + } + } } // 只有当前端没有明确传仓库条件时,才使用用户关联仓库缓存进行过滤; // 避免出现“单据仓库=常温仓,但库位列表仍显示保税仓”的错配问题。 diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocationGroup/StorageLocationGroupApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocationGroup/StorageLocationGroupApplicationService.java index 68e902720..4fa0fc453 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocationGroup/StorageLocationGroupApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocationGroup/StorageLocationGroupApplicationService.java @@ -28,14 +28,25 @@ public class StorageLocationGroupApplicationService { public List queryList(StorageLocationGroupDO storageLocationGroupDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - storageLocationGroupDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + //前端传organizationId = 2827的时候查询所有组织的数据 + Long frontendOrganizationId = storageLocationGroupDO.getOrganizationId(); + if (frontendOrganizationId != null && frontendOrganizationId == 2827L) { + // 前端传递2827时,查询所有组织的数据,将organizationId设置为null + storageLocationGroupDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + if (userOrganizationId != null) { + storageLocationGroupDO.setOrganizationId(userOrganizationId); + } } - Long organizationId = loginUser.getUserPo().getOrganizationId(); - if (organizationId != null && organizationId != 1){ - storageLocationGroupDO.setOrganizationId(organizationId); + } + // 处理topOrganizationId逻辑 + if (loginUser != null && loginUser.getUserPo() != null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + storageLocationGroupDO.setTopOrganizationId(topOrganizationId); } } return storageLocationGroupDomainService.queryList(storageLocationGroupDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageSection/StorageSectionApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageSection/StorageSectionApplicationService.java index 4df1b92dc..28f4f5d49 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageSection/StorageSectionApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageSection/StorageSectionApplicationService.java @@ -43,10 +43,18 @@ public class StorageSectionApplicationService { public List queryList(StorageSectionDO storageSectionDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - storageSectionDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + //前端传organizationId = 2827的时候查询所有组织的数据 + Long frontendOrganizationId = storageSectionDO.getOrganizationId(); + if (frontendOrganizationId != null && frontendOrganizationId == 2827L) { + // 前端传递2827时,查询所有组织的数据,将organizationId设置为null + storageSectionDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + if (userOrganizationId != null) { + storageSectionDO.setOrganizationId(userOrganizationId); + } } } return storageSectionDomainService.queryList(storageSectionDO); 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 7765d64bb..313f91bd9 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 @@ -42,10 +42,18 @@ public class WarehouseApplicationService { public List queryList(WarehouseDO warehouseDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ - Long organizationId = loginUser.getUserPo().getOrganizationId(); - if (organizationId != null && organizationId != 1){ - warehouseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + //前端传organizationId = 2827的时候查询所有组织的数据 + Long frontendOrganizationId = warehouseDO.getOrganizationId(); + if (frontendOrganizationId != null && frontendOrganizationId == 2827L) { + // 前端传递2827时,查询所有组织的数据,将organizationId设置为null + warehouseDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + if (userOrganizationId != null) { + warehouseDO.setOrganizationId(userOrganizationId); + } } } return warehouseDomainService.queryList(warehouseDO); From c110ab5dcc67005b3479cacad4f380accdeab635 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, 23 Feb 2026 14:23:18 +0800 Subject: [PATCH 04/49] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=8C=96=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Lease/LeaseApplicationService.java | 80 +++++++++---------- 1 file changed, 39 insertions(+), 41 deletions(-) diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java index 0f4938221..2f6355a0e 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java @@ -43,7 +43,7 @@ import java.util.stream.Collectors; /** * 租赁管理ApplicationService - * + * * @author gen * @date 2024-05-07 */ @@ -67,8 +67,9 @@ public class LeaseApplicationService { private StorageSectionApplicationService storageSectionApplicationService; @Autowired - private IShipperLeaseDetailsService shipperLeaseDetailsService; - + private IShipperLeaseDetailsService shipperLeaseDetailsService; + @Autowired + private SystemServiceFeign systemServiceFeign; /** * 分页查询租赁管理列表 @@ -77,23 +78,24 @@ public class LeaseApplicationService { public List queryList(LeaseDO leaseDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); //前端传organizationId = 2827的时候查询所有组织的数据 - Long frontendOrganizationId = leaseDO.getOrganizationId(); - if (frontendOrganizationId != null && frontendOrganizationId == 2827L) { - // 前端传递2827时,查询所有组织的数据,将organizationId设置为null - leaseDO.setOrganizationId(null); - } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (loginUser != null && loginUser.getUserPo() != null) { - Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - if (userOrganizationId != null) { - leaseDO.setOrganizationId(userOrganizationId); + if (loginUser != null) { + Long frontendOrganizationId = leaseDO.getOrganizationId(); + if (frontendOrganizationId != null && frontendOrganizationId == 2827L) { + // 前端传递2827时,查询所有组织的数据,将organizationId设置为null + leaseDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + if (userOrganizationId != null) { + leaseDO.setOrganizationId(userOrganizationId); + } } } } return leaseDomainService.queryList(leaseDO); } - /** * 新增租赁管理 */ @@ -113,12 +115,9 @@ public class LeaseApplicationService { return leaseDomainService.insert(leaseDO); } - @Autowired - private SystemServiceFeign systemServiceFeign; - private void setWarehouseInfo(LeaseDO leaseDO) { AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(leaseDO.getWarehouseId()); - if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + if (!"200".equals(String.valueOf(ajaxResult.get("code")))) { throw new ServiceException("获取仓库信息失败"); } WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class); @@ -158,19 +157,18 @@ public class LeaseApplicationService { /** * 获取租赁管理详细信息 */ - public LeasePO getInfo(Long leaseId) - { + public LeasePO getInfo(Long leaseId) { return leaseDomainService.getInfo(leaseId); } /** + * @param leaseIds + * @return Boolean * @description 批量作废租赁 * @author ZhouGY * @date 2024/5/13 9:46 - * @param leaseIds - * @return Boolean */ - public Boolean nullifyByIds(List leaseIds){ + public Boolean nullifyByIds(List leaseIds) { return leaseDomainService.nullifyByIds(leaseIds); } @@ -184,8 +182,8 @@ public class LeaseApplicationService { log.info("开始执行货主租赁明细定时任务"); // 计算前一天的日期,将时间设置为当天的0点0分0秒,只保留日期部分 final Date yesterday = DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -1)); - - LeaseDO leaseDO = new LeaseDO(); + + LeaseDO leaseDO = new LeaseDO(); leaseDO.setTime(yesterday); //查询有效期内的租赁 List leasePOS = queryList(leaseDO); @@ -195,10 +193,10 @@ public class LeaseApplicationService { List casualRental = leasePOS.stream() .filter(lease -> lease.getLeaseType().equals("散租")) .collect(Collectors.toList()); - + List shipperLeaseDetailsList = new ArrayList<>(); //需要保存或更新的数据 List shipperLeaseDetailsToUpdate = new ArrayList<>(); //需要更新的数据 - + // 查询已存在的货主租赁明细数据(用于判断是新增还是更新) ShipperLeaseDetailsDO queryDO = new ShipperLeaseDetailsDO(); queryDO.setBusinessDate(yesterday); @@ -206,18 +204,18 @@ public class LeaseApplicationService { // 构建已存在数据的Map,key为:业务日期+货主ID+仓库ID+租赁类型 Map existingMap = existingList.stream() .collect(Collectors.toMap( - item -> buildKey(yesterday, item.getShipperId(), item.getWarehouseId(), item.getLeaseType()), - item -> item, - (existing, replacement) -> existing // 如果有重复key,保留第一个 + item -> buildKey(yesterday, item.getShipperId(), item.getWarehouseId(), item.getLeaseType()), + item -> item, + (existing, replacement) -> existing // 如果有重复key,保留第一个 )); - + // 处理整租 for (LeasePO en : entireUnit) { String key = buildKey(yesterday, en.getShipperId(), en.getWarehouseId(), en.getLeaseType()); ShipperLeaseDetails shipperLeaseDetails = new ShipperLeaseDetails(); BeanUtils.copyProperties(en, shipperLeaseDetails); shipperLeaseDetails.setBusinessDate(yesterday); - + // 如果已存在,则更新;否则新增 if (existingMap.containsKey(key)) { ShipperLeaseDetailsPO existing = existingMap.get(key); @@ -227,7 +225,7 @@ public class LeaseApplicationService { shipperLeaseDetailsList.add(shipperLeaseDetails); } } - + // 处理散租:从租赁管理页面维护的面积,效期内的散租客户面积之和 for (LeasePO ca : casualRental) { String key = buildKey(yesterday, ca.getShipperId(), ca.getWarehouseId(), ca.getLeaseType()); @@ -237,7 +235,7 @@ public class LeaseApplicationService { // 散租面积直接使用租赁管理页面维护的面积 shipperLeaseDetails.setLeaseArea(ca.getLeaseArea()); log.info("货主:{},仓库:{},散租面积:{}(来自租赁管理)", ca.getCargoOwnerName(), ca.getWarehouseName(), ca.getLeaseArea()); - + // 如果已存在,则更新;否则新增 if (existingMap.containsKey(key)) { ShipperLeaseDetailsPO existing = existingMap.get(key); @@ -247,22 +245,22 @@ public class LeaseApplicationService { shipperLeaseDetailsList.add(shipperLeaseDetails); } } - + // 批量新增货主租赁明细 if (shipperLeaseDetailsList.size() > 0) { shipperLeaseDetailsService.saveBatch(shipperLeaseDetailsList); log.info("新增货主租赁明细{}条", shipperLeaseDetailsList.size()); } - + // 批量更新货主租赁明细 if (shipperLeaseDetailsToUpdate.size() > 0) { shipperLeaseDetailsService.updateBatchById(shipperLeaseDetailsToUpdate); log.info("更新货主租赁明细{}条", shipperLeaseDetailsToUpdate.size()); } - + log.info("货主租赁明细定时任务执行完成,业务日期:{}", DateUtil.formatDate(yesterday)); } - + /** * 构建唯一key:业务日期+货主ID+仓库ID+租赁类型 */ @@ -293,7 +291,7 @@ public class LeaseApplicationService { ); //获取总面积 BigDecimal totalArea = BigDecimal.ZERO; - StorageSectionDO storageSectionDO = new StorageSectionDO(); + StorageSectionDO storageSectionDO = new StorageSectionDO(); storageSectionDO.setWarehouseId(shipperLeaseDetailsDO.getWarehouseId()); storageSectionDO.setOpeningUp(1); List storageSectionPOS = storageSectionApplicationService.queryList(storageSectionDO); @@ -311,9 +309,9 @@ public class LeaseApplicationService { BigDecimal fractionalLeaseArea = BigDecimal.ZERO; //计算整租和散租 for (ShipperLeaseDetailsPO shipperLeaseDetail : shipperLeaseDetails) { - if (shipperLeaseDetail.getLeaseType().equals("整租")){ + if (shipperLeaseDetail.getLeaseType().equals("整租")) { entireLeaseArea = entireLeaseArea.add(shipperLeaseDetail.getLeaseArea()); - }else { + } else { fractionalLeaseArea = fractionalLeaseArea.add(shipperLeaseDetail.getLeaseArea()); } warehouseOccupancyRate.setWarehouseName(shipperLeaseDetail.getWarehouseName()); From 135bd5d380616bf61335108c14c8a31ed63c748a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 24 Feb 2026 08:52:28 +0800 Subject: [PATCH 05/49] =?UTF-8?q?=E5=85=A5=E5=BA=93=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E9=9A=94=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StockInOrderApplicationService.java | 16 ++++++++++++++-- .../StockReceiptOrderApplicationService.java | 16 ++++++++++++++-- .../StockShelfOrderApplicationService.java | 15 +++++++++++++-- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java index 305a161a0..6e1ad45b2 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java @@ -68,10 +68,22 @@ public class StockInOrderApplicationService { public List queryList(StockInOrderDO stockInOrderDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ + if (loginUser != null && loginUser.getUserPo() != null){ + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + stockInOrderDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + stockInOrderDO.setOrganizationId(userOrganizationId); + } + } + // 处理topOrganizationId逻辑 Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); if (topOrganizationId != null && topOrganizationId != 1){ - stockInOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + stockInOrderDO.setTopOrganizationId(topOrganizationId); } // 前端有传warehouseId则优先使用传参;未传时才使用"用户关联仓库"作为默认值 if (stockInOrderDO.getWarehouseId() == null) { diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java index d3333ed15..3c17f2efc 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java @@ -91,10 +91,22 @@ public class StockReceiptOrderApplicationService { public List queryList(StockReceiptOrderDO stockReceiptOrderDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ + if (loginUser != null && loginUser.getUserPo() != null){ + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + stockReceiptOrderDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + stockReceiptOrderDO.setOrganizationId(userOrganizationId); + } + } + // 处理topOrganizationId逻辑 Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); if (topOrganizationId != null && topOrganizationId != 1){ - stockReceiptOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + stockReceiptOrderDO.setTopOrganizationId(topOrganizationId); } try { AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java index 22acbc228..53a3b5443 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java @@ -97,10 +97,21 @@ public class StockShelfOrderApplicationService { public List queryList(StockShelfOrderDO stockShelfOrderDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ + if (loginUser != null && loginUser.getUserPo() != null){ + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + stockShelfOrderDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + stockShelfOrderDO.setOrganizationId(userOrganizationId); + } + } Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); if (topOrganizationId != null && topOrganizationId != 1){ - stockShelfOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + stockShelfOrderDO.setTopOrganizationId(topOrganizationId); } try { AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); From 1fb2a21e9702deee69775e7f12ba181865492249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 24 Feb 2026 09:30:19 +0800 Subject: [PATCH 06/49] =?UTF-8?q?=E5=87=BA=E5=BA=93=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E9=9A=94=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HandoverTaskOrderApplicationService.java | 17 ++++++++++++++--- .../PickingOrderApplicationService.java | 19 ++++++++++++++----- .../StockOutOrderApplicationService.java | 17 +++++++++++++++++ .../StockOutTaskOrderApplicationService.java | 17 ++++++++++++++--- 4 files changed, 59 insertions(+), 11 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java index a2abba9fe..c4567e89f 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java @@ -63,10 +63,21 @@ public class HandoverTaskOrderApplicationService { public List queryList(HandoverTaskOrderDO handoverTaskOrderDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + handoverTaskOrderDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + handoverTaskOrderDO.setOrganizationId(userOrganizationId); + } + } Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - handoverTaskOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (topOrganizationId != null && topOrganizationId != 1) { + handoverTaskOrderDO.setTopOrganizationId(topOrganizationId); } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); handoverTaskOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java index a4237991d..61aaac165 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java @@ -61,13 +61,22 @@ public class PickingOrderApplicationService { public List queryList(PickingOrderDO pickingOrderDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + pickingOrderDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + pickingOrderDO.setOrganizationId(userOrganizationId); + } + } Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - pickingOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (topOrganizationId != null && topOrganizationId != 1) { + pickingOrderDO.setTopOrganizationId(topOrganizationId); } - //AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); - //pickingOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); } List pickingOrderPOList = pickingOrderDomainService.queryList(pickingOrderDO); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java index d24d10301..b02a7b624 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java @@ -85,6 +85,23 @@ public class StockOutOrderApplicationService { AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); stockOutOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); }*/ + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + stockOutOrderDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + stockOutOrderDO.setOrganizationId(userOrganizationId); + } + } + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + stockOutOrderDO.setTopOrganizationId(topOrganizationId); + } + } return stockOutOrderDomainService.queryList(stockOutOrderDO); } diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java index 3d4a4bdfa..bb7423128 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java @@ -46,10 +46,21 @@ public class StockOutTaskOrderApplicationService { public List queryList(StockOutTaskOrderDO stockOutTaskOrderDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + stockOutTaskOrderDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + stockOutTaskOrderDO.setOrganizationId(userOrganizationId); + } + } Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - stockOutTaskOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (topOrganizationId != null && topOrganizationId != 1) { + stockOutTaskOrderDO.setTopOrganizationId(topOrganizationId); } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); stockOutTaskOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); From a3a1ec190b5a78f18bbbecf3a5e94911f3a598ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 24 Feb 2026 09:50:34 +0800 Subject: [PATCH 07/49] =?UTF-8?q?=E5=BA=93=E5=86=85=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E9=9A=94?= =?UTF-8?q?=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DifferentManageApplicationService.java | 15 +++++++++++++-- .../InvestigationManageApplicationService.java | 15 +++++++++++++-- .../ShiftManageApplicationService.java | 17 ++++++++++++++--- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java index 34cf8d9ab..3b21a29e6 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java @@ -32,10 +32,21 @@ public class DifferentManageApplicationService { public List queryList(DifferentManageDO differentManageDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null) { + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + differentManageDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + differentManageDO.setOrganizationId(userOrganizationId); + } + } Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); if (topOrganizationId != null && topOrganizationId != 1) { - differentManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + differentManageDO.setTopOrganizationId(topOrganizationId); } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); differentManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java index e753bf178..9108b6750 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java @@ -64,10 +64,21 @@ public class InvestigationManageApplicationService { public List queryList(InvestigationManageDO investigationManageDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null) { + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + investigationManageDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + investigationManageDO.setOrganizationId(userOrganizationId); + } + } Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); if (topOrganizationId != null && topOrganizationId != 1) { - investigationManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + investigationManageDO.setTopOrganizationId(topOrganizationId); } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); investigationManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java index 5af67514e..0c84bc688 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java @@ -67,10 +67,21 @@ public class ShiftManageApplicationService { public List queryList(ShiftManageDO shiftManageDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + shiftManageDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + shiftManageDO.setOrganizationId(userOrganizationId); + } + } Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - shiftManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (topOrganizationId != null && topOrganizationId != 1) { + shiftManageDO.setTopOrganizationId(topOrganizationId); } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); shiftManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); From 3a577b5ed77565029a9789380fbcc984ee300590 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 24 Feb 2026 13:29:51 +0800 Subject: [PATCH 08/49] =?UTF-8?q?=E4=B8=8A=E6=9E=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=89=A9=E6=96=99=E6=9D=A1=E7=A0=81=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MaterialInventoryApplicationService.java | 18 +++++-- .../persistence/MaterialBarCodeImpl.java | 53 +++++++++++++++---- 2 files changed, 58 insertions(+), 13 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java index 80c489e30..11667a13e 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java @@ -51,12 +51,24 @@ public class MaterialInventoryApplicationService { public List queryList(MaterialInventoryDO materialInventoryDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ + if (loginUser != null && loginUser.getUserPo() != null){ + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + materialInventoryDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + materialInventoryDO.setOrganizationId(userOrganizationId); + } + } + // 处理topOrganizationId逻辑 Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); if (topOrganizationId != null && topOrganizationId != 1){ - materialInventoryDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + materialInventoryDO.setTopOrganizationId(topOrganizationId); } - // 前端有传warehouseId则优先使用传参;未传时才使用“用户关联仓库”作为默认值 + // 前端有传warehouseId则优先使用传参;未传时才使用"用户关联仓库"作为默认值 if (materialInventoryDO.getWarehouseId() == null) { AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/persistence/MaterialBarCodeImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/persistence/MaterialBarCodeImpl.java index 858ffed5f..a68b651c7 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/persistence/MaterialBarCodeImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/persistence/MaterialBarCodeImpl.java @@ -75,26 +75,54 @@ public class MaterialBarCodeImpl extends ServiceImpl().lambda() - .set(MaterialBarCode::getDelFlag, 2) - .set(MaterialBarCode::getUpdateBy, loginUser.getUserid()) - .set(MaterialBarCode::getUpdateByName, loginUser.getUsername()) - .set(MaterialBarCode::getUpdateTime, new Date()) - .eq(MaterialBarCode::getMaterialBaseInfoId, materialBarCodeDOList.get(0).getMaterialBaseInfoId()) - .eq(MaterialBarCode::getDelFlag, 1)); + Long materialBaseInfoId = materialBarCodeDOList.get(0).getMaterialBaseInfoId(); + + // 先物理删除该物料的所有旧条码记录(包括已标记删除的),避免唯一性约束冲突 + // 因为唯一性约束 IDX_MATERIAL_BASE_ID_BAR_CODE 可能检查所有记录(包括 delFlag=2 的记录) + // 使用 Mapper 的 delete 方法进行物理删除,绕过逻辑删除拦截器 + materialBarCodeMapper.delete(new QueryWrapper().lambda() + .eq(MaterialBarCode::getMaterialBaseInfoId, materialBaseInfoId)); + + // 去重处理:确保没有重复的 material_base_info_id + bar_code 组合 + // 使用 LinkedHashMap 保持顺序,对所有记录进行去重 + // 对于 barCode 为 null 的记录,使用 packDetailId 来区分(因为唯一性约束可能不允许多个 null) + java.util.Map uniqueMap = new java.util.LinkedHashMap<>(); List materialBarCodeList = new ArrayList<>(); + for (MaterialBarCodeDO materialBarCodeDO : materialBarCodeDOList){ + String barCode = materialBarCodeDO.getBarCode(); + String key; + // 构建唯一性 key:material_base_info_id + bar_code + // 如果 barCode 为 null 或空,使用 packDetailId 来区分,避免多条 null 值违反唯一性约束 + if (barCode != null && !barCode.trim().isEmpty()) { + key = materialBaseInfoId + "_" + barCode.trim(); + } else { + // barCode 为 null 或空时,使用 packDetailId 来区分 + // 如果 packDetailId 也为 null,则使用固定值(只保留第一条) + Long packDetailId = materialBarCodeDO.getPackDetailId(); + key = materialBaseInfoId + "_null_" + (packDetailId != null ? packDetailId : "empty"); + } + // 如果已存在相同的组合,跳过(保留第一个),避免违反唯一性约束 + if (uniqueMap.containsKey(key)) { + continue; + } + // 创建新的条码记录 MaterialBarCode materialBarCode = new MaterialBarCode(); - BeanUtils.copyProperties(materialBarCodeDO,materialBarCode); + BeanUtils.copyProperties(materialBarCodeDO, materialBarCode); materialBarCode.setOrganizationId(userPo.getOrganizationId()); materialBarCode.setOrganizationName(userPo.getOrganizationName()); materialBarCode.setTopOrganizationId(userPo.getTopOrganizationId()); materialBarCode.setCreateBy(loginUser.getUserid()); materialBarCode.setCreateByName(loginUser.getUsername()); materialBarCode.setCreateTime(new Date()); + materialBarCode.setDelFlag(1); + // 添加到去重 Map 和列表 + uniqueMap.put(key, materialBarCode); materialBarCodeList.add(materialBarCode); } + if (CollectionUtils.isEmpty(materialBarCodeList)) { + return true; + } return this.saveBatch(materialBarCodeList); } @@ -157,7 +185,12 @@ public class MaterialBarCodeImpl extends ServiceImpl materialBarCodePOList = new ArrayList<>(); - BeanUtils.copyProperties(materialBarCodeList,materialBarCodePOList); + // 遍历列表,逐个复制每个对象的属性 + for (MaterialBarCode materialBarCode : materialBarCodeList) { + MaterialBarCodePO materialBarCodePO = new MaterialBarCodePO(); + BeanUtils.copyProperties(materialBarCode, materialBarCodePO); + materialBarCodePOList.add(materialBarCodePO); + } return materialBarCodePOList; } } From 38b4595d9d15602f8706d1fb2a5732e464351841 Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Tue, 24 Feb 2026 13:43:56 +0800 Subject: [PATCH 09/49] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B5=81=E6=B0=B4?= =?UTF-8?q?=E6=80=BB=E6=B1=87=E8=BE=BE=E6=A2=A6=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E4=B8=8D=E6=94=AF=E6=8C=81GROUP=5FCONCAT=E5=87=BD=E6=95=B0sql?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mhd_bms/src/main/resources/mapper/BillingStatementMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mhd_bms/src/main/resources/mapper/BillingStatementMapper.xml b/mhd_bms/src/main/resources/mapper/BillingStatementMapper.xml index 80e1e6918..0c3305957 100644 --- a/mhd_bms/src/main/resources/mapper/BillingStatementMapper.xml +++ b/mhd_bms/src/main/resources/mapper/BillingStatementMapper.xml @@ -41,7 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select SUM( IF(account_expense_type=1,billing_amount,0)) receivable, SUM( IF(account_expense_type=2,billing_amount,0)) feesPayable, - GROUP_CONCAT(billing_state) AS billingStateCount, + WM_CONCAT(billing_state) AS billingStateCount, settlement_entity,settlement_customers_code,SUM(billing_amount) bill_amount_sum,account_expense_type,COUNT(settlement_customers_code) count_fee,MIN(business_date) business_start_date ,MAX(business_date) business_end_date,organization_name,top_organization_id,billing_state,update_by_name,update_by,update_time,create_by_name,create_by,create_time from billing_statement where del_flag = 1 From 79914169d371401772370054f20f8e3c61f4c209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Tue, 24 Feb 2026 13:59:05 +0800 Subject: [PATCH 10/49] =?UTF-8?q?=E6=8B=A3=E8=B4=A7=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E9=9D=A2=E7=A7=AF=E4=BD=93=E7=A7=AF=E7=AD=89=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/pickingOrder/PickingOrderApplicationService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java index a4237991d..5ae739c7c 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java @@ -571,6 +571,10 @@ public class PickingOrderApplicationService { PickingMaterialDetailDO returnPickingMaterialDetailDO = new PickingMaterialDetailDO(); BeanUtils.copyProperties(pickingMaterialDetailPO, returnPickingMaterialDetailDO); returnPickingMaterialDetailDO.setActualQuantity(pickingMaterialDetailDO.getActualQuantity()); + returnPickingMaterialDetailDO.setTotalArea(pickingMaterialDetailDO.getTotalArea()); + returnPickingMaterialDetailDO.setTotalVolume(pickingMaterialDetailDO.getTotalVolume()); + returnPickingMaterialDetailDO.setTotalGrossWeight(pickingMaterialDetailDO.getTotalGrossWeight()); + returnPickingMaterialDetailDO.setTotalNetWeight(pickingMaterialDetailDO.getTotalNetWeight()); //是否开启了序列号管理 if (pickingMaterialDetailPO.getSerialNumberManage() == 1){ if (CollectionUtils.isEmpty(pickingMaterialDetailDO.getMaterialDetailSerialNumberList())){ From 8ad6883ec0ecca84f09dce1367019b7473ea57c0 Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Tue, 24 Feb 2026 14:59:13 +0800 Subject: [PATCH 11/49] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1bug=E5=86=8D=E6=AC=A1=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=97=B6=EF=BC=8C=E5=B7=B2=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=E4=B8=8D=E5=86=8D=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SettlementCustomersApplicationService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomers/SettlementCustomersApplicationService.java b/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomers/SettlementCustomersApplicationService.java index 47739f62b..b609dae66 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomers/SettlementCustomersApplicationService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomers/SettlementCustomersApplicationService.java @@ -251,6 +251,7 @@ public class SettlementCustomersApplicationService { saveEntity.setSettlementEntityId(userShipperPo.getUserId()); saveEntity.setSettlementEntity(userShipperPo.getUserName()); saveEntity.setSettlementMethodCode("monthly_settle"); + saveEntity.setMainRole(2); saveEntity(saveEntity); }); } @@ -275,6 +276,7 @@ public class SettlementCustomersApplicationService { saveEntity.setSettlementEntityId(userDriverPo.getUserId()); saveEntity.setSettlementEntity(userDriverPo.getUserName()); saveEntity.setSettlementMethodCode("monthly_settle"); + saveEntity.setMainRole(1); saveEntity(saveEntity); }); } From aa76e07cdc2f265270928c68a78e25667c575eac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Tue, 24 Feb 2026 15:21:32 +0800 Subject: [PATCH 12/49] =?UTF-8?q?=E5=A4=8D=E6=A0=B8=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=9D=A2=E7=A7=AF=E4=BD=93=E7=A7=AF=E7=AD=89?= =?UTF-8?q?=E4=BF=A1=E6=81=AF;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../facade/IPickingMaterialDetailService.java | 5 ++++- .../mapper/PickingMaterialDetailMapper.java | 5 ++++- .../persistence/PickingMaterialDetailImpl.java | 6 ++++++ .../service/StockOutOrderDomainService.java | 11 +++++++++++ .../PickingMaterialDetailMapper.xml | 11 +++++++++++ 5 files changed, 36 insertions(+), 2 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java index 88d9c733d..c2153d9a2 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java @@ -7,6 +7,7 @@ import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialD import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDOByUpdate; import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO; import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -23,6 +24,8 @@ public interface IPickingMaterialDetailService extends IService queryList(PickingMaterialDetailDO pickingMaterialDetailDO); + public PickingMaterialDetailPO queryTotalsByOutNumberAndBaseId(String orderNumber, Long materialBaseInfoId); + /** * 新增拣货单物料明细 */ @@ -72,4 +75,4 @@ public interface IPickingMaterialDetailService extends IService queryList(PickingMaterialDetailDO pickingMaterialDetailDO); + public PickingMaterialDetailPO queryTotalsByOutNumberAndBaseId( @Param("orderNumber") String orderNumber, @Param("materialBaseInfoId") Long materialBaseInfoId); + /** * @description 根据拣货单增加拣货数量 * @author ZhouGY @@ -30,4 +33,4 @@ public interface PickingMaterialDetailMapper extends BaseMapper().lambda() .eq(StockOutOrder::getDelFlag, 1) .eq(StockOutOrder::getOutOrderNumber, stockOutOrderDO.getOutOrderNumber())); @@ -692,6 +697,12 @@ public class StockOutOrderDomainService { for (OutMaterialDetailPO outMaterialDetailPO : outMaterialDetailPOList) { outMaterialDetailPO.setMaterialCode(outMaterialDetailPO.getMaterialNo()); outMaterialDetailPO.setMaterialName(outMaterialDetailPO.getCommodityName()); + Long materialBaseInfoId = outMaterialDetailPO.getMaterialBaseInfoId(); + PickingMaterialDetailPO pickingMaterialDetailPO = pickingMaterialDetailService.queryTotalsByOutNumberAndBaseId(outOrderNumber, materialBaseInfoId); + outMaterialDetailPO.setTotalArea(pickingMaterialDetailPO.getTotalArea()); + outMaterialDetailPO.setTotalVolume(pickingMaterialDetailPO.getTotalVolume()); + outMaterialDetailPO.setTotalNetWeight(pickingMaterialDetailPO.getTotalNetWeight()); + outMaterialDetailPO.setTotalGrossWeight(pickingMaterialDetailPO.getTotalGrossWeight()); } stockOutOrderPO.setMaterialDetailList(outMaterialDetailPOList); BigDecimal weightLimit = BigDecimal.ZERO; diff --git a/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml index 6fbd85fe6..0a9148fad 100644 --- a/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml @@ -182,6 +182,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + UPDATE picking_material_detail From 90a453757117d514f0c477dc0434b2cde4acbcd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Tue, 24 Feb 2026 15:28:24 +0800 Subject: [PATCH 13/49] =?UTF-8?q?=E5=A4=8D=E6=A0=B8=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=9D=A2=E7=A7=AF=E4=BD=93=E7=A7=AF=E7=AD=89?= =?UTF-8?q?=E4=BF=A1=E6=81=AF;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pickingMaterialDetail/PickingMaterialDetailMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml index 0a9148fad..78a13aa09 100644 --- a/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml @@ -183,7 +183,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - SELECT b.TOTAL_AREA,b.TOTAL_VOLUME,b.TOTAL_NET_WEIGHT,b.TOTAL_GROSS_WEIGHT FROM From e5288c92a99e7bd0d618df72d650d2d4658e4f00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Tue, 24 Feb 2026 15:40:18 +0800 Subject: [PATCH 14/49] =?UTF-8?q?=E5=88=A4=E7=A9=BA;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/StockOutOrderDomainService.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java index e5133e62e..617c96e00 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java @@ -63,6 +63,7 @@ import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; import com.mhd.wms.domain.waveOrder.factorys.WaveOrderServiceFactory; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -699,10 +700,12 @@ public class StockOutOrderDomainService { outMaterialDetailPO.setMaterialName(outMaterialDetailPO.getCommodityName()); Long materialBaseInfoId = outMaterialDetailPO.getMaterialBaseInfoId(); PickingMaterialDetailPO pickingMaterialDetailPO = pickingMaterialDetailService.queryTotalsByOutNumberAndBaseId(outOrderNumber, materialBaseInfoId); - outMaterialDetailPO.setTotalArea(pickingMaterialDetailPO.getTotalArea()); - outMaterialDetailPO.setTotalVolume(pickingMaterialDetailPO.getTotalVolume()); - outMaterialDetailPO.setTotalNetWeight(pickingMaterialDetailPO.getTotalNetWeight()); - outMaterialDetailPO.setTotalGrossWeight(pickingMaterialDetailPO.getTotalGrossWeight()); + if (ObjectUtils.isNotEmpty(pickingMaterialDetailPO)) { + outMaterialDetailPO.setTotalArea(pickingMaterialDetailPO.getTotalArea()); + outMaterialDetailPO.setTotalVolume(pickingMaterialDetailPO.getTotalVolume()); + outMaterialDetailPO.setTotalNetWeight(pickingMaterialDetailPO.getTotalNetWeight()); + outMaterialDetailPO.setTotalGrossWeight(pickingMaterialDetailPO.getTotalGrossWeight()); + } } stockOutOrderPO.setMaterialDetailList(outMaterialDetailPOList); BigDecimal weightLimit = BigDecimal.ZERO; From fda82412df0306a936c839a1529182c6e732a8ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Tue, 24 Feb 2026 15:46:11 +0800 Subject: [PATCH 15/49] =?UTF-8?q?=E5=A4=8D=E6=A0=B8=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=9D=A2=E7=A7=AF=E4=BD=93=E7=A7=AF=E7=AD=89?= =?UTF-8?q?=E4=BF=A1=E6=81=AF;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stockOutOrder/service/StockOutOrderDomainService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java index 617c96e00..5f1172265 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java @@ -705,6 +705,10 @@ public class StockOutOrderDomainService { outMaterialDetailPO.setTotalVolume(pickingMaterialDetailPO.getTotalVolume()); outMaterialDetailPO.setTotalNetWeight(pickingMaterialDetailPO.getTotalNetWeight()); outMaterialDetailPO.setTotalGrossWeight(pickingMaterialDetailPO.getTotalGrossWeight()); + outMaterialDetailPO.setCheckArea(pickingMaterialDetailPO.getTotalArea()); + outMaterialDetailPO.setCheckVolume(pickingMaterialDetailPO.getTotalVolume()); + outMaterialDetailPO.setCheckNetWeight(pickingMaterialDetailPO.getTotalNetWeight()); + outMaterialDetailPO.setCheckGrossWeight(pickingMaterialDetailPO.getTotalGrossWeight()); } } stockOutOrderPO.setMaterialDetailList(outMaterialDetailPOList); From f20bab8de3b704e348eeb553aa4924322d97ef10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Tue, 24 Feb 2026 15:55:44 +0800 Subject: [PATCH 16/49] =?UTF-8?q?=E5=A4=8D=E6=A0=B8=E4=B8=AD=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=A4=8D=E6=A0=B8=E5=8F=AF=E6=9F=A5=E8=AF=A2;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stockOutOrder/service/StockOutOrderDomainService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java index 5f1172265..9bf5e6612 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java @@ -687,8 +687,8 @@ public class StockOutOrderDomainService { if (stockOutOrder.getReview() != 1){ throw new ServiceException("出库单【" + stockOutOrderDO.getOutOrderNumber() + "】不需要复核"); } - if (stockOutOrder.getStatus() != 7){ - throw new ServiceException("出库单【" + stockOutOrderDO.getOutOrderNumber() + "】状态不是拣货完成"); + if (stockOutOrder.getStatus() != 7 && stockOutOrder.getStatus() != 8){ + throw new ServiceException("出库单【" + stockOutOrderDO.getOutOrderNumber() + "】状态不是拣货完成或复核中"); } StockOutOrderPO stockOutOrderPO = new StockOutOrderPO(); BeanUtils.copyProperties(stockOutOrder, stockOutOrderPO); From 7f5f1615ae1e5861a5adf2b9de3f326a006338f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Tue, 24 Feb 2026 16:03:23 +0800 Subject: [PATCH 17/49] =?UTF-8?q?=E5=A4=8D=E6=A0=B8=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E4=BD=93=E7=A7=AF=E7=AD=89=E4=BF=A1=E6=81=AF=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BF=AE=E6=94=B9;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/facade/IPickingMaterialDetailService.java | 2 +- .../repository/mapper/PickingMaterialDetailMapper.java | 2 +- .../repository/persistence/PickingMaterialDetailImpl.java | 4 ++-- .../stockOutOrder/service/StockOutOrderDomainService.java | 3 ++- .../pickingMaterialDetail/PickingMaterialDetailMapper.xml | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java index c2153d9a2..6bec7acd7 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java @@ -24,7 +24,7 @@ public interface IPickingMaterialDetailService extends IService queryList(PickingMaterialDetailDO pickingMaterialDetailDO); - public PickingMaterialDetailPO queryTotalsByOutNumberAndBaseId(String orderNumber, Long materialBaseInfoId); + public PickingMaterialDetailPO queryTotalsByOutNumberAndBaseId(String orderNumber, Long materialBaseInfoId, Long materialInventoryId); /** * 新增拣货单物料明细 diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/mapper/PickingMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/mapper/PickingMaterialDetailMapper.java index 7c6d87b66..6f1583503 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/mapper/PickingMaterialDetailMapper.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/mapper/PickingMaterialDetailMapper.java @@ -22,7 +22,7 @@ public interface PickingMaterialDetailMapper extends BaseMapper queryList(PickingMaterialDetailDO pickingMaterialDetailDO); - public PickingMaterialDetailPO queryTotalsByOutNumberAndBaseId( @Param("orderNumber") String orderNumber, @Param("materialBaseInfoId") Long materialBaseInfoId); + public PickingMaterialDetailPO queryTotalsByOutNumberAndBaseId(@Param("orderNumber") String orderNumber, @Param("materialBaseInfoId") Long materialBaseInfoId, @Param("materialInventoryId") Long materialInventoryId); /** * @description 根据拣货单增加拣货数量 diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java index 11599e643..5e05d9f35 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java @@ -62,9 +62,9 @@ public class PickingMaterialDetailImpl extends ServiceImpl From 601ae6e3cf2073a6e7ea598f84cca4979c956dc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 24 Feb 2026 16:15:13 +0800 Subject: [PATCH 18/49] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=89=A9=E6=96=99=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9D=83=E9=99=90=E9=9A=94=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/batch/BatchApplicationService.java | 17 ++++++++++++++--- .../service/brand/BrandApplicationService.java | 17 ++++++++++++++--- .../MaterialClassifyApplicationService.java | 17 ++++++++++++++--- .../service/pack/PackApplicationService.java | 17 ++++++++++++++--- .../MaterialBaseInfoApplicationService.java | 17 ++++++++++++++--- 5 files changed, 70 insertions(+), 15 deletions(-) diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batch/BatchApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batch/BatchApplicationService.java index 433041bed..76b31d1af 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batch/BatchApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batch/BatchApplicationService.java @@ -39,10 +39,21 @@ public class BatchApplicationService { public List queryList(BatchDO batchDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + batchDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + batchDO.setOrganizationId(userOrganizationId); + } + } Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - batchDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (topOrganizationId != null && topOrganizationId != 1) { + batchDO.setTopOrganizationId(topOrganizationId); } } List batchPOS = batchDomainService.queryList(batchDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/brand/BrandApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/brand/BrandApplicationService.java index f4652016b..ceb488e0e 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/brand/BrandApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/brand/BrandApplicationService.java @@ -37,10 +37,21 @@ public class BrandApplicationService { public List queryList(BrandDO brandDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + brandDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + brandDO.setOrganizationId(userOrganizationId); + } + } Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - brandDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (topOrganizationId != null && topOrganizationId != 1) { + brandDO.setTopOrganizationId(topOrganizationId); } } return brandDomainService.queryList(brandDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialClassify/MaterialClassifyApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialClassify/MaterialClassifyApplicationService.java index bab615ff8..f735edcfc 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialClassify/MaterialClassifyApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialClassify/MaterialClassifyApplicationService.java @@ -29,10 +29,21 @@ public class MaterialClassifyApplicationService { public List queryList(MaterialClassifyDO materialClassifyDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + materialClassifyDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + materialClassifyDO.setOrganizationId(userOrganizationId); + } + } Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - materialClassifyDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (topOrganizationId != null && topOrganizationId != 1) { + materialClassifyDO.setTopOrganizationId(topOrganizationId); } } return materialClassifyDomainService.queryList(materialClassifyDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/pack/PackApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/pack/PackApplicationService.java index 13326a0d6..99d770139 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/pack/PackApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/pack/PackApplicationService.java @@ -38,10 +38,21 @@ public class PackApplicationService { public List queryList(PackDO packDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + packDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + packDO.setOrganizationId(userOrganizationId); + } + } Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - packDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (topOrganizationId != null && topOrganizationId != 1) { + packDO.setTopOrganizationId(topOrganizationId); } } return packDomainService.queryList(packDO); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java index 1eff5f2c4..9f50e7a6d 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java @@ -59,10 +59,21 @@ public class MaterialBaseInfoApplicationService { public List queryList(MaterialBaseInfoDO materialBaseInfoDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 当前登录用户组织ID为2827时,查询所有组织的数据 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 不设置organizationId,查询所有组织的数据 + materialBaseInfoDO.setOrganizationId(null); + } else { + // 其他情况,只查询当前登录用户所属组织的数据 + if (userOrganizationId != null) { + materialBaseInfoDO.setOrganizationId(userOrganizationId); + } + } Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - materialBaseInfoDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (topOrganizationId != null && topOrganizationId != 1) { + materialBaseInfoDO.setTopOrganizationId(topOrganizationId); } } List materialBaseInfoPOS = materialBaseInfoDomainService.queryList(materialBaseInfoDO); From cf561f2269afdf449fa4a9a31a5708ee0e76d2da Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Tue, 24 Feb 2026 16:19:54 +0800 Subject: [PATCH 19/49] =?UTF-8?q?=E7=BB=93=E7=AE=97=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=A2=9E=E5=8A=A0=E6=9F=A5=E8=AF=A2=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/mapper/SettlementCustomersMapper.xml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mhd_bms/src/main/resources/mapper/SettlementCustomersMapper.xml b/mhd_bms/src/main/resources/mapper/SettlementCustomersMapper.xml index 1777feaab..713704b1c 100644 --- a/mhd_bms/src/main/resources/mapper/SettlementCustomersMapper.xml +++ b/mhd_bms/src/main/resources/mapper/SettlementCustomersMapper.xml @@ -83,9 +83,6 @@ and settlement_customers_code like concat('%', #{settlementCustomersDO.settlementCustomersCode}, '%') - - and settlement_customers_code like concat('%', #{settlementCustomersDO.settlementCustomersCode}, '%') - and settlement_method like concat('%', #{settlementCustomersDO.settlementMethod}, '%') @@ -107,6 +104,8 @@ and top_organization_id = #{settlementCustomersDO.topOrganizationId} - + + and customer_type = #{settlementCustomersDO.customerType} + From 08046eeee2ca0d7af4ffbdf6453808882b45266d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Tue, 24 Feb 2026 16:22:39 +0800 Subject: [PATCH 20/49] =?UTF-8?q?=E5=A4=8D=E6=A0=B8=E5=8F=AA=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=8B=A3=E8=BF=87=E8=B4=A7=E7=9A=84=E6=98=8E=E7=BB=86?= =?UTF-8?q?;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/persistence/OutMaterialDetailImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java index 3b32aeacb..b503d7333 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java @@ -101,6 +101,7 @@ public class OutMaterialDetailImpl extends ServiceImpl 1 == e.getLevel()).collect(Collectors.toList()); // 递归查询子集 outMaterialDetailParentList.forEach(materialDetailPO -> materialDetailPO.setChildren(getChildren(materialDetailPO.getUniqueId(), outMaterialDetailPOList, 2))); + outMaterialDetailParentList.removeIf(detail -> detail.getPickingQuantity() != null && detail.getPickingQuantity().compareTo(BigDecimal.ZERO) <= 0); return outMaterialDetailParentList; } From cd959bba91049ee7f3286eb06996e290b521e295 Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Tue, 24 Feb 2026 16:24:25 +0800 Subject: [PATCH 21/49] =?UTF-8?q?=E6=94=B6=E6=AC=BE=E8=AE=B0=E5=BD=95sql?= =?UTF-8?q?=E6=8B=BC=E6=8E=A5=E5=87=BD=E6=95=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mhd_bms/src/main/resources/mapper/ReceiptManageMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mhd_bms/src/main/resources/mapper/ReceiptManageMapper.xml b/mhd_bms/src/main/resources/mapper/ReceiptManageMapper.xml index d5acc4943..d45b4b2e6 100644 --- a/mhd_bms/src/main/resources/mapper/ReceiptManageMapper.xml +++ b/mhd_bms/src/main/resources/mapper/ReceiptManageMapper.xml @@ -10,7 +10,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" resultType="com.mhd.bms.domain.receiptManage.repository.po.ReceiptManagePO"> SELECT a.* , - CONCAT(b.bill_number) AS billNumbers + WM_CONCAT(b.bill_number) AS billNumbers FROM receipt_manage a LEFT JOIN receipt_detail b ON a.receipt_manage_id = b.receipt_manage_id From ea9689d2a74932617eb5645a8c812deb846e4614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Tue, 24 Feb 2026 16:29:22 +0800 Subject: [PATCH 22/49] =?UTF-8?q?=E5=A4=8D=E6=A0=B8=E5=8F=AA=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/facade/IPickingMaterialDetailService.java | 2 +- .../repository/mapper/PickingMaterialDetailMapper.java | 2 +- .../repository/persistence/PickingMaterialDetailImpl.java | 4 ++-- .../stockOutOrder/service/StockOutOrderDomainService.java | 5 ++--- .../pickingMaterialDetail/PickingMaterialDetailMapper.xml | 5 ++--- 5 files changed, 8 insertions(+), 10 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java index 6bec7acd7..adf4361c3 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java @@ -24,7 +24,7 @@ public interface IPickingMaterialDetailService extends IService queryList(PickingMaterialDetailDO pickingMaterialDetailDO); - public PickingMaterialDetailPO queryTotalsByOutNumberAndBaseId(String orderNumber, Long materialBaseInfoId, Long materialInventoryId); + public PickingMaterialDetailPO queryTotalsByOutNumberAndBaseId(Long outUniqueId); /** * 新增拣货单物料明细 diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/mapper/PickingMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/mapper/PickingMaterialDetailMapper.java index 6f1583503..09d066e2c 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/mapper/PickingMaterialDetailMapper.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/mapper/PickingMaterialDetailMapper.java @@ -22,7 +22,7 @@ public interface PickingMaterialDetailMapper extends BaseMapper queryList(PickingMaterialDetailDO pickingMaterialDetailDO); - public PickingMaterialDetailPO queryTotalsByOutNumberAndBaseId(@Param("orderNumber") String orderNumber, @Param("materialBaseInfoId") Long materialBaseInfoId, @Param("materialInventoryId") Long materialInventoryId); + public PickingMaterialDetailPO queryTotalsByOutNumberAndBaseId(@Param("outUniqueId") Long outUniqueId); /** * @description 根据拣货单增加拣货数量 diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java index 5e05d9f35..314955a01 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java @@ -62,9 +62,9 @@ public class PickingMaterialDetailImpl extends ServiceImpl From e7dba4d6724d36120e4a1094ac585e18ee43e118 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Tue, 24 Feb 2026 16:45:32 +0800 Subject: [PATCH 23/49] =?UTF-8?q?=E5=A4=8D=E6=A0=B8=E5=8F=AA=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/persistence/OutMaterialDetailImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java index b503d7333..3b32aeacb 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java @@ -101,7 +101,6 @@ public class OutMaterialDetailImpl extends ServiceImpl 1 == e.getLevel()).collect(Collectors.toList()); // 递归查询子集 outMaterialDetailParentList.forEach(materialDetailPO -> materialDetailPO.setChildren(getChildren(materialDetailPO.getUniqueId(), outMaterialDetailPOList, 2))); - outMaterialDetailParentList.removeIf(detail -> detail.getPickingQuantity() != null && detail.getPickingQuantity().compareTo(BigDecimal.ZERO) <= 0); return outMaterialDetailParentList; } From e848336562e4322897f76ade61a0cfb76e3ab6ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Tue, 24 Feb 2026 16:55:20 +0800 Subject: [PATCH 24/49] =?UTF-8?q?=E5=A4=8D=E6=A0=B8=E5=8F=AA=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/stockOutOrder/service/StockOutOrderDomainService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java index 3ff091b00..078fa0dac 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java @@ -761,6 +761,7 @@ public class StockOutOrderDomainService { // 3. 为每个物料明细设置更多属性(从库存表中获取值) setMaterialMoreDetailListFromInventory(materialDetailList, batchDetailMap); + materialDetailList.removeIf(detail -> detail.getPickingQuantity() != null && detail.getPickingQuantity().compareTo(BigDecimal.ONE) < 0); stockOutOrderPO.setMaterialDetailList(materialDetailList); return stockOutOrderPO; } From b7b81d07e65c2c6e5e4d5c9cfbb64e77bed8cf75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 24 Feb 2026 17:07:08 +0800 Subject: [PATCH 25/49] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E9=9A=94?= =?UTF-8?q?=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Lease/LeaseApplicationService.java | 50 ++++++++++++--- .../batch/BatchApplicationService.java | 51 ++++++++++++--- .../brand/BrandApplicationService.java | 51 ++++++++++++--- .../MaterialBaseInfoApplicationService.java | 50 +++++++++++++-- .../MaterialClassifyApplicationService.java | 51 ++++++++++++--- .../service/pack/PackApplicationService.java | 51 ++++++++++++--- .../StorageLocationApplicationService.java | 53 +++++++++++++--- ...torageLocationGroupApplicationService.java | 63 +++++++++++++------ .../StorageSectionApplicationService.java | 56 +++++++++++++---- .../WarehouseApplicationService.java | 56 +++++++++++++---- .../MaterialBaseInfoApplicationService.java | 51 ++++++++++++--- 11 files changed, 470 insertions(+), 113 deletions(-) diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java index 2f6355a0e..d54d22857 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java @@ -77,20 +77,52 @@ public class LeaseApplicationService { public List queryList(LeaseDO leaseDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - //前端传organizationId = 2827的时候查询所有组织的数据 - if (loginUser != null) { - Long frontendOrganizationId = leaseDO.getOrganizationId(); - if (frontendOrganizationId != null && frontendOrganizationId == 2827L) { - // 前端传递2827时,查询所有组织的数据,将organizationId设置为null - leaseDO.setOrganizationId(null); + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = leaseDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + leaseDO.setOrganizationId(frontendOrganizationId); + leaseDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + leaseDO.setOrganizationId(null); + leaseDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (loginUser != null && loginUser.getUserPo() != null) { - Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + leaseDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID if (userOrganizationId != null) { leaseDO.setOrganizationId(userOrganizationId); } } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (leaseDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + leaseDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + leaseDO.setTopOrganizationId(null); + } } } return leaseDomainService.queryList(leaseDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batch/BatchApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batch/BatchApplicationService.java index 76b31d1af..c77a3a42f 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batch/BatchApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batch/BatchApplicationService.java @@ -41,19 +41,50 @@ public class BatchApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null) { Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = batchDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - batchDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + batchDO.setOrganizationId(frontendOrganizationId); + batchDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + batchDO.setOrganizationId(null); + batchDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - batchDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + batchDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + batchDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (batchDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + batchDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + batchDO.setTopOrganizationId(null); } - } - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1) { - batchDO.setTopOrganizationId(topOrganizationId); } } List batchPOS = batchDomainService.queryList(batchDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/brand/BrandApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/brand/BrandApplicationService.java index ceb488e0e..4a9fa1554 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/brand/BrandApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/brand/BrandApplicationService.java @@ -39,19 +39,50 @@ public class BrandApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null) { Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = brandDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - brandDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + brandDO.setOrganizationId(frontendOrganizationId); + brandDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + brandDO.setOrganizationId(null); + brandDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - brandDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + brandDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + brandDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (brandDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + brandDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + brandDO.setTopOrganizationId(null); } - } - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1) { - brandDO.setTopOrganizationId(topOrganizationId); } } return brandDomainService.queryList(brandDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java index 8a253446d..7fa3c5b55 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java @@ -43,10 +43,52 @@ public class MaterialBaseInfoApplicationService { public List queryList(MaterialBaseInfoDO materialBaseInfoDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - materialBaseInfoDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = materialBaseInfoDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + materialBaseInfoDO.setOrganizationId(frontendOrganizationId); + materialBaseInfoDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + materialBaseInfoDO.setOrganizationId(null); + materialBaseInfoDO.setTopOrganizationId(null); + } + } else { + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + materialBaseInfoDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + materialBaseInfoDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (materialBaseInfoDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + materialBaseInfoDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + materialBaseInfoDO.setTopOrganizationId(null); + } } } return materialBaseInfoDomainService.queryList(materialBaseInfoDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialClassify/MaterialClassifyApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialClassify/MaterialClassifyApplicationService.java index f735edcfc..9ce33307e 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialClassify/MaterialClassifyApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialClassify/MaterialClassifyApplicationService.java @@ -31,19 +31,50 @@ public class MaterialClassifyApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null) { Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = materialClassifyDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - materialClassifyDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + materialClassifyDO.setOrganizationId(frontendOrganizationId); + materialClassifyDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + materialClassifyDO.setOrganizationId(null); + materialClassifyDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - materialClassifyDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + materialClassifyDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + materialClassifyDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (materialClassifyDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + materialClassifyDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + materialClassifyDO.setTopOrganizationId(null); } - } - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1) { - materialClassifyDO.setTopOrganizationId(topOrganizationId); } } return materialClassifyDomainService.queryList(materialClassifyDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/pack/PackApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/pack/PackApplicationService.java index 99d770139..4cfbfbe5a 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/pack/PackApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/pack/PackApplicationService.java @@ -40,19 +40,50 @@ public class PackApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null) { Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = packDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - packDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + packDO.setOrganizationId(frontendOrganizationId); + packDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + packDO.setOrganizationId(null); + packDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - packDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + packDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + packDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (packDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + packDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + packDO.setTopOrganizationId(null); } - } - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1) { - packDO.setTopOrganizationId(topOrganizationId); } } return packDomainService.queryList(packDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java index d1b436aab..5ac9c4652 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java @@ -44,23 +44,56 @@ public class StorageLocationApplicationService { public List queryList(StorageLocationDO storageLocationDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ - //前端传organizationId = 2827的时候查询所有组织的数据 - Long frontendOrganizationId = storageLocationDO.getOrganizationId(); - if (frontendOrganizationId != null && frontendOrganizationId == 2827L) { - // 前端传递2827时,查询所有组织的数据,将organizationId设置为null - storageLocationDO.setOrganizationId(null); + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = storageLocationDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + storageLocationDO.setOrganizationId(frontendOrganizationId); + storageLocationDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + storageLocationDO.setOrganizationId(null); + storageLocationDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (loginUser != null && loginUser.getUserPo() != null) { - Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + storageLocationDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID if (userOrganizationId != null) { storageLocationDO.setOrganizationId(userOrganizationId); } } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (storageLocationDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + storageLocationDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + storageLocationDO.setTopOrganizationId(null); + } } + // 只有当前端没有明确传仓库条件时,才使用用户关联仓库缓存进行过滤; - // 避免出现“单据仓库=常温仓,但库位列表仍显示保税仓”的错配问题。 + // 避免出现"单据仓库=常温仓,但库位列表仍显示保税仓"的错配问题。 boolean hasWarehouseFilter = storageLocationDO.getWarehouseId() != null || (storageLocationDO.getWarehouseCode() != null && !storageLocationDO.getWarehouseCode().trim().isEmpty()) || (storageLocationDO.getWarehouseName() != null && !storageLocationDO.getWarehouseName().trim().isEmpty()); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocationGroup/StorageLocationGroupApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocationGroup/StorageLocationGroupApplicationService.java index 4fa0fc453..ae86e3e37 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocationGroup/StorageLocationGroupApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocationGroup/StorageLocationGroupApplicationService.java @@ -28,25 +28,52 @@ public class StorageLocationGroupApplicationService { public List queryList(StorageLocationGroupDO storageLocationGroupDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - //前端传organizationId = 2827的时候查询所有组织的数据 - Long frontendOrganizationId = storageLocationGroupDO.getOrganizationId(); - if (frontendOrganizationId != null && frontendOrganizationId == 2827L) { - // 前端传递2827时,查询所有组织的数据,将organizationId设置为null - storageLocationGroupDO.setOrganizationId(null); - } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (loginUser != null && loginUser.getUserPo() != null) { - Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - if (userOrganizationId != null) { - storageLocationGroupDO.setOrganizationId(userOrganizationId); - } - } - } - // 处理topOrganizationId逻辑 if (loginUser != null && loginUser.getUserPo() != null) { - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1) { - storageLocationGroupDO.setTopOrganizationId(topOrganizationId); + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = storageLocationGroupDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + storageLocationGroupDO.setOrganizationId(frontendOrganizationId); + storageLocationGroupDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + storageLocationGroupDO.setOrganizationId(null); + storageLocationGroupDO.setTopOrganizationId(null); + } + } else { + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + storageLocationGroupDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + storageLocationGroupDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (storageLocationGroupDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + storageLocationGroupDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + storageLocationGroupDO.setTopOrganizationId(null); + } } } return storageLocationGroupDomainService.queryList(storageLocationGroupDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageSection/StorageSectionApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageSection/StorageSectionApplicationService.java index 28f4f5d49..30b5d8d76 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageSection/StorageSectionApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageSection/StorageSectionApplicationService.java @@ -43,17 +43,51 @@ public class StorageSectionApplicationService { public List queryList(StorageSectionDO storageSectionDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - //前端传organizationId = 2827的时候查询所有组织的数据 - Long frontendOrganizationId = storageSectionDO.getOrganizationId(); - if (frontendOrganizationId != null && frontendOrganizationId == 2827L) { - // 前端传递2827时,查询所有组织的数据,将organizationId设置为null - storageSectionDO.setOrganizationId(null); - } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (loginUser != null && loginUser.getUserPo() != null) { - Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - if (userOrganizationId != null) { - storageSectionDO.setOrganizationId(userOrganizationId); + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = storageSectionDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + storageSectionDO.setOrganizationId(frontendOrganizationId); + storageSectionDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + storageSectionDO.setOrganizationId(null); + storageSectionDO.setTopOrganizationId(null); + } + } else { + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + storageSectionDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + storageSectionDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (storageSectionDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + storageSectionDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + storageSectionDO.setTopOrganizationId(null); } } } 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 313f91bd9..02634b427 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 @@ -42,17 +42,51 @@ public class WarehouseApplicationService { public List queryList(WarehouseDO warehouseDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - //前端传organizationId = 2827的时候查询所有组织的数据 - Long frontendOrganizationId = warehouseDO.getOrganizationId(); - if (frontendOrganizationId != null && frontendOrganizationId == 2827L) { - // 前端传递2827时,查询所有组织的数据,将organizationId设置为null - warehouseDO.setOrganizationId(null); - } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (loginUser != null && loginUser.getUserPo() != null) { - Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - if (userOrganizationId != null) { - warehouseDO.setOrganizationId(userOrganizationId); + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = warehouseDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + warehouseDO.setOrganizationId(frontendOrganizationId); + warehouseDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + warehouseDO.setOrganizationId(null); + warehouseDO.setTopOrganizationId(null); + } + } else { + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + warehouseDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + warehouseDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (warehouseDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + warehouseDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + warehouseDO.setTopOrganizationId(null); } } } diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java index 9f50e7a6d..bc2a08264 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java @@ -61,19 +61,50 @@ public class MaterialBaseInfoApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null) { Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = materialBaseInfoDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - materialBaseInfoDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + materialBaseInfoDO.setOrganizationId(frontendOrganizationId); + materialBaseInfoDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + materialBaseInfoDO.setOrganizationId(null); + materialBaseInfoDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - materialBaseInfoDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + materialBaseInfoDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + materialBaseInfoDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (materialBaseInfoDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + materialBaseInfoDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + materialBaseInfoDO.setTopOrganizationId(null); } - } - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1) { - materialBaseInfoDO.setTopOrganizationId(topOrganizationId); } } List materialBaseInfoPOS = materialBaseInfoDomainService.queryList(materialBaseInfoDO); From 27cc5986e1b7c38b18a4929ec8fa5a9d4c6ea6ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 24 Feb 2026 17:16:19 +0800 Subject: [PATCH 26/49] =?UTF-8?q?=E5=85=A5=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E9=9A=94?= =?UTF-8?q?=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StockInOrderApplicationService.java | 52 +++++++++++++++---- .../StockReceiptOrderApplicationService.java | 52 +++++++++++++++---- .../StockShelfOrderApplicationService.java | 51 ++++++++++++++---- 3 files changed, 123 insertions(+), 32 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java index 6e1ad45b2..7e823acfe 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java @@ -70,20 +70,50 @@ public class StockInOrderApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null){ Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = stockInOrderDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - stockInOrderDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + stockInOrderDO.setOrganizationId(frontendOrganizationId); + stockInOrderDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + stockInOrderDO.setOrganizationId(null); + stockInOrderDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - stockInOrderDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + stockInOrderDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + stockInOrderDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (stockInOrderDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + stockInOrderDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + stockInOrderDO.setTopOrganizationId(null); } - } - // 处理topOrganizationId逻辑 - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - stockInOrderDO.setTopOrganizationId(topOrganizationId); } // 前端有传warehouseId则优先使用传参;未传时才使用"用户关联仓库"作为默认值 if (stockInOrderDO.getWarehouseId() == null) { diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java index 3c17f2efc..f64287c34 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java @@ -93,20 +93,50 @@ public class StockReceiptOrderApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null){ Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = stockReceiptOrderDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - stockReceiptOrderDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + stockReceiptOrderDO.setOrganizationId(frontendOrganizationId); + stockReceiptOrderDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + stockReceiptOrderDO.setOrganizationId(null); + stockReceiptOrderDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - stockReceiptOrderDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + stockReceiptOrderDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + stockReceiptOrderDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (stockReceiptOrderDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + stockReceiptOrderDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + stockReceiptOrderDO.setTopOrganizationId(null); } - } - // 处理topOrganizationId逻辑 - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - stockReceiptOrderDO.setTopOrganizationId(topOrganizationId); } try { AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java index 53a3b5443..ad2ba418f 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java @@ -99,19 +99,50 @@ public class StockShelfOrderApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null){ Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = stockShelfOrderDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - stockShelfOrderDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + stockShelfOrderDO.setOrganizationId(frontendOrganizationId); + stockShelfOrderDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + stockShelfOrderDO.setOrganizationId(null); + stockShelfOrderDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - stockShelfOrderDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + stockShelfOrderDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + stockShelfOrderDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (stockShelfOrderDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + stockShelfOrderDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + stockShelfOrderDO.setTopOrganizationId(null); } - } - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - stockShelfOrderDO.setTopOrganizationId(topOrganizationId); } try { AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); From e6ab5c51df603511a5d34e2b25cb9524d6f2ca04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Wed, 25 Feb 2026 09:16:14 +0800 Subject: [PATCH 27/49] =?UTF-8?q?=E5=87=BA=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E9=9A=94?= =?UTF-8?q?=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HandoverTaskOrderApplicationService.java | 55 +++++++++++++++---- .../PickingOrderApplicationService.java | 51 +++++++++++++---- .../StockOutOrderApplicationService.java | 51 +++++++++++++---- .../StockOutTaskOrderApplicationService.java | 55 +++++++++++++++---- 4 files changed, 170 insertions(+), 42 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java index c4567e89f..b8153c140 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java @@ -65,22 +65,55 @@ public class HandoverTaskOrderApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null) { Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = handoverTaskOrderDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - handoverTaskOrderDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + handoverTaskOrderDO.setOrganizationId(frontendOrganizationId); + handoverTaskOrderDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + handoverTaskOrderDO.setOrganizationId(null); + handoverTaskOrderDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - handoverTaskOrderDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + handoverTaskOrderDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + handoverTaskOrderDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (handoverTaskOrderDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + handoverTaskOrderDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + handoverTaskOrderDO.setTopOrganizationId(null); } } - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1) { - handoverTaskOrderDO.setTopOrganizationId(topOrganizationId); - } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); - handoverTaskOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + if (associationWarehouseCacheDO != null) { + handoverTaskOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } } return handoverTaskOrderDomainService.queryList(handoverTaskOrderDO); } diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java index 61aaac165..5ae3624a6 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java @@ -63,19 +63,50 @@ public class PickingOrderApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null) { Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = pickingOrderDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - pickingOrderDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + pickingOrderDO.setOrganizationId(frontendOrganizationId); + pickingOrderDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + pickingOrderDO.setOrganizationId(null); + pickingOrderDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - pickingOrderDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + pickingOrderDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + pickingOrderDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (pickingOrderDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + pickingOrderDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + pickingOrderDO.setTopOrganizationId(null); } - } - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1) { - pickingOrderDO.setTopOrganizationId(topOrganizationId); } } List pickingOrderPOList = pickingOrderDomainService.queryList(pickingOrderDO); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java index b02a7b624..edc0d1d51 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java @@ -87,19 +87,50 @@ public class StockOutOrderApplicationService { }*/ if (loginUser != null && loginUser.getUserPo() != null) { Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = stockOutOrderDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - stockOutOrderDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + stockOutOrderDO.setOrganizationId(frontendOrganizationId); + stockOutOrderDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + stockOutOrderDO.setOrganizationId(null); + stockOutOrderDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - stockOutOrderDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + stockOutOrderDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + stockOutOrderDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (stockOutOrderDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + stockOutOrderDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + stockOutOrderDO.setTopOrganizationId(null); } - } - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1) { - stockOutOrderDO.setTopOrganizationId(topOrganizationId); } } return stockOutOrderDomainService.queryList(stockOutOrderDO); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java index bb7423128..89cb55390 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java @@ -48,22 +48,55 @@ public class StockOutTaskOrderApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null) { Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = stockOutTaskOrderDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - stockOutTaskOrderDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + stockOutTaskOrderDO.setOrganizationId(frontendOrganizationId); + stockOutTaskOrderDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + stockOutTaskOrderDO.setOrganizationId(null); + stockOutTaskOrderDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - stockOutTaskOrderDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + stockOutTaskOrderDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + stockOutTaskOrderDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (stockOutTaskOrderDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + stockOutTaskOrderDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + stockOutTaskOrderDO.setTopOrganizationId(null); } } - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1) { - stockOutTaskOrderDO.setTopOrganizationId(topOrganizationId); - } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); - stockOutTaskOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + if (associationWarehouseCacheDO != null) { + stockOutTaskOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } } return stockOutTaskOrderDomainService.queryList(stockOutTaskOrderDO); } From c13edc0f2fe2cea1a8dd4c4056ffec7c50d2ad20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Wed, 25 Feb 2026 09:48:52 +0800 Subject: [PATCH 28/49] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=88=86=E9=85=8D;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StockOutOrderApplicationService.java | 68 ++++++++++++++++++- .../service/StockOutOrderDomainService.java | 30 +++++++- .../stockOutOrder/StockOutOrderApi.java | 15 +++- 3 files changed, 109 insertions(+), 4 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java index edc0d1d51..11926c071 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mhd.common.core.constant.SnowFlakeConstants; import com.mhd.common.core.domain.po.UserPo; import com.mhd.common.core.enums.DictCode; @@ -23,14 +24,19 @@ import com.mhd.system.api.domain.WarehouseFeignPO; import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialInventory.entity.MaterialInventory; import com.mhd.wms.domain.materialInventory.repository.mapper.MaterialInventoryMapper; import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; import com.mhd.wms.domain.materialInventory.service.MaterialInventoryDomainService; import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; +import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService; import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialCheckPO; import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; import com.mhd.wms.domain.outMaterialDetail.service.OutMaterialDetailDomainService; +import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; +import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService; import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; import com.mhd.wms.domain.stockOutOrder.service.StockOutOrderDomainService; @@ -69,6 +75,10 @@ public class StockOutOrderApplicationService { private SystemServiceFeign systemServiceFeign; @Autowired private IdGenerator idGenerator; + @Autowired + private IStockOutOrderService stockOutOrderService; + @Autowired + private IOutMaterialDetailService outMaterialDetailService; /** @@ -570,10 +580,66 @@ public class StockOutOrderApplicationService { return stockOutOrderDomainService.manualAssign(assembleStockOutOrderDO); } + /** + * @description 手动分配 + * @author ZhouGY + * @date 2024/5/28 13:47 + * @param stockOutOrderDO + * @return Boolean + */ public Boolean autoAssign(StockOutOrderDO stockOutOrderDO){ + List outOrderIds = stockOutOrderDO.getOutOrderIds(); + if (outOrderIds == null || outOrderIds.isEmpty()){ + throw new ServiceException("出库单ID不能为空"); + } + Boolean result = true; + for (Long outOrderId : outOrderIds){ + StockOutOrderDO stockOutOrderD = new StockOutOrderDO(); + StockOutOrder stockOutOrderDb = stockOutOrderService.getById(outOrderId); + if (stockOutOrderDb == null){ + throw new ServiceException("出库单ID不存在"); + } + BeanUtils.copyProperties(stockOutOrderDb, stockOutOrderD); + List outMaterialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOutOrderNumber, stockOutOrderDb.getOutOrderNumber())); + List materialDetailList = cn.hutool.core.bean.BeanUtil.copyToList(outMaterialDetailList, OutMaterialDetailDO.class); + for (OutMaterialDetailDO detail : materialDetailList) { + detail.setAllocationQuantity(detail.getQuantity()); + String batchRefNo = detail.getBatchRefNo(); + String sheetRefNo = detail.getSheetRefNo(); + String boxPalletNo = detail.getBoxPalletNo(); + Long materialBaseInfoId = detail.getMaterialBaseInfoId(); + List materialInventories = materialInventoryMapper.selectList(new QueryWrapper().lambda() + .eq(MaterialInventory::getBatchRefNo, batchRefNo) + .eq(MaterialInventory::getSheetRefNo, sheetRefNo) + .eq(MaterialInventory::getBoxPalletNo, boxPalletNo) + .eq(MaterialInventory::getMaterialBaseInfoId, materialBaseInfoId)); + if (materialInventories == null || materialInventories.isEmpty()) { + throw new ServiceException("库存不存在:" + batchRefNo + " " + sheetRefNo + " " + boxPalletNo); + } + MaterialInventory materialInventory = materialInventories.get(0); + detail.setMaterialInventoryId(materialInventory.getMaterialInventoryId()); + detail.setStorageLocationId(materialInventory.getStorageLocationId()); + detail.setStorageLocationName(materialInventory.getStorageLocationName()); + detail.setStorageLocationCode(materialInventory.getStorageLocationCode()); + detail.setStorageSectionId(materialInventory.getStorageSectionId()); + detail.setStorageName(materialInventory.getStorageName()); + detail.setStorageCode(materialInventory.getStorageCode()); + } + stockOutOrderD.setMaterialDetailList(materialDetailList); + StockOutOrderDO assembleStockOutOrderDO = assembleParamByOutOrder(stockOutOrderDO); + Boolean assignResult = stockOutOrderDomainService.autoAssign(assembleStockOutOrderDO); + if (!assignResult) { + result = false; + } + } + return result; + } + + /*public Boolean autoAssign(StockOutOrderDO stockOutOrderDO){ StockOutOrderDO assembleStockOutOrderDO = assembleParamByOutOrder(stockOutOrderDO); return stockOutOrderDomainService.autoAssign(assembleStockOutOrderDO); - } + }*/ /** * @description 取消分配 diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java index 078fa0dac..2176a9a67 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java @@ -249,7 +249,35 @@ public class StockOutOrderDomainService { return updateStockOutOrderByAllocation(stockOutOrderDb, stockOutOrderPO, 1); } + /** + * @description 手动分配 + * @author ZhouGY + * @date 2024/5/22 16:20 + * @param stockOutOrderDO + * @return Boolean + */ @Transactional(rollbackFor = Exception.class) + public Boolean autoAssign(StockOutOrderDO stockOutOrderDO){ + List outOrderIds = stockOutOrderDO.getOutOrderIds(); + if (outOrderIds == null || outOrderIds.isEmpty()){ + throw new ServiceException("出库单ID不能为空"); + } + StockOutOrder stockOutOrderDb = stockOutOrderService.getById(stockOutOrderDO.getOutOrderId()); + if (stockOutOrderDb == null){ + throw new ServiceException("出库单不存在"); + } + if (stockOutOrderDb.getStatus() > 3){ + throw new ServiceException("收货单已完成分配"); + } + List outMaterialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOutOrderNumber, stockOutOrderDb.getOutOrderNumber())); + //修改物料明细信息 + StockOutOrderPO stockOutOrderPO = outMaterialDetailService.batchAssignUpdate(stockOutOrderDb.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList()); + //修改出库单 + return updateStockOutOrderByAllocation(stockOutOrderDb, stockOutOrderPO, 1); + } + + /*@Transactional(rollbackFor = Exception.class) public Boolean autoAssign(StockOutOrderDO stockOutOrderDO){ StockOutOrder stockOutOrderDb = stockOutOrderService.getById(stockOutOrderDO.getOutOrderId()); if (stockOutOrderDb == null){ @@ -273,7 +301,7 @@ public class StockOutOrderDomainService { StockOutOrderPO stockOutOrderPO = outMaterialDetailService.batchAssignUpdate(stockOutOrderDb.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList()); //修改出库单 return updateStockOutOrderByAllocation(stockOutOrderDb, stockOutOrderPO, 1); - } + }*/ /** * @description 手动取消分配(点击确认后直接取消分配) diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java index 7d4fa5081..1d8385078 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java @@ -173,6 +173,17 @@ public class StockOutOrderApi extends BaseController { } + /** + * 手动分配 + */ + @ApiOperation("自动分配") + @PostMapping("/autoAssign") + public AjaxResult autoAssign(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = new StockOutOrderDO(); + BeanUtils.copyProperties(stockOutOrderDTO, stockOutOrderDO); + return toAjax(stockOutOrderApplicationService.autoAssign(stockOutOrderDO)); + } + /** * 取消分配 */ @@ -325,12 +336,12 @@ public class StockOutOrderApi extends BaseController { /** * 自动分配 */ - @ApiOperation("自动分配") + /*@ApiOperation("自动分配") @PostMapping("/autoAssign") public AjaxResult autoAssign(@RequestBody StockOutOrderDTO stockOutOrderDTO) { StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); return toAjax(stockOutOrderApplicationService.autoAssign(stockOutOrderDO)); - } + }*/ @ApiOperation("关闭出库单") From 219db303d0a372a84b631a3dd32340d36ab9900d Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Wed, 25 Feb 2026 09:50:29 +0800 Subject: [PATCH 29/49] =?UTF-8?q?=E8=B4=B9=E7=94=A8=E7=B1=BB=E5=88=AB?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=9A=84=E6=97=B6=E5=80=99=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E5=B7=B2=E7=BB=8F=E5=88=A0=E9=99=A4=E7=9A=84=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/basic/ServiceItemsManageMapper.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mhd-modules/mhd-system/src/main/resources/mapper/basic/ServiceItemsManageMapper.xml b/mhd-modules/mhd-system/src/main/resources/mapper/basic/ServiceItemsManageMapper.xml index c8b2fbd85..436be5a14 100644 --- a/mhd-modules/mhd-system/src/main/resources/mapper/basic/ServiceItemsManageMapper.xml +++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/ServiceItemsManageMapper.xml @@ -9,14 +9,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - - - - - - + + + and del_flag = #{delFlag} + + + and del_flag = 1 + + From d3875cf0d28393f65345b779af3db2784b9d6621 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Wed, 25 Feb 2026 09:51:57 +0800 Subject: [PATCH 30/49] =?UTF-8?q?=E5=BA=93=E5=86=85=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E9=9A=94?= =?UTF-8?q?=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DifferentManageApplicationService.java | 55 +++++++++++++++---- ...InvestigationManageApplicationService.java | 55 +++++++++++++++---- .../ShiftManageApplicationService.java | 55 +++++++++++++++---- 3 files changed, 132 insertions(+), 33 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java index 3b21a29e6..4c770eb10 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java @@ -34,22 +34,55 @@ public class DifferentManageApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null) { Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = differentManageDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - differentManageDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + differentManageDO.setOrganizationId(frontendOrganizationId); + differentManageDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + differentManageDO.setOrganizationId(null); + differentManageDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - differentManageDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + differentManageDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + differentManageDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (differentManageDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + differentManageDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + differentManageDO.setTopOrganizationId(null); } } - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1) { - differentManageDO.setTopOrganizationId(topOrganizationId); - } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); - differentManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + if (associationWarehouseCacheDO != null) { + differentManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } } return differentManageDomainService.queryList(differentManageDO); } diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java index 9108b6750..71e4023f6 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java @@ -66,22 +66,55 @@ public class InvestigationManageApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null) { Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = investigationManageDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - investigationManageDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + investigationManageDO.setOrganizationId(frontendOrganizationId); + investigationManageDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + investigationManageDO.setOrganizationId(null); + investigationManageDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - investigationManageDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + investigationManageDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + investigationManageDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (investigationManageDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + investigationManageDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + investigationManageDO.setTopOrganizationId(null); } } - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1) { - investigationManageDO.setTopOrganizationId(topOrganizationId); - } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); - investigationManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + if (associationWarehouseCacheDO != null) { + investigationManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } } return investigationManageDomainService.queryList(investigationManageDO); } diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java index 0c84bc688..0501c0a07 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java @@ -69,22 +69,55 @@ public class ShiftManageApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null) { Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = shiftManageDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - shiftManageDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + shiftManageDO.setOrganizationId(frontendOrganizationId); + shiftManageDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + shiftManageDO.setOrganizationId(null); + shiftManageDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - shiftManageDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + shiftManageDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + shiftManageDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (shiftManageDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + shiftManageDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + shiftManageDO.setTopOrganizationId(null); } } - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1) { - shiftManageDO.setTopOrganizationId(topOrganizationId); - } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); - shiftManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + if (associationWarehouseCacheDO != null) { + shiftManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } } return shiftManageDomainService.queryList(shiftManageDO); } From 4110be97bb2fe49166fd36518fe9ea771b6c38a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Wed, 25 Feb 2026 10:08:12 +0800 Subject: [PATCH 31/49] =?UTF-8?q?=E5=BA=93=E5=AD=98=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E9=9A=94?= =?UTF-8?q?=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...oryAdjustmentRecordApplicationService.java | 54 +++++++++++++++++-- .../MaterialInventoryApplicationService.java | 52 ++++++++++++++---- 2 files changed, 90 insertions(+), 16 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java index f2560edb4..bcdd97300 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java @@ -50,13 +50,57 @@ public class InventoryAdjustmentRecordApplicationService { public List queryList(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - inventoryAdjustmentRecordDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (loginUser != null && loginUser.getUserPo() != null){ + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = inventoryAdjustmentRecordDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + inventoryAdjustmentRecordDO.setOrganizationId(frontendOrganizationId); + inventoryAdjustmentRecordDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + inventoryAdjustmentRecordDO.setOrganizationId(null); + inventoryAdjustmentRecordDO.setTopOrganizationId(null); + } + } else { + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + inventoryAdjustmentRecordDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + inventoryAdjustmentRecordDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (inventoryAdjustmentRecordDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + inventoryAdjustmentRecordDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + inventoryAdjustmentRecordDO.setTopOrganizationId(null); + } } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); - inventoryAdjustmentRecordDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + if (associationWarehouseCacheDO != null) { + inventoryAdjustmentRecordDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } } List inventoryAdjustmentRecordPOS = inventoryAdjustmentRecordDomainService.queryList(inventoryAdjustmentRecordDO); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java index 11667a13e..048e57de0 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java @@ -53,20 +53,50 @@ public class MaterialInventoryApplicationService { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null){ Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - // 当前登录用户组织ID为2827时,查询所有组织的数据 + Long frontendOrganizationId = materialInventoryDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 if (userOrganizationId != null && userOrganizationId == 2827L) { - // 不设置organizationId,查询所有组织的数据 - materialInventoryDO.setOrganizationId(null); + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + materialInventoryDO.setOrganizationId(frontendOrganizationId); + materialInventoryDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + materialInventoryDO.setOrganizationId(null); + materialInventoryDO.setTopOrganizationId(null); + } } else { - // 其他情况,只查询当前登录用户所属组织的数据 - if (userOrganizationId != null) { - materialInventoryDO.setOrganizationId(userOrganizationId); + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + materialInventoryDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + materialInventoryDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (materialInventoryDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + materialInventoryDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + materialInventoryDO.setTopOrganizationId(null); } - } - // 处理topOrganizationId逻辑 - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - materialInventoryDO.setTopOrganizationId(topOrganizationId); } // 前端有传warehouseId则优先使用传参;未传时才使用"用户关联仓库"作为默认值 if (materialInventoryDO.getWarehouseId() == null) { From 785bf76383ceccbd5272ef5ae056a8c9b554abd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Wed, 25 Feb 2026 10:12:08 +0800 Subject: [PATCH 32/49] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=88=86=E9=85=8D?= =?UTF-8?q?=E4=BF=AE=E6=94=B9;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/stockOutOrder/StockOutOrderApplicationService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java index 11926c071..6a0b6ddc6 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java @@ -627,7 +627,7 @@ public class StockOutOrderApplicationService { detail.setStorageCode(materialInventory.getStorageCode()); } stockOutOrderD.setMaterialDetailList(materialDetailList); - StockOutOrderDO assembleStockOutOrderDO = assembleParamByOutOrder(stockOutOrderDO); + StockOutOrderDO assembleStockOutOrderDO = assembleParamByOutOrder(stockOutOrderD); Boolean assignResult = stockOutOrderDomainService.autoAssign(assembleStockOutOrderDO); if (!assignResult) { result = false; From 397a49a14621b81567bce39080e7876b33f5fbb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Wed, 25 Feb 2026 10:17:18 +0800 Subject: [PATCH 33/49] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=88=86=E9=85=8D?= =?UTF-8?q?=E4=BF=AE=E6=94=B9;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stockOutOrder/service/StockOutOrderDomainService.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java index 2176a9a67..7148beb91 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java @@ -258,10 +258,6 @@ public class StockOutOrderDomainService { */ @Transactional(rollbackFor = Exception.class) public Boolean autoAssign(StockOutOrderDO stockOutOrderDO){ - List outOrderIds = stockOutOrderDO.getOutOrderIds(); - if (outOrderIds == null || outOrderIds.isEmpty()){ - throw new ServiceException("出库单ID不能为空"); - } StockOutOrder stockOutOrderDb = stockOutOrderService.getById(stockOutOrderDO.getOutOrderId()); if (stockOutOrderDb == null){ throw new ServiceException("出库单不存在"); @@ -269,8 +265,6 @@ public class StockOutOrderDomainService { if (stockOutOrderDb.getStatus() > 3){ throw new ServiceException("收货单已完成分配"); } - List outMaterialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda() - .eq(OutMaterialDetail::getOutOrderNumber, stockOutOrderDb.getOutOrderNumber())); //修改物料明细信息 StockOutOrderPO stockOutOrderPO = outMaterialDetailService.batchAssignUpdate(stockOutOrderDb.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList()); //修改出库单 From 875a5fadd1f8d7f5da36a2f82470f0ad40c0c6dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Wed, 25 Feb 2026 10:23:24 +0800 Subject: [PATCH 34/49] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=8D=B3=E6=97=B6=E5=BA=93=E5=AD=98=E5=88=97=E8=A1=A8=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=95=B0=E6=8D=AE=E9=9A=94=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StatementStatisticsService.java | 50 +++++++++++++++++-- .../po/ImmediateInventoryPO.java | 8 +++ .../MaterialInventoryMapper.xml | 12 ++++- 3 files changed, 65 insertions(+), 5 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java index 154818684..c052f836a 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java @@ -53,10 +53,52 @@ public class StatementStatisticsService { public List queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - immediateInventoryDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (loginUser != null && loginUser.getUserPo() != null){ + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = immediateInventoryDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + immediateInventoryDO.setOrganizationId(frontendOrganizationId); + immediateInventoryDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + immediateInventoryDO.setOrganizationId(null); + immediateInventoryDO.setTopOrganizationId(null); + } + } else { + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + immediateInventoryDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + immediateInventoryDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (immediateInventoryDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + immediateInventoryDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId + immediateInventoryDO.setTopOrganizationId(null); + } } // 只有在用户没有明确指定仓库参数时,才使用缓存中的仓库信息 // 如果用户已经传递了 warehouseId、warehouseCode 或 warehouseName,优先使用这些值 diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/po/ImmediateInventoryPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/po/ImmediateInventoryPO.java index 205eb5638..51c8c7574 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/po/ImmediateInventoryPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/po/ImmediateInventoryPO.java @@ -115,5 +115,13 @@ public class ImmediateInventoryPO { @ApiModelProperty("物料更多属性列表(批次属性)") private List materialMoreDetailList; + @ApiModelProperty("组织ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + private String organizationName; + + @ApiModelProperty("顶级组织ID") + private Long topOrganizationId; } \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml index ab1b2f821..6a4dfc771 100644 --- a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml +++ b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml @@ -433,6 +433,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + AND a.organization_id = #{paymentOrderDO.organizationId} + AND a.top_organization_id = #{paymentOrderDO.topOrganizationId} From 8443d739d1ff700514941cdcd426849418849491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Wed, 25 Feb 2026 14:25:59 +0800 Subject: [PATCH 46/49] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90?= =?UTF-8?q?=E9=9A=94=E7=A6=BB=E4=BF=AE=E6=94=B9=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Lease/LeaseApplicationService.java | 8 ++-- .../batch/BatchApplicationService.java | 4 +- .../brand/BrandApplicationService.java | 4 +- .../ContractManageApplicationService.java | 38 +++++++++++++++++-- .../MaterialBaseInfoApplicationService.java | 4 +- .../service/pack/PackApplicationService.java | 4 +- ...ShipperLeaseDetailsApplicationService.java | 21 ++++++---- .../StorageLocationApplicationService.java | 4 +- ...torageLocationGroupApplicationService.java | 4 +- .../StorageSectionApplicationService.java | 4 +- .../WarehouseApplicationService.java | 4 +- .../mapper/basic/ContractManageMapper.xml | 6 +++ .../BillManageApplicationService.java | 4 +- .../BillingStatementApplicationService.java | 8 ++-- .../BusinessDocumentApplicationService.java | 4 +- .../PaymentOrderApplicationService.java | 4 +- .../ReceiptManageApplicationService.java | 4 +- ...SettlementCustomersApplicationService.java | 38 +++++++++++++++++-- .../mapper/SettlementCustomersMapper.xml | 3 ++ .../DifferentManageApplicationService.java | 4 +- .../HandoverTaskOrderApplicationService.java | 4 +- ...oryAdjustmentRecordApplicationService.java | 4 +- ...InvestigationManageApplicationService.java | 4 +- .../MaterialBaseInfoApplicationService.java | 4 +- .../MaterialInventoryApplicationService.java | 4 +- .../PickingOrderApplicationService.java | 4 +- .../ShiftManageApplicationService.java | 4 +- .../StatementStatisticsService.java | 4 +- .../StockInOrderApplicationService.java | 4 +- .../StockOutOrderApplicationService.java | 4 +- .../StockOutTaskOrderApplicationService.java | 4 +- .../StockReceiptOrderApplicationService.java | 4 +- .../StockShelfOrderApplicationService.java | 4 +- 33 files changed, 151 insertions(+), 75 deletions(-) diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java index f8c6462bd..7efc00a27 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java @@ -120,8 +120,8 @@ public class LeaseApplicationService { leaseDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - leaseDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + leaseDO.setTopOrganizationId(2827L); } } } @@ -352,8 +352,8 @@ public class LeaseApplicationService { shipperLeaseDetailsDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - shipperLeaseDetailsDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + shipperLeaseDetailsDO.setTopOrganizationId(2827L); } } } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batch/BatchApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batch/BatchApplicationService.java index c77a3a42f..b93baaf91 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batch/BatchApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batch/BatchApplicationService.java @@ -82,8 +82,8 @@ public class BatchApplicationService { batchDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - batchDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + batchDO.setTopOrganizationId(2827L); } } } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/brand/BrandApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/brand/BrandApplicationService.java index 4a9fa1554..f57eb8262 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/brand/BrandApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/brand/BrandApplicationService.java @@ -80,8 +80,8 @@ public class BrandApplicationService { brandDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - brandDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + brandDO.setTopOrganizationId(2827L); } } } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/contractManage/ContractManageApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/contractManage/ContractManageApplicationService.java index 70cc791fe..37ec7c423 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/contractManage/ContractManageApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/contractManage/ContractManageApplicationService.java @@ -72,10 +72,40 @@ public class ContractManageApplicationService { public List queryList(ContractManageDO contractManageDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - contractManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = contractManageDO.getOrganizationId(); // 前端传递的 organizationId + + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己且 topOrganizationId=2827 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 南光组织(organizationId=2827):可以查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + contractManageDO.setOrganizationId(frontendOrganizationId); + contractManageDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + contractManageDO.setOrganizationId(null); + contractManageDO.setTopOrganizationId(null); + } + } else { + // 其他组织:设置organizationId为当前组织ID,并且设置topOrganizationId=2827 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + contractManageDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + contractManageDO.setOrganizationId(userOrganizationId); + } + } + // 对于非2827组织,必须设置 topOrganizationId=2827 + contractManageDO.setTopOrganizationId(2827L); } } return contractManageDomainService.queryList(contractManageDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java index 7fa3c5b55..ae9cd97a9 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java @@ -86,8 +86,8 @@ public class MaterialBaseInfoApplicationService { materialBaseInfoDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - materialBaseInfoDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + materialBaseInfoDO.setTopOrganizationId(2827L); } } } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/pack/PackApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/pack/PackApplicationService.java index 4cfbfbe5a..a24339ce3 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/pack/PackApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/pack/PackApplicationService.java @@ -81,8 +81,8 @@ public class PackApplicationService { packDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - packDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + packDO.setTopOrganizationId(2827L); } } } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/shipperLeaseDetails/ShipperLeaseDetailsApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/shipperLeaseDetails/ShipperLeaseDetailsApplicationService.java index 2cfbe02e1..a7557a4df 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/shipperLeaseDetails/ShipperLeaseDetailsApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/shipperLeaseDetails/ShipperLeaseDetailsApplicationService.java @@ -76,15 +76,22 @@ public class ShipperLeaseDetailsApplicationService { shipperLeaseDetailsDO.setTopOrganizationId(null); } } else { - // 其他组织:设置organizationId,只查询当前组织的数据 - if (topOrganizationId != null && topOrganizationId != 1){ - shipperLeaseDetailsDO.setTopOrganizationId(topOrganizationId); - } + // 其他组织:设置organizationId为当前组织ID,并且设置topOrganizationId=2827 // 如果前端传递了organizationId,验证是否与当前登录用户的组织ID一致 - if (shipperLeaseDetailsDO.getOrganizationId() != null && !shipperLeaseDetailsDO.getOrganizationId().equals(loginUserOrganizationId)) { - // 前端传递了其他组织的organizationId,强制使用当前登录用户的组织ID,防止越权查询 - shipperLeaseDetailsDO.setOrganizationId(loginUserOrganizationId); + Long frontendOrganizationId = shipperLeaseDetailsDO.getOrganizationId(); + if (frontendOrganizationId != null && loginUserOrganizationId != null) { + if (!frontendOrganizationId.equals(loginUserOrganizationId)) { + // 前端传递了其他组织的organizationId,强制使用当前登录用户的组织ID,防止越权查询 + shipperLeaseDetailsDO.setOrganizationId(loginUserOrganizationId); + } + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (loginUserOrganizationId != null) { + shipperLeaseDetailsDO.setOrganizationId(loginUserOrganizationId); + } } + // 对于非2827组织,必须设置 topOrganizationId=2827 + shipperLeaseDetailsDO.setTopOrganizationId(2827L); } } return shipperLeaseDetailsDomainService.queryList(shipperLeaseDetailsDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java index 5ac9c4652..566c37e41 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java @@ -87,8 +87,8 @@ public class StorageLocationApplicationService { storageLocationDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - storageLocationDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + storageLocationDO.setTopOrganizationId(2827L); } } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocationGroup/StorageLocationGroupApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocationGroup/StorageLocationGroupApplicationService.java index ae86e3e37..5005914c9 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocationGroup/StorageLocationGroupApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocationGroup/StorageLocationGroupApplicationService.java @@ -71,8 +71,8 @@ public class StorageLocationGroupApplicationService { storageLocationGroupDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - storageLocationGroupDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + storageLocationGroupDO.setTopOrganizationId(2827L); } } } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageSection/StorageSectionApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageSection/StorageSectionApplicationService.java index 30b5d8d76..0a17bb062 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageSection/StorageSectionApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageSection/StorageSectionApplicationService.java @@ -86,8 +86,8 @@ public class StorageSectionApplicationService { storageSectionDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - storageSectionDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + storageSectionDO.setTopOrganizationId(2827L); } } } 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 02634b427..4871df6ed 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 @@ -85,8 +85,8 @@ public class WarehouseApplicationService { warehouseDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - warehouseDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + warehouseDO.setTopOrganizationId(2827L); } } } diff --git a/mhd-modules/mhd-system/src/main/resources/mapper/basic/ContractManageMapper.xml b/mhd-modules/mhd-system/src/main/resources/mapper/basic/ContractManageMapper.xml index 088bdab17..1f120b45c 100644 --- a/mhd-modules/mhd-system/src/main/resources/mapper/basic/ContractManageMapper.xml +++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/ContractManageMapper.xml @@ -187,6 +187,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND date_format(effective_date,'%Y-%m-%d') #{contractManageDO.nowDateString} ) + + and organization_id = #{contractManageDO.organizationId} + + + and top_organization_id = #{contractManageDO.topOrganizationId} + diff --git a/mhd_bms/src/main/java/com/mhd/bms/application/server/billManage/BillManageApplicationService.java b/mhd_bms/src/main/java/com/mhd/bms/application/server/billManage/BillManageApplicationService.java index d714b7f33..a141ccd3d 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/application/server/billManage/BillManageApplicationService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/application/server/billManage/BillManageApplicationService.java @@ -116,8 +116,8 @@ public class BillManageApplicationService { billManageDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - billManageDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + billManageDO.setTopOrganizationId(2827L); } } } diff --git a/mhd_bms/src/main/java/com/mhd/bms/application/server/billingStatement/BillingStatementApplicationService.java b/mhd_bms/src/main/java/com/mhd/bms/application/server/billingStatement/BillingStatementApplicationService.java index ea75f98aa..0d657b297 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/application/server/billingStatement/BillingStatementApplicationService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/application/server/billingStatement/BillingStatementApplicationService.java @@ -110,8 +110,8 @@ public class BillingStatementApplicationService { billingStatementDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - billingStatementDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + billingStatementDO.setTopOrganizationId(2827L); } } } @@ -162,8 +162,8 @@ public class BillingStatementApplicationService { billingStatementCollectDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - billingStatementCollectDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + billingStatementCollectDO.setTopOrganizationId(2827L); } } } diff --git a/mhd_bms/src/main/java/com/mhd/bms/application/server/businessDocument/BusinessDocumentApplicationService.java b/mhd_bms/src/main/java/com/mhd/bms/application/server/businessDocument/BusinessDocumentApplicationService.java index dde8c0caf..d463bf061 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/application/server/businessDocument/BusinessDocumentApplicationService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/application/server/businessDocument/BusinessDocumentApplicationService.java @@ -123,8 +123,8 @@ public class BusinessDocumentApplicationService { businessDocumentDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - businessDocumentDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + businessDocumentDO.setTopOrganizationId(2827L); } } } diff --git a/mhd_bms/src/main/java/com/mhd/bms/application/server/paymentOrder/PaymentOrderApplicationService.java b/mhd_bms/src/main/java/com/mhd/bms/application/server/paymentOrder/PaymentOrderApplicationService.java index 39c11c87e..20e2e1724 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/application/server/paymentOrder/PaymentOrderApplicationService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/application/server/paymentOrder/PaymentOrderApplicationService.java @@ -79,8 +79,8 @@ public class PaymentOrderApplicationService { paymentOrderDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - paymentOrderDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + paymentOrderDO.setTopOrganizationId(2827L); } } } diff --git a/mhd_bms/src/main/java/com/mhd/bms/application/server/receiptManage/ReceiptManageApplicationService.java b/mhd_bms/src/main/java/com/mhd/bms/application/server/receiptManage/ReceiptManageApplicationService.java index 9ff2f29e5..550eec895 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/application/server/receiptManage/ReceiptManageApplicationService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/application/server/receiptManage/ReceiptManageApplicationService.java @@ -86,8 +86,8 @@ public class ReceiptManageApplicationService { receiptManageDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - receiptManageDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + receiptManageDO.setTopOrganizationId(2827L); } } } diff --git a/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomers/SettlementCustomersApplicationService.java b/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomers/SettlementCustomersApplicationService.java index b609dae66..be94d89b1 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomers/SettlementCustomersApplicationService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomers/SettlementCustomersApplicationService.java @@ -72,10 +72,40 @@ public class SettlementCustomersApplicationService { private void setTopOrganizationIdLogin(SettlementCustomersDO settlementCustomersDO){ LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null){ - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - settlementCustomersDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = settlementCustomersDO.getOrganizationId(); // 前端传递的 organizationId + + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己且 topOrganizationId=2827 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 南光组织(organizationId=2827):可以查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + settlementCustomersDO.setOrganizationId(frontendOrganizationId); + settlementCustomersDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + settlementCustomersDO.setOrganizationId(null); + settlementCustomersDO.setTopOrganizationId(null); + } + } else { + // 其他组织:设置organizationId为当前组织ID,并且设置topOrganizationId=2827 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + settlementCustomersDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + settlementCustomersDO.setOrganizationId(userOrganizationId); + } + } + // 对于非2827组织,必须设置 topOrganizationId=2827 + settlementCustomersDO.setTopOrganizationId(2827L); } } } diff --git a/mhd_bms/src/main/resources/mapper/SettlementCustomersMapper.xml b/mhd_bms/src/main/resources/mapper/SettlementCustomersMapper.xml index 713704b1c..7e7b0d4e7 100644 --- a/mhd_bms/src/main/resources/mapper/SettlementCustomersMapper.xml +++ b/mhd_bms/src/main/resources/mapper/SettlementCustomersMapper.xml @@ -101,6 +101,9 @@ and main_role = #{settlementCustomersDO.mainRole} + + and organization_id = #{settlementCustomersDO.organizationId} + and top_organization_id = #{settlementCustomersDO.topOrganizationId} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java index 4c770eb10..71e843227 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java @@ -75,8 +75,8 @@ public class DifferentManageApplicationService { differentManageDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - differentManageDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + differentManageDO.setTopOrganizationId(2827L); } } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java index b8153c140..7e6e039c0 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java @@ -106,8 +106,8 @@ public class HandoverTaskOrderApplicationService { handoverTaskOrderDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - handoverTaskOrderDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + handoverTaskOrderDO.setTopOrganizationId(2827L); } } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java index bcdd97300..22c5e98b6 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java @@ -93,8 +93,8 @@ public class InventoryAdjustmentRecordApplicationService { inventoryAdjustmentRecordDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - inventoryAdjustmentRecordDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + inventoryAdjustmentRecordDO.setTopOrganizationId(2827L); } } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java index 71e4023f6..a6da8e5bd 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java @@ -107,8 +107,8 @@ public class InvestigationManageApplicationService { investigationManageDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - investigationManageDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + investigationManageDO.setTopOrganizationId(2827L); } } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java index bc2a08264..6141690ac 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java @@ -102,8 +102,8 @@ public class MaterialBaseInfoApplicationService { materialBaseInfoDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - materialBaseInfoDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + materialBaseInfoDO.setTopOrganizationId(2827L); } } } diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java index 048e57de0..f5704c71e 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java @@ -94,8 +94,8 @@ public class MaterialInventoryApplicationService { materialInventoryDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - materialInventoryDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + materialInventoryDO.setTopOrganizationId(2827L); } } // 前端有传warehouseId则优先使用传参;未传时才使用"用户关联仓库"作为默认值 diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java index 13cb8b6d3..eec9a2bd5 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java @@ -104,8 +104,8 @@ public class PickingOrderApplicationService { pickingOrderDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - pickingOrderDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + pickingOrderDO.setTopOrganizationId(2827L); } } } diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java index 0501c0a07..e0be362c0 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java @@ -110,8 +110,8 @@ public class ShiftManageApplicationService { shiftManageDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - shiftManageDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + shiftManageDO.setTopOrganizationId(2827L); } } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java index c052f836a..367e97829 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java @@ -96,8 +96,8 @@ public class StatementStatisticsService { immediateInventoryDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - immediateInventoryDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + immediateInventoryDO.setTopOrganizationId(2827L); } } // 只有在用户没有明确指定仓库参数时,才使用缓存中的仓库信息 diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java index 7e823acfe..fe3e52b96 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java @@ -111,8 +111,8 @@ public class StockInOrderApplicationService { stockInOrderDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - stockInOrderDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + stockInOrderDO.setTopOrganizationId(2827L); } } // 前端有传warehouseId则优先使用传参;未传时才使用"用户关联仓库"作为默认值 diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java index 55b5f0316..7144d5d33 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java @@ -138,8 +138,8 @@ public class StockOutOrderApplicationService { stockOutOrderDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - stockOutOrderDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + stockOutOrderDO.setTopOrganizationId(2827L); } } } diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java index 89cb55390..e3945cb7d 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java @@ -89,8 +89,8 @@ public class StockOutTaskOrderApplicationService { stockOutTaskOrderDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - stockOutTaskOrderDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + stockOutTaskOrderDO.setTopOrganizationId(2827L); } } AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java index f64287c34..eb10158c2 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java @@ -134,8 +134,8 @@ public class StockReceiptOrderApplicationService { stockReceiptOrderDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - stockReceiptOrderDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + stockReceiptOrderDO.setTopOrganizationId(2827L); } } try { diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java index ad2ba418f..0e40e23d6 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java @@ -140,8 +140,8 @@ public class StockShelfOrderApplicationService { stockShelfOrderDO.setTopOrganizationId(topOrganizationId); } } else { - // 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId - stockShelfOrderDO.setTopOrganizationId(null); + // 对于非2827组织,必须设置 topOrganizationId=2827 + stockShelfOrderDO.setTopOrganizationId(2827L); } } try { From 69d69523150b9b190da01a2cf90bc4cefc9d675d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Wed, 25 Feb 2026 14:33:48 +0800 Subject: [PATCH 47/49] =?UTF-8?q?=E5=87=BA=E5=BA=93=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/persistence/OutOrderAbnormalImpl.java | 5 ++++- .../mapper/outOrderAbnormal/OutOrderAbnormalMapper.xml | 4 ++-- .../resources/mapper/stockOutOrder/StockOutOrderMapper.xml | 6 ++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/persistence/OutOrderAbnormalImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/persistence/OutOrderAbnormalImpl.java index 8182204bd..05752495d 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/persistence/OutOrderAbnormalImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/persistence/OutOrderAbnormalImpl.java @@ -23,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -139,7 +140,9 @@ public class OutOrderAbnormalImpl extends ServiceImpl genPickingOrderMaterialDetailList(OutOrderAbnormalBaseDO OutOrderAbnormalBaseDO, List pickingMaterialDetailList){ LoginUser loginUser = SecurityUtils.getLoginUser(); List outOrderAbnormalList = new ArrayList<>(); + //BigDecimal actualQuantity = BigDecimal.ZERO; for (PickingMaterialDetail pickingMaterialDetail : pickingMaterialDetailList){ + //actualQuantity = actualQuantity.add(pickingMaterialDetail.getPickingQuantity()); //拣货 if (pickingMaterialDetail.getPickingQuantity().compareTo(pickingMaterialDetail.getQuantity()) != 0){ //判断是否存在异常 根据设置的是否允许超收 取值动态赋值 先默认写死 收货异常 @@ -208,4 +211,4 @@ public class OutOrderAbnormalImpl extends ServiceImpl - a.out_order_abnormal_id, a.organization_id, a.organization_name, a.top_organization_id, a.abnormal_number, a.picking_order_number, a.out_task_order_number, a.type, a.actual_quantity, a.abnormal_actual_quantity, a.abnormal_type, a.abnormal_reason, a.remark, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag + a.out_order_abnormal_id, a.organization_id, a.organization_name, a.top_organization_id, a.abnormal_number, a.picking_order_number, a.out_task_order_number, a.type, a.quantity, a.abnormal_actual_quantity, a.abnormal_type, a.abnormal_reason, a.remark, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag @@ -107,7 +107,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"