报表管理即时库存列表查询数据隔离
This commit is contained in:
+45
-3
@@ -53,10 +53,52 @@ public class StatementStatisticsService {
|
|||||||
|
|
||||||
public List<ImmediateInventoryPO> queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO) {
|
public List<ImmediateInventoryPO> queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO) {
|
||||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
if (loginUser != null){
|
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();
|
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||||
if (topOrganizationId != null && topOrganizationId != 1){
|
if (topOrganizationId != null && topOrganizationId != 1) {
|
||||||
immediateInventoryDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
immediateInventoryDO.setTopOrganizationId(topOrganizationId);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
|
||||||
|
immediateInventoryDO.setTopOrganizationId(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 只有在用户没有明确指定仓库参数时,才使用缓存中的仓库信息
|
// 只有在用户没有明确指定仓库参数时,才使用缓存中的仓库信息
|
||||||
// 如果用户已经传递了 warehouseId、warehouseCode 或 warehouseName,优先使用这些值
|
// 如果用户已经传递了 warehouseId、warehouseCode 或 warehouseName,优先使用这些值
|
||||||
|
|||||||
+8
@@ -115,5 +115,13 @@ public class ImmediateInventoryPO {
|
|||||||
@ApiModelProperty("物料更多属性列表(批次属性)")
|
@ApiModelProperty("物料更多属性列表(批次属性)")
|
||||||
private List<MaterialMoreDetailPO> materialMoreDetailList;
|
private List<MaterialMoreDetailPO> materialMoreDetailList;
|
||||||
|
|
||||||
|
@ApiModelProperty("组织ID")
|
||||||
|
private Long organizationId;
|
||||||
|
|
||||||
|
@ApiModelProperty("组织名称")
|
||||||
|
private String organizationName;
|
||||||
|
|
||||||
|
@ApiModelProperty("顶级组织ID")
|
||||||
|
private Long topOrganizationId;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -433,6 +433,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="boxPalletNo" column="box_pallet_no" />
|
<result property="boxPalletNo" column="box_pallet_no" />
|
||||||
<result property="materialBaseInfoId" column="material_base_info_id" />
|
<result property="materialBaseInfoId" column="material_base_info_id" />
|
||||||
<result property="materialInventoryId" column="material_inventory_id" />
|
<result property="materialInventoryId" column="material_inventory_id" />
|
||||||
|
<result property="organizationId" column="organization_id" />
|
||||||
|
<result property="organizationName" column="organization_name" />
|
||||||
|
<result property="topOrganizationId" column="top_organization_id" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
<select id="queryImmediateInventoryList" parameterType="com.mhd.wms.domain.statementStatistics.todo.ImmediateInventoryDO"
|
<select id="queryImmediateInventoryList" parameterType="com.mhd.wms.domain.statementStatistics.todo.ImmediateInventoryDO"
|
||||||
resultMap="queryImmediateInventoryListResult">
|
resultMap="queryImmediateInventoryListResult">
|
||||||
@@ -541,13 +544,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
a.sheet_ref_no,
|
a.sheet_ref_no,
|
||||||
a.box_pallet_no,
|
a.box_pallet_no,
|
||||||
b.material_base_info_id,
|
b.material_base_info_id,
|
||||||
a.material_inventory_id
|
a.material_inventory_id,
|
||||||
|
a.organization_id,
|
||||||
|
a.organization_name,
|
||||||
|
a.top_organization_id
|
||||||
FROM
|
FROM
|
||||||
material_inventory a
|
material_inventory a
|
||||||
left join material_base_info b on a.material_base_info_id=b.material_base_info_id
|
left join material_base_info b on a.material_base_info_id=b.material_base_info_id
|
||||||
WHERE
|
WHERE
|
||||||
a.del_flag = 1
|
a.del_flag = 1
|
||||||
|
|
||||||
|
<if test="organizationId != null ">
|
||||||
|
and a.organization_id = #{organizationId}
|
||||||
|
</if>
|
||||||
|
|
||||||
<if test="topOrganizationId != null ">
|
<if test="topOrganizationId != null ">
|
||||||
and a.top_organization_id = #{topOrganizationId}
|
and a.top_organization_id = #{topOrganizationId}
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
Reference in New Issue
Block a user