出口订单查询

This commit is contained in:
zhaoqing
2026-06-02 13:45:23 +08:00
parent 047335ccbb
commit f3715a9f99
2 changed files with 130 additions and 0 deletions
@@ -1297,4 +1297,122 @@ public class ReservationStockOutOrderApplicationService {
public void returnGoods(String invoiceNumber, String transportationNumber, String orderId,String pictureUrl) {
stockOutOrderDomainService.returnGoods(invoiceNumber, transportationNumber, orderId, pictureUrl);
}
public List<ReservationStockOutOrderPO> queryList1(ReservationStockOutOrderDO stockOutOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
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 {
// 对于非2827组织,必须设置 topOrganizationId=2827
stockOutOrderDO.setTopOrganizationId(2827L);
}
}
}
// 库管角色过滤:不展示已创建(status=1)的出库单
// 出库状态: 1-已创建 ...
// if (loginUser != null) {
// String targetRoleCode = "KGY-001";
// boolean isKuGuan = false;
//
// String roleCode = loginUser.getUserPo() != null ? loginUser.getUserPo().getRoleCode() : null;
// if (StringUtils.isNotBlank(roleCode) && roleCode.contains(targetRoleCode)) {
// isKuGuan = true;
// }
//
// if (!isKuGuan && loginUser.getRoleList() != null) {
// isKuGuan = loginUser.getRoleList().stream()
// .anyMatch(rc -> StringUtils.isNotBlank(rc) && rc.contains(targetRoleCode));
// }
//
// if (!isKuGuan && loginUser.getRoles() != null) {
// isKuGuan = loginUser.getRoles().stream()
// .anyMatch(rc -> StringUtils.isNotBlank(rc) && rc.contains(targetRoleCode));
// }
//
// if (isKuGuan) {
// Integer currentGtStatus = stockOutOrderDO.getGtStatus();
// if (currentGtStatus == null || currentGtStatus < 1) {
// stockOutOrderDO.setGtStatus(1); // status > 1
// }
// }
// }
List<ReservationStockOutOrderPO> stockOutOrderPOS = stockOutOrderDomainService.queryList(stockOutOrderDO);
// for (ReservationStockOutOrderPO stockOutOrderPO : stockOutOrderPOS) {
// ReservationStockOutOrderPO stockOutOrderPO1 = stockOutOrderDomainService.getInfoChildren(stockOutOrderPO.getOutOrderId());
// List<ReservationOutMaterialDetailPO> materialDetailList = stockOutOrderPO1 != null ? stockOutOrderPO1.getMaterialDetailList() : null;
// if (materialDetailList == null) {
// materialDetailList = Collections.emptyList();
// }
// BigDecimal reduce = materialDetailList.stream().map(ReservationOutMaterialDetailPO::getOutboundQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
// stockOutOrderPO.setTotalOutboundQuantity(reduce);
// stockOutOrderPO.setAllocationQuantity(stockOutOrderPO1 != null ? stockOutOrderPO1.getAllocationQuantity() : null);
// String outOrderNumber = stockOutOrderPO.getOutOrderNumber();
// // PDA复核物料总数量:使用实际下发时的拣货完成数量(picking_material_detail),拣货多少显示多少
// // PDA端物料总数量取quantity字段、复核总数量取checkQuantity字段,需同时设置quantity和pickingQuantity
// BigDecimal actualPickingQty = pickingMaterialDetailService.sumPickingQuantityByOutOrderNumber(outOrderNumber);
// BigDecimal displayPickingQty = actualPickingQty.compareTo(BigDecimal.ZERO) > 0 ? actualPickingQty : (stockOutOrderPO1 != null ? stockOutOrderPO1.getPickingQuantity() : BigDecimal.ZERO);
// stockOutOrderPO.setPickingQuantity(displayPickingQty);
// stockOutOrderPO.setQuantity(displayPickingQty);
// // 物料种类:优先从picking_material_detail统计,为0时从out_material_detail按料号去重
// Integer materialTypeCount = pickingMaterialDetailService.countMaterialTypesByOutOrderNumber(outOrderNumber);
// if (materialTypeCount != null && materialTypeCount > 0) {
// stockOutOrderPO.setMaterialQuantity(materialTypeCount);
// } else {
// long count = materialDetailList.stream()
// .map(d -> d.getMaterialBaseInfoId() != null ? String.valueOf(d.getMaterialBaseInfoId()) : d.getMaterialCode())
// .filter(Objects::nonNull)
// .distinct()
// .count();
// stockOutOrderPO.setMaterialQuantity((int) count);
// }
// // 复核总数量:从out_material_detail汇总check_quantity
// BigDecimal checkSum = materialDetailList.stream().map(ReservationOutMaterialDetailPO::getCheckQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
// stockOutOrderPO.setCheckQuantity(checkSum);
// }
return stockOutOrderPOS;
}
}
@@ -210,4 +210,16 @@ public class ReservationStockOutOrderApi extends BaseController {
return AjaxResult.success();
}
@ApiOperation("查询出库单列表")
@GetMapping("/list1")
public TableDataInfo list1(ReservationStockOutOrderDTO stockOutOrderDTO)
{
//转换实体
ReservationStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO);
startPage();
List<ReservationStockOutOrderPO> list = stockOutOrderApplicationService.queryList1(stockOutOrderDO);
return getDataTable(list);
}
}