Merge branch 'wms_dev' into dev

This commit is contained in:
秦鸿展
2026-02-25 09:38:13 +08:00
26 changed files with 1065 additions and 145 deletions
@@ -68,7 +68,8 @@ public class LeaseApplicationService {
@Autowired
private IShipperLeaseDetailsService shipperLeaseDetailsService;
@Autowired
private SystemServiceFeign systemServiceFeign;
/**
* 分页查询租赁管理列表
@@ -77,35 +78,56 @@ public class LeaseApplicationService {
public List<LeasePO> queryList(LeaseDO leaseDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null) {
Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
Long frontendOrganizationId = leaseDO.getOrganizationId(); // 前端传递的 organizationId
// 数据权限:根据 organizationId 来设置查询权限
// organizationId等于2827时查询全部,其他仅查询各自组织的信息
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
// 当前登录用户的 organizationId2827 时,可查全部组织数据;其他组织只能查自己
if (userOrganizationId != null && userOrganizationId == 2827L) {
// 南光组织(organizationId=2827):可以查询所有组织的数据
// 如果前端传递了 organizationId,使用前端传递的值进行过滤
// 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤
// 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据
if (leaseDO.getOrganizationId() == null) {
if (frontendOrganizationId != null) {
// 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤
leaseDO.setOrganizationId(frontendOrganizationId);
leaseDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件
} else {
// 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据
leaseDO.setOrganizationId(null);
leaseDO.setTopOrganizationId(null);
}
} else {
// 其他组织:设置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);
}
// 如果前端传递了organizationId,验证是否与当前登录用户的组织ID一致
if (leaseDO.getOrganizationId() != null && !leaseDO.getOrganizationId().equals(loginUserOrganizationId)) {
// 前端传递了其他组织的organizationId,强制使用当前登录用户的组织ID,防止越权查询
leaseDO.setOrganizationId(loginUserOrganizationId);
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
leaseDO.setTopOrganizationId(null);
}
}
}
return leaseDomainService.queryList(leaseDO);
}
/**
* 新增租赁管理
*/
@@ -125,9 +147,6 @@ 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")))) {
@@ -170,17 +189,16 @@ 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<Long> leaseIds) {
return leaseDomainService.nullifyByIds(leaseIds);
@@ -39,10 +39,52 @@ public class BatchApplicationService {
public List<BatchPO> queryList(BatchDO batchDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
if (loginUser != null && loginUser.getUserPo() != null) {
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
Long frontendOrganizationId = batchDO.getOrganizationId(); // 前端传递的 organizationId
// 数据权限:根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己
if (userOrganizationId != null && userOrganizationId == 2827L) {
// 南光组织(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 {
// 其他组织:设置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(loginUser.getUserPo().getTopOrganizationId());
batchDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
batchDO.setTopOrganizationId(null);
}
}
}
List<BatchPO> batchPOS = batchDomainService.queryList(batchDO);
@@ -37,10 +37,52 @@ public class BrandApplicationService {
public List<BrandPO> queryList(BrandDO brandDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
if (loginUser != null && loginUser.getUserPo() != null) {
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
Long frontendOrganizationId = brandDO.getOrganizationId(); // 前端传递的 organizationId
// 数据权限:根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己
if (userOrganizationId != null && userOrganizationId == 2827L) {
// 南光组织(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 {
// 其他组织:设置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(loginUser.getUserPo().getTopOrganizationId());
brandDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
brandDO.setTopOrganizationId(null);
}
}
}
return brandDomainService.queryList(brandDO);
@@ -43,10 +43,52 @@ public class MaterialBaseInfoApplicationService {
public List<MaterialBaseInfoPO> queryList(MaterialBaseInfoDO materialBaseInfoDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
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(loginUser.getUserPo().getTopOrganizationId());
materialBaseInfoDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
materialBaseInfoDO.setTopOrganizationId(null);
}
}
}
return materialBaseInfoDomainService.queryList(materialBaseInfoDO);
@@ -29,10 +29,52 @@ public class MaterialClassifyApplicationService {
public List<MaterialClassifyPO> queryList(MaterialClassifyDO materialClassifyDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
if (loginUser != null && loginUser.getUserPo() != null) {
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
Long frontendOrganizationId = materialClassifyDO.getOrganizationId(); // 前端传递的 organizationId
// 数据权限:根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己
if (userOrganizationId != null && userOrganizationId == 2827L) {
// 南光组织(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 {
// 其他组织:设置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(loginUser.getUserPo().getTopOrganizationId());
materialClassifyDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
materialClassifyDO.setTopOrganizationId(null);
}
}
}
return materialClassifyDomainService.queryList(materialClassifyDO);
@@ -38,10 +38,52 @@ public class PackApplicationService {
public List<PackPO> queryList(PackDO packDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
if (loginUser != null && loginUser.getUserPo() != null) {
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
Long frontendOrganizationId = packDO.getOrganizationId(); // 前端传递的 organizationId
// 数据权限:根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己
if (userOrganizationId != null && userOrganizationId == 2827L) {
// 南光组织(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 {
// 其他组织:设置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(loginUser.getUserPo().getTopOrganizationId());
packDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
packDO.setTopOrganizationId(null);
}
}
}
return packDomainService.queryList(packDO);
@@ -44,13 +44,56 @@ public class StorageLocationApplicationService {
public List<StorageLocationPO> queryList(StorageLocationDO storageLocationDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != 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 {
// 其他组织:设置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(loginUser.getUserPo().getTopOrganizationId());
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());
@@ -28,14 +28,52 @@ public class StorageLocationGroupApplicationService {
public List<StorageLocationGroupPO> queryList(StorageLocationGroupDO storageLocationGroupDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
if (loginUser != null && loginUser.getUserPo() != null) {
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(loginUser.getUserPo().getTopOrganizationId());
storageLocationGroupDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
storageLocationGroupDO.setTopOrganizationId(null);
}
Long organizationId = loginUser.getUserPo().getOrganizationId();
if (organizationId != null && organizationId != 1){
storageLocationGroupDO.setOrganizationId(organizationId);
}
}
return storageLocationGroupDomainService.queryList(storageLocationGroupDO);
@@ -43,10 +43,52 @@ public class StorageSectionApplicationService {
public List<StorageSectionPO> queryList(StorageSectionDO storageSectionDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
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(loginUser.getUserPo().getTopOrganizationId());
storageSectionDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
storageSectionDO.setTopOrganizationId(null);
}
}
}
return storageSectionDomainService.queryList(storageSectionDO);
@@ -42,10 +42,52 @@ public class WarehouseApplicationService {
public List<WarehousePO> 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());
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);
}
}
}
return warehouseDomainService.queryList(warehouseDO);
@@ -32,10 +32,21 @@ public class DifferentManageApplicationService {
public List<DifferentManagePO> 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());
@@ -63,14 +63,58 @@ public class HandoverTaskOrderApplicationService {
public List<HandoverTaskOrderPO> queryList(HandoverTaskOrderDO handoverTaskOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
if (loginUser != null && loginUser.getUserPo() != null) {
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
Long frontendOrganizationId = handoverTaskOrderDO.getOrganizationId(); // 前端传递的 organizationId
// 数据权限:根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己
if (userOrganizationId != null && userOrganizationId == 2827L) {
// 南光组织(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 {
// 其他组织:设置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(loginUser.getUserPo().getTopOrganizationId());
handoverTaskOrderDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
handoverTaskOrderDO.setTopOrganizationId(null);
}
}
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
if (associationWarehouseCacheDO != null) {
handoverTaskOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
}
}
return handoverTaskOrderDomainService.queryList(handoverTaskOrderDO);
}
@@ -64,10 +64,21 @@ public class InvestigationManageApplicationService {
public List<InvestigationManagePO> 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());
@@ -59,10 +59,52 @@ public class MaterialBaseInfoApplicationService {
public List<MaterialBaseInfoPO> queryList(MaterialBaseInfoDO materialBaseInfoDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
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(loginUser.getUserPo().getTopOrganizationId());
materialBaseInfoDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
materialBaseInfoDO.setTopOrganizationId(null);
}
}
}
List<MaterialBaseInfoPO> materialBaseInfoPOS = materialBaseInfoDomainService.queryList(materialBaseInfoDO);
@@ -51,12 +51,24 @@ public class MaterialInventoryApplicationService {
public List<MaterialInventoryPO> 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());
@@ -61,13 +61,53 @@ public class PickingOrderApplicationService {
public List<PickingOrderPO> queryList(PickingOrderDO pickingOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
if (loginUser != null && loginUser.getUserPo() != null) {
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
Long frontendOrganizationId = pickingOrderDO.getOrganizationId(); // 前端传递的 organizationId
// 数据权限根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 2827 可查全部组织数据其他组织只能查自己
if (userOrganizationId != null && userOrganizationId == 2827L) {
// 南光组织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 {
// 其他组织设置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(loginUser.getUserPo().getTopOrganizationId());
pickingOrderDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
pickingOrderDO.setTopOrganizationId(null);
}
}
//AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
//pickingOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
}
List<PickingOrderPO> pickingOrderPOList = pickingOrderDomainService.queryList(pickingOrderDO);
@@ -67,10 +67,21 @@ public class ShiftManageApplicationService {
public List<ShiftManagePO> 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());
shiftManageDO.setTopOrganizationId(topOrganizationId);
}
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
shiftManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
@@ -119,7 +119,7 @@ public class ShiftMaterialDetailApplicationService {
}
// 性能优化批量获取批次属性避免N+1查询问题
// 1. 收集所有唯一的materialBaseInfoId
// 1. 收集所有唯一的materialBaseInfoId包括子项的此时子项还未构建所以直接遍历所有项
Set<Long> materialBaseInfoIdSet = list.stream()
.map(ShiftMaterialDetailPO::getMaterialBaseInfoId)
.filter(Objects::nonNull)
@@ -146,18 +146,47 @@ public class ShiftMaterialDetailApplicationService {
}
}
// 3. 为每个物料明细设置更多属性从库存表中获取值
setMaterialMoreDetailListFromInventory(list, batchDetailMap);
// 3. 构建父子关系类似queryListChildren的逻辑
List<ShiftMaterialDetailPO> parentList = list.stream()
.filter(e -> e.getLevel() != null && e.getLevel() == 1)
.collect(Collectors.toList());
return list;
// 递归构建子项关系
parentList.forEach(parent -> {
List<ShiftMaterialDetailPO> children = getChildren(parent.getUniqueId(), list, 2);
parent.setChildren(children);
});
// 4. 为每个物料明细包括子项设置更多属性从库存表中获取值
setMaterialMoreDetailListFromInventoryRecursively(parentList, batchDetailMap);
return parentList;
}
/**
* 为移位物料明细设置更多属性从库存表中获取值
* 递归获取子项
*/
private List<ShiftMaterialDetailPO> getChildren(Long parentUniqueId, List<ShiftMaterialDetailPO> allList, Integer maxLevel) {
List<ShiftMaterialDetailPO> 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<ShiftMaterialDetailPO> shiftMaterialDetailPOList,
private void setMaterialMoreDetailListFromInventoryRecursively(List<ShiftMaterialDetailPO> shiftMaterialDetailPOList,
Map<Long, List<BatchDetailFeignPO>> 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);
}
});
}
@@ -68,10 +68,52 @@ public class StockInOrderApplicationService {
public List<StockInOrderPO> queryList(StockInOrderDO stockInOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
if (loginUser != null && loginUser.getUserPo() != null){
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
Long frontendOrganizationId = stockInOrderDO.getOrganizationId(); // 前端传递的 organizationId
// 数据权限根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 2827 可查全部组织数据其他组织只能查自己
if (userOrganizationId != null && userOrganizationId == 2827L) {
// 南光组织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 {
// 其他组织设置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(loginUser.getUserPo().getTopOrganizationId());
stockInOrderDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
stockInOrderDO.setTopOrganizationId(null);
}
}
// 前端有传warehouseId则优先使用传参未传时才使用"用户关联仓库"作为默认值
if (stockInOrderDO.getWarehouseId() == null) {
@@ -85,6 +85,54 @@ public class StockOutOrderApplicationService {
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
stockOutOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
}*/
if (loginUser != null && loginUser.getUserPo() != null) {
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
Long frontendOrganizationId = stockOutOrderDO.getOrganizationId(); // 前端传递的 organizationId
// 数据权限根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 2827 可查全部组织数据其他组织只能查自己
if (userOrganizationId != null && userOrganizationId == 2827L) {
// 南光组织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 {
// 其他组织设置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);
}
}
}
return stockOutOrderDomainService.queryList(stockOutOrderDO);
}
@@ -46,14 +46,58 @@ public class StockOutTaskOrderApplicationService {
public List<StockOutTaskOrderPO> queryList(StockOutTaskOrderDO stockOutTaskOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
if (loginUser != null && loginUser.getUserPo() != null) {
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
Long frontendOrganizationId = stockOutTaskOrderDO.getOrganizationId(); // 前端传递的 organizationId
// 数据权限根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 2827 可查全部组织数据其他组织只能查自己
if (userOrganizationId != null && userOrganizationId == 2827L) {
// 南光组织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 {
// 其他组织设置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(loginUser.getUserPo().getTopOrganizationId());
stockOutTaskOrderDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
stockOutTaskOrderDO.setTopOrganizationId(null);
}
}
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
if (associationWarehouseCacheDO != null) {
stockOutTaskOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
}
}
return stockOutTaskOrderDomainService.queryList(stockOutTaskOrderDO);
}
@@ -91,10 +91,52 @@ public class StockReceiptOrderApplicationService {
public List<StockReceiptOrderPO> queryList(StockReceiptOrderDO stockReceiptOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
if (loginUser != null && loginUser.getUserPo() != null){
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
Long frontendOrganizationId = stockReceiptOrderDO.getOrganizationId(); // 前端传递的 organizationId
// 数据权限根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 2827 可查全部组织数据其他组织只能查自己
if (userOrganizationId != null && userOrganizationId == 2827L) {
// 南光组织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 {
// 其他组织设置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(loginUser.getUserPo().getTopOrganizationId());
stockReceiptOrderDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
stockReceiptOrderDO.setTopOrganizationId(null);
}
}
try {
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
@@ -97,10 +97,52 @@ public class StockShelfOrderApplicationService {
public List<StockShelfOrderPO> queryList(StockShelfOrderDO stockShelfOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
if (loginUser != null && loginUser.getUserPo() != null){
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
Long frontendOrganizationId = stockShelfOrderDO.getOrganizationId(); // 前端传递的 organizationId
// 数据权限根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 2827 可查全部组织数据其他组织只能查自己
if (userOrganizationId != null && userOrganizationId == 2827L) {
// 南光组织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 {
// 其他组织设置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(loginUser.getUserPo().getTopOrganizationId());
stockShelfOrderDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
stockShelfOrderDO.setTopOrganizationId(null);
}
}
try {
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
@@ -147,6 +147,10 @@ public class InMaterialDetailImpl extends ServiceImpl<InMaterialDetailMapper, In
inMaterialDetail.setCreateBy(loginUser.getUserid());
inMaterialDetail.setCreateByName(loginUser.getUsername());
inMaterialDetail.setCreateTime(new Date());
// 新增入库单明细时如果计划数量为空则使用入库数量作为计划数量
if (inMaterialDetail.getQuantity() == null && inMaterialDetailDO.getInboundQuantity() != null) {
inMaterialDetail.setQuantity(inMaterialDetailDO.getInboundQuantity());
}
inMaterialDetailList.add(inMaterialDetail);
}
return saveBatch(inMaterialDetailList);
@@ -75,16 +75,38 @@ public class MaterialBarCodeImpl extends ServiceImpl<MaterialBarCodeMapper, Mate
}
LoginUser loginUser = SecurityUtils.getLoginUser();
UserPo userPo = loginUser.getUserPo();
//标记之前的数据删除
materialBarCodeMapper.update(null, new UpdateWrapper<MaterialBarCode>().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<MaterialBarCode>().lambda()
.eq(MaterialBarCode::getMaterialBaseInfoId, materialBaseInfoId));
// 去重处理确保没有重复的 material_base_info_id + bar_code 组合
// 使用 LinkedHashMap 保持顺序对所有记录进行去重
// 对于 barCode null 的记录使用 packDetailId 来区分因为唯一性约束可能不允许多个 null
java.util.Map<String, MaterialBarCode> uniqueMap = new java.util.LinkedHashMap<>();
List<MaterialBarCode> materialBarCodeList = new ArrayList<>();
for (MaterialBarCodeDO materialBarCodeDO : materialBarCodeDOList){
String barCode = materialBarCodeDO.getBarCode();
String key;
// 构建唯一性 keymaterial_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);
materialBarCode.setOrganizationId(userPo.getOrganizationId());
@@ -93,8 +115,14 @@ public class MaterialBarCodeImpl extends ServiceImpl<MaterialBarCodeMapper, Mate
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<MaterialBarCodeMapper, Mate
return null;
}
List<MaterialBarCodePO> materialBarCodePOList = new ArrayList<>();
BeanUtils.copyProperties(materialBarCodeList,materialBarCodePOList);
// 遍历列表逐个复制每个对象的属性
for (MaterialBarCode materialBarCode : materialBarCodeList) {
MaterialBarCodePO materialBarCodePO = new MaterialBarCodePO();
BeanUtils.copyProperties(materialBarCode, materialBarCodePO);
materialBarCodePOList.add(materialBarCodePO);
}
return materialBarCodePOList;
}
}
@@ -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<ShiftManageMapper, ShiftManage>
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<ShiftManageMapper, ShiftManage>
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<ShiftMaterialDetailDO> 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;