public Map<String, Double> getMaterielInOut(Long orgId) {
    Map<String, Double> map = Maps.newHashMap();

    // 获取已执行的原料采购合同
    Map<String, Object> params = Maps.newHashMap();
    params.put("contractType", ContractType.MATERIAL);
    params.put("status", ContractStatus.EXECUTED);
    params.put("orgId", orgId);
    List<Contract> contracts = contractService.findBy(params);
    if (contracts != null && contracts.size() > 0) {
        for (Contract contract : contracts) {
            // 获取此合同的所有明细
            List<ContractDetail> details = contractDetailService.findByContractId(contract
                    .getId());
            if (details != null && details.size() > 0) {
                for (ContractDetail detail : details) {
                    String materielName = materielService.get(detail.getMaterielId()).getName();
                    if (map.containsKey(materielName)) {
                        // 已存在该物料,则将数量累加
                        map.put(materielName,
                                map.get(materielName) + detail.getAmount());
                    } else {
                        map.put(materielName, detail.getAmount());
                    }
                }
            }
        }
    }

    // 获取生产任务单
    params.clear();
    params.put("orgId", orgId);
    List<ProduceTask> tasks = produceTaskService.findBy(params);
    if (tasks != null && tasks.size() > 0) {
        for (ProduceTask task : tasks) {
            // 获取此任务单的所有明细
            List<ProduceTaskDetail> details = produceTaskDetailService
                    .findByProduceTaskId(task.getId());
            if (details != null && details.size() > 0) {
                for (ProduceTaskDetail detail : details) {
                    String materielName = materielService.get(
                            detail.getMaterielId()).getName();
                    if (map.containsKey(materielName)) {
                        // 已存在该物料,则将数量累加
                        map.put(materielName,
                                map.get(materielName) + detail.getAmount());
                    } else {
                        map.put(materielName, detail.getAmount());
                    }
                }
            }
        }
    }

    // 获取退料单
    params.clear();
    params.put("status", ReturnedStatus.PASS);
    params.put("orgId", orgId);
    List<Returned> returneds = returnedService.findBy(params);
    if (returneds != null && returneds.size() > 0) {
        for (Returned returned : returneds) {
            // 获取此退料单的所有明细
            List<ReturnedDetail> details = returnedDetailService
                    .findByReturnedId(returned.getId());
            if (details != null && details.size() > 0) {
                for (ReturnedDetail detail : details) {
                    String materielName = materielService.get(
                            detail.getMaterielId()).getName();
                    if (map.containsKey(materielName)) {
                        // 已存在该物料,则将数量减去
                        map.put(materielName,
                                map.get(materielName) - detail.getAmount());
                    }
                }
            }
        }
    }

    return map;
}

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

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