5 天以前 7a7a4b207d96a88bb1b324513ad475071289260e
yys
1.删除报工记录bug
已修改1个文件
44 ■■■■■ 文件已修改
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -90,18 +90,7 @@
        return productionProductMainMapper.listPageProductionProductMainDto(page, productionProductMainDto);
    }
    @Override
    public Boolean addProductMain(ProductionProductMainDto dto) {
        SysUser user = userMapper.selectUserById(dto.getUserId());
        ProductionProductMain productionProductMain = new ProductionProductMain();
        //当前工艺路线对应的工序详情
        ProductProcessRouteItem productProcessRouteItem = productProcessRouteItemMapper.selectById(dto.getProductProcessRouteItemId());
        if (productProcessRouteItem == null) {
            throw new RuntimeException("工艺路线项不存在");
        }
        // 获取订单的工单
        List<ProductWorkOrder> productWorkOrderList = productWorkOrderMapper.selectList(Wrappers.<ProductWorkOrder>lambdaQuery()
                .eq(ProductWorkOrder::getProductOrderId, productProcessRouteItem.getProductOrderId()));
    public BigDecimal getRatio(List<ProductWorkOrder> productWorkOrderList){
        // 获取完成数量
        BigDecimal completeQuantity = productWorkOrderList
                .stream()
@@ -116,13 +105,29 @@
        // 获取未完成数量
        BigDecimal unCompleteQuantity = totalQuantity.subtract(completeQuantity);
        if (unCompleteQuantity.compareTo(BigDecimal.ZERO) <= 0) {
            throw new ServiceException("该工单已全部完成");
            return BigDecimal.ZERO;
        }
        // 计算比例
        BigDecimal ratio = unCompleteQuantity.divide(totalQuantity, 2, RoundingMode.HALF_UP);
        return unCompleteQuantity.divide(totalQuantity, 2, RoundingMode.HALF_UP);
    }
    @Override
    public Boolean addProductMain(ProductionProductMainDto dto) {
        SysUser user = userMapper.selectUserById(dto.getUserId());
        ProductionProductMain productionProductMain = new ProductionProductMain();
        //当前工艺路线对应的工序详情
        ProductProcessRouteItem productProcessRouteItem = productProcessRouteItemMapper.selectById(dto.getProductProcessRouteItemId());
        if (productProcessRouteItem == null) {
            throw new RuntimeException("工艺路线项不存在");
        }
        // 获取订单的工单
        List<ProductWorkOrder> productWorkOrderList = productWorkOrderMapper.selectList(Wrappers.<ProductWorkOrder>lambdaQuery()
                .eq(ProductWorkOrder::getProductOrderId, productProcessRouteItem.getProductOrderId()));
        if(CollectionUtils.isEmpty(productWorkOrderList)){
            productWorkOrderList = new ArrayList<>();
        }
        BigDecimal ratio = getRatio(productWorkOrderList);
        //当前具体工序
        ProductProcess productProcess = productProcessMapper.selectById(productProcessRouteItem.getProcessId());
        //工艺路线中当前工序对应的产出规格型号
@@ -257,8 +262,8 @@
            productOrder.setCompleteQuantity(productOrder.getQuantity().multiply(ratio));
            if (productWorkOrderList.size() == productProcessRouteItems.size() - 1) {
                //如果是最后一道工序报工之后生产订单完成数量+
                productOrder.setCompleteQuantity(productOrder.getQuantity());
                if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) == 0) {
                    productOrder.setCompleteQuantity(productOrder.getQuantity());
                    productOrder.setEndTime(LocalDateTime.now());//结束时间
                    productOrder.setStatus("已完成");
                    // 生产完成入库
@@ -328,8 +333,13 @@
                BigDecimal actualQualifiedQty = totalQty.subtract(scrapQty);
                BigDecimal newCompleteQty = orderCompleteQty.subtract(actualQualifiedQty);
                productOrder.setCompleteQuantity(newCompleteQty.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : newCompleteQty);
                List<ProductWorkOrder> productWorkOrderList = productWorkOrderMapper.selectList(Wrappers.<ProductWorkOrder>lambdaQuery()
                        .eq(ProductWorkOrder::getProductOrderId, productProcessRouteItem.getProductOrderId()));
                if(CollectionUtils.isEmpty(productWorkOrderList)){
                    productWorkOrderList = new ArrayList<>();
                }
                BigDecimal ratio = getRatio(productWorkOrderList);
                productOrder.setCompleteQuantity(productOrder.getQuantity().multiply(ratio));
                productOrder.setEndTime(null);
                productOrder.setStatus("生产中");