guoyujie
2025-08-06 c18fecddd8c9a165c6a1026c5573f864e1713718
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -318,31 +318,36 @@
        orderDetails.forEach(orderDetail -> {
            //获取最小弧度
            OrderGlassDetail orderGlassDetail = orderGlassDetailMapper
                    .selectOne(new LambdaQueryWrapper<OrderGlassDetail>()
            List<OrderGlassDetail> orderGlassDetails = orderGlassDetailMapper
                    .selectList(new LambdaQueryWrapper<OrderGlassDetail>()
                            .eq(OrderGlassDetail::getOrderId, orderId)
                            .eq(OrderGlassDetail::getOrderNumber, orderDetail.getOrderNumber())
                            .orderByDesc(OrderGlassDetail::getArc)
                            .last("limit 1")
                    );
            //获取当前序号产品Math.cos(
            Product product = productMapper.selectById(orderDetail.getProductId());
            //内半径
            Double radius = orderDetail.getBendRadius() - product.getTotalThickness();
            //内片内弧长
            Double innerArc = orderGlassDetail.getArc()
                    -orderGlassDetail.getArc()*product.getTotalThickness()/orderDetail.getBendRadius();
            for(OrderGlassDetail orderGlassDetail:orderGlassDetails) {
                //获取当前层数与之前层数的厚度
                Double glassThickness = productMapper
                        .getGlassThickness(orderDetail.getProductId(), orderGlassDetail.getTechnologyNumber());
                //内半径
                Double radius = orderDetail.getBendRadius() - glassThickness;
            //拱高
            String archRiseS =  String.format("%.1f",radius-radius*Math.cos(innerArc/2/radius));
            Double archRise = Double.parseDouble(archRiseS);
            orderDetail.setArchRise(archRise);
            orderDetailMapper.update(null,new LambdaUpdateWrapper<OrderDetail>()
                    .set(OrderDetail::getArchRise,archRise)
                    .eq(OrderDetail::getId, orderDetail.getId())
            );
                //内片内弧长
                Double innerArc = orderGlassDetails.get(0).getArc()
                        - orderGlassDetails.get(0).getArc() * glassThickness / orderDetail.getBendRadius();
                //拱高
                String archRiseS = String.format("%.1f", radius - radius * Math.cos(innerArc / 2 / radius));
                Double archRise = Double.parseDouble(archRiseS);
                orderGlassDetailMapper.update(null, new LambdaUpdateWrapper<OrderGlassDetail>()
                        .set(OrderGlassDetail::getArchRise, archRise)
                        .eq(OrderGlassDetail::getId, orderGlassDetail.getId())
                );
//                orderDetailMapper.update(null,new LambdaUpdateWrapper<OrderDetail>()
//                        .set(OrderDetail::getArchRise,archRise)
//                        .eq(OrderDetail::getId, orderDetail.getId())
            }
        });