2 天以前 f4d4d29368ccacb807f93e2033cd4a643a3ddade
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -90,11 +90,10 @@
        return productionProductMainMapper.listPageProductionProductMainDto(page, productionProductMainDto);
    }
    public BigDecimal getRatio(List<ProductWorkOrder> productWorkOrderList){
    public BigDecimal getRatio(List<ProductWorkOrder> productWorkOrderList,BigDecimal quantity){
        // 获取完成数量
        BigDecimal completeQuantity = productWorkOrderList
                .stream()
                .filter(item -> item.getStatus() == 3)
                .map(ProductWorkOrder::getCompleteQuantity)
                .reduce(BigDecimal.ZERO, BigDecimal::add);
        // 获取所有数量
@@ -102,13 +101,12 @@
                .stream()
                .map(ProductWorkOrder::getPlanQuantity)
                .reduce(BigDecimal.ZERO, BigDecimal::add);
        // 获取未完成数量
        BigDecimal unCompleteQuantity = totalQuantity.subtract(completeQuantity);
        if (unCompleteQuantity.compareTo(BigDecimal.ZERO) <= 0) {
        completeQuantity = completeQuantity.add(quantity); // 加上报工数量
        if (completeQuantity.compareTo(BigDecimal.ZERO) <= 0) {
            return BigDecimal.ZERO;
        }
        // 计算比例
        return unCompleteQuantity.divide(totalQuantity, 2, RoundingMode.HALF_UP);
        return completeQuantity.divide(totalQuantity, 2, RoundingMode.HALF_UP);
    }
    @Override
@@ -126,7 +124,7 @@
        if(CollectionUtils.isEmpty(productWorkOrderList)){
            productWorkOrderList = new ArrayList<>();
        }
        BigDecimal ratio = getRatio(productWorkOrderList);
        BigDecimal ratio = getRatio(productWorkOrderList,dto.getQuantity().subtract(dto.getScrapQty() == null ? BigDecimal.ZERO : dto.getScrapQty()));
        //当前具体工序
        ProductProcess productProcess = productProcessMapper.selectById(productProcessRouteItem.getProcessId());
@@ -260,7 +258,6 @@
            }
            // 通过比例计算完成数量
            productOrder.setCompleteQuantity(productOrder.getQuantity().multiply(ratio));
            if (productWorkOrderList.size() == productProcessRouteItems.size() - 1) {
                //如果是最后一道工序报工之后生产订单完成数量+
                if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) == 0) {
                    productOrder.setCompleteQuantity(productOrder.getQuantity());
@@ -269,7 +266,9 @@
                    // 生产完成入库
                    stockUtils.addStock(productProcessRouteItem.getProductModelId(), productOrder.getCompleteQuantity(), StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
                }
            }
//            if (productWorkOrderList.stream().filter(item -> item.getStatus() == 3).count() == productProcessRouteItems.size() - 1) {
//
//            }
            productOrderMapper.updateById(productOrder);
            /*添加生产核算*/
            SalesLedgerProductionAccounting salesLedgerProductionAccounting = SalesLedgerProductionAccounting.builder()
@@ -322,8 +321,10 @@
        }
        //判断是否是最后一道工序
        List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
        if (productProcessRouteItem.getDragSort() != null && productProcessRouteItems != null && productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
//        List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
//        if (productProcessRouteItem.getDragSort() != null && productProcessRouteItems != null && productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
//
//        }
            ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
            if (productOrder != null) {
                BigDecimal orderCompleteQty = productOrder.getCompleteQuantity() == null ? BigDecimal.ZERO : productOrder.getCompleteQuantity();
@@ -338,7 +339,7 @@
                if(CollectionUtils.isEmpty(productWorkOrderList)){
                    productWorkOrderList = new ArrayList<>();
                }
                BigDecimal ratio = getRatio(productWorkOrderList);
            BigDecimal ratio = getRatio(productWorkOrderList,BigDecimal.ZERO);
                productOrder.setCompleteQuantity(productOrder.getQuantity().multiply(ratio));
                productOrder.setEndTime(null);
@@ -346,7 +347,6 @@
                productOrderMapper.updateById(productOrder);
            } else {
                throw new ServiceException("关联的生产订单不存在");
            }
        }
        //删除质检
        qualityInspectMapper.selectList(