Java 查询所有供应商维护所有商品的代码示例

要查询入库单明细里的所有商品,有哪些供应商都维护了入库单里所有的商品,有单独的商品供应商表关联是'itemCode','vendorCode'内容:,入库单明细表关联是'itemCode','receiptCode'。

根据上述需求,可以编写以下 Java 代码:

  1. 定义两个实体类:Item(商品)和 Vendor(供应商),分别包含对应的属性和 getter/setter 方法。
public class Item {
    private String itemCode; // 商品编码
    private String itemName; // 商品名称
    // 其他属性和 getter/setter 方法
}

public class Vendor {
    private String vendorCode; // 供应商编码
    private String vendorName; // 供应商名称
    // 其他属性和 getter/setter 方法
}
  1. 定义一个入库单明细实体类 ReceiptDetail,包含对应的属性和 getter/setter 方法,并关联 Item 和 Vendor。
public class ReceiptDetail {
    private String receiptCode; // 入库单编码
    private String itemCode; // 商品编码
    private int quantity; // 商品数量
    private double price; // 商品单价
    private Item item; // 商品实体
    private Vendor vendor; // 供应商实体
    // 其他属性和 getter/setter 方法
}
  1. 编写查询方法,查询所有供应商都维护了入库单里所有的商品。
public List<Vendor> queryAllVendors() {
    List<Vendor> vendors = new ArrayList<>();
    // 查询所有商品
    List<Item> items = itemDao.queryAllItems();
    // 查询所有入库单明细
    List<ReceiptDetail> receiptDetails = receiptDetailDao.queryAllReceiptDetails();
    // 根据商品编码分组,统计每个商品在哪些入库单中出现
    Map<String, List<String>> itemReceiptMap = new HashMap<>();
    for (ReceiptDetail receiptDetail : receiptDetails) {
        String itemCode = receiptDetail.getItemCode();
        String receiptCode = receiptDetail.getReceiptCode();
        if (!itemReceiptMap.containsKey(itemCode)) {
            itemReceiptMap.put(itemCode, new ArrayList<>());
        }
        itemReceiptMap.get(itemCode).add(receiptCode);
    }
    // 遍历所有供应商,判断是否维护了所有商品
    for (Vendor vendor : vendorDao.queryAllVendors()) {
        boolean maintainAllItems = true;
        for (Item item : items) {
            if (!itemReceiptMap.containsKey(item.getItemCode())) {
                // 商品没有出现在任何入库单中,不需要判断供应商是否维护
                continue;
            }
            List<String> receipts = itemReceiptMap.get(item.getItemCode());
            boolean maintainItem = false;
            for (String receiptCode : receipts) {
                ReceiptDetail receiptDetail = receiptDetailDao.queryReceiptDetail(receiptCode, item.getItemCode());
                if (receiptDetail != null && receiptDetail.getVendorCode().equals(vendor.getVendorCode())) {
                    // 该供应商维护了该商品
                    maintainItem = true;
                    break;
                }
            }
            if (!maintainItem) {
                // 该供应商没有维护该商品
                maintainAllItems = false;
                break;
            }
        }
        if (maintainAllItems) {
            // 该供应商维护了所有商品
            vendors.add(vendor);
        }
    }
    return vendors;
}

在该方法中,先查询所有商品和入库单明细,然后根据商品编码分组,统计每个商品在哪些入库单中出现。接着遍历所有供应商,判断是否维护了所有商品,最后返回维护了所有商品的供应商列表。

Java 查询所有供应商维护所有商品的代码示例

原文地址: https://www.cveoy.top/t/topic/ovjV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录