guoyuji
2024-09-06 1e9a52cf65f364b4332a008210700adbaea0c35e
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
@@ -239,44 +239,49 @@
            //获取对象集合循环进行新增修改
            if (!orderDetaillist.isEmpty()) {
                for (OrderDetail orderDetail : orderDetaillist) {
                    OrderDetail orderDetails =deliveryDetailMapper.selectOrderDetailDeliveryCount(orderDetail);
                    Boolean aBoolean1 =orderDetails.getQuantity()>= orderDetail.getDeliveryDetail().getQuantity()+orderDetails.getDeliveryNum();
                    Boolean aBoolean2 = !Integer.valueOf(orderDetails.getQuantity().toString()).equals(orderDetails.getDeliveryNum());
                    //判断是否已经发货
                    if(aBoolean1 && aBoolean2){
                        double deliveryDetailotherMoneys=0.0;
                        Integer calculateType=0;
                    if(orderDetail.getDeliveryDetail().getQuantity()>0){
                        OrderDetail orderDetails =deliveryDetailMapper.selectOrderDetailDeliveryCount(orderDetail);
                        Boolean aBoolean1 =orderDetails.getQuantity()>= orderDetail.getDeliveryDetail().getQuantity()+orderDetails.getDeliveryNum();
                        Boolean aBoolean2 = !Integer.valueOf(orderDetails.getQuantity().toString()).equals(orderDetails.getDeliveryNum());
                        //判断是否已经发货
                        if(aBoolean1 && aBoolean2){
                            double deliveryDetailotherMoneys=0.0;
                            Integer calculateType=0;
                        if (orderDetail.getOrder().getOrderId()==null){
                            Order order=deliveryMapper.selectOrderId(orderDetail.getOrderId());
                            calculateType=order.getCalculateType();
                        }else{
                            calculateType=orderDetail.getOrder().getCalculateType();
                        }
                        double deliveryDetailMoney = 0.0;
                        BigDecimal getComputeArea= BigDecimal.valueOf(orderDetail.getComputeArea());
                        BigDecimal getQuantity= BigDecimal.valueOf(orderDetail.getDeliveryDetail().getQuantity());
                        BigDecimal getPrice= BigDecimal.valueOf(orderDetail.getPrice());
                        BigDecimal getWidth= BigDecimal.valueOf(orderDetail.getWidth());
                        BigDecimal getHeight= BigDecimal.valueOf(orderDetail.getHeight());
                        BigDecimal singlePieceArea =getComputeArea.multiply(getQuantity).setScale(2, RoundingMode.HALF_UP)
                                .multiply(getPrice).setScale(2, RoundingMode.HALF_UP);
                        //根据订单计算方式进行金额计算
                        if (calculateType==1){
                            deliveryDetailMoney=singlePieceArea.doubleValue();
                        }else if (calculateType==2){
                            if(Objects.equals(orderDetail.getArea(), orderDetail.getComputeArea())){
                                deliveryDetailMoney=getWidth.multiply(getHeight).multiply(getQuantity).divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP)
                                        .multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue();
                            if (orderDetail.getOrder().getOrderId()==null){
                                Order order=deliveryMapper.selectOrderId(orderDetail.getOrderId());
                                calculateType=order.getCalculateType();
                            }else{
                                deliveryDetailMoney=singlePieceArea.doubleValue();
                                calculateType=orderDetail.getOrder().getCalculateType();
                            }
                        }else if (calculateType==3){
                            deliveryDetailMoney=getQuantity.multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue();
                            double deliveryDetailMoney = 0.0;
                            double deliveryDetailArea = 0.0;
                            BigDecimal getComputeArea= BigDecimal.valueOf(orderDetail.getComputeArea());
                            BigDecimal getQuantity= BigDecimal.valueOf(orderDetail.getDeliveryDetail().getQuantity());
                            BigDecimal getPrice= BigDecimal.valueOf(orderDetail.getPrice());
                            BigDecimal getWidth= BigDecimal.valueOf(orderDetail.getWidth());
                            BigDecimal getHeight= BigDecimal.valueOf(orderDetail.getHeight());
                            BigDecimal singlePieceArea =getComputeArea.multiply(getQuantity).setScale(2, RoundingMode.HALF_UP)
                                    .multiply(getPrice).setScale(2, RoundingMode.HALF_UP);
                            //根据订单计算方式进行金额计算
                            if (calculateType==1){
                                deliveryDetailMoney=singlePieceArea.doubleValue();
                                deliveryDetailArea=getComputeArea.multiply(getQuantity).doubleValue();
                        }
                            }else if (calculateType==2){
                                if(Objects.equals(orderDetail.getArea(), orderDetail.getComputeArea())){
                                    deliveryDetailMoney=getWidth.multiply(getHeight).multiply(getQuantity).divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP)
                                            .multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue();
                                    deliveryDetailArea=getWidth.multiply(getHeight).multiply(getQuantity).divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP).doubleValue();
                                }else{
                                    deliveryDetailMoney=singlePieceArea.doubleValue();
                                    deliveryDetailArea=getComputeArea.multiply(getQuantity).doubleValue();
                                }
                            }else if (calculateType==3){
                                deliveryDetailMoney=getQuantity.multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue();
                                deliveryDetailArea=getComputeArea.multiply(getQuantity).doubleValue();
                            }
                    /*if (calculateType==1){
                        deliveryDetailMoney=Double.parseDouble(String.format("%.2f",Double.parseDouble(
                                String.format("%.2f", orderDetail.getComputeArea()*orderDetail.getDeliveryDetail().getQuantity())
@@ -298,61 +303,60 @@
                        if(orderDetail.getOtherColumns()!="{}"&&orderDetail.getOtherColumns()!=null){
                            JSONObject jsonObject = JSON.parseObject(orderDetail.getOtherColumns());
                            for(String key : jsonObject.keySet()){
                                boolean isnull = key.contains("M");
                                if(isnull) {
                                    Map<String, Object> moneryItemmap = new HashMap<>();
                                    Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectOrderotherMoney(orderDetail.getOrderId(),orderDetail.getOrderNumber(), key, jsonObject.get(key).toString());
                                    if(deliveryDetailOtherMoney.get("monery")!=null){
                                        otherMoneys=otherMoneys+Double.valueOf(deliveryDetailOtherMoney.get("monery").toString());
                                        deliveryDetailotherMoneys=Double.valueOf(deliveryDetailOtherMoney.get("monery").toString());
                                        moneryItemmap.put("DeliveryDetailOtherMoney", deliveryDetailOtherMoney);
                                        moneryList.add(moneryItemmap);
                                    }else{
                                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
                                        return "false1";
                            if(orderDetail.getOtherColumns()!="{}"&&orderDetail.getOtherColumns()!=null){
                                JSONObject jsonObject = JSON.parseObject(orderDetail.getOtherColumns());
                                for(String key : jsonObject.keySet()){
                                    boolean isnull = key.contains("M");
                                    if(isnull) {
                                        Map<String, Object> moneryItemmap = new HashMap<>();
                                        Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectOrderotherMoney(orderDetail.getOrderId(),orderDetail.getOrderNumber(), key, jsonObject.get(key).toString());
                                        if(deliveryDetailOtherMoney.get("monery")!=null){
                                            otherMoneys=otherMoneys+Double.valueOf(deliveryDetailOtherMoney.get("monery").toString());
                                            deliveryDetailotherMoneys=Double.valueOf(deliveryDetailOtherMoney.get("monery").toString());
                                            moneryItemmap.put("DeliveryDetailOtherMoney", deliveryDetailOtherMoney);
                                            moneryList.add(moneryItemmap);
                                        }else{
                                            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
                                            return "false1";
                                        }
                                    }
                                }
                            }
                            //对循环明细的数据进行累加
                            quantity += orderDetail.getDeliveryDetail().getQuantity();
                            area += deliveryDetailArea;
                            money += deliveryDetailMoney;
                            Integer deliveryDetailmaximum = deliveryDetailMapper.getdeliveryDetailmaximum(oddNumber);
                            //额外金额修改
                            Map<String,String> otherColumns = JSON.parseObject(orderDetail.getOtherColumns(), new TypeReference<Map<String, String>>(){});
                            if(otherColumns!=null){
                                otherColumns.forEach((key, value) ->{
                                    boolean isnull = key.contains("M");
                                    if(isnull){
                                        deliveryOtherMoneyList.forEach(deliveryOtherMoney ->{
                                            if(deliveryOtherMoney.getColumn().equals(key)){
                                                deliveryOtherMoney.setQuantity(deliveryOtherMoney.getQuantity()+( Double.valueOf(value)* orderDetail.getDeliveryDetail().getQuantity()));
                                            }
                                        });
                                    }
                                });
                            }
                            //新增发货明细数据
                            deliveryDetailMapper.insertDeliveryDetail(orderDetail, oddNumber, deliveryDetailmaximum + 1,deliveryDetailMoney,deliveryDetailotherMoneys,deliveryDetailArea);
                            //修改订单明细
                            deliveryDetailMapper.updateOrderDetailDeliveryNum(orderDetail);
                            //修改库存表出库数量
                            finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getOrderId(), orderDetail.getOrderNumber(), orderDetail.getDeliveryDetail().getQuantity());
                        }else{
                            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
                            return "false2";
                        }
                        //对循环明细的数据进行累加
                        quantity += orderDetail.getDeliveryDetail().getQuantity();
                        area += orderDetail.getComputeArea() * orderDetail.getDeliveryDetail().getQuantity();
                        money += deliveryDetailMoney;
                        Integer deliveryDetailmaximum = deliveryDetailMapper.getdeliveryDetailmaximum(oddNumber);
                        //额外金额修改
                        Map<String,String> otherColumns = JSON.parseObject(orderDetail.getOtherColumns(), new TypeReference<Map<String, String>>(){});
                        if(otherColumns!=null){
                            otherColumns.forEach((key, value) ->{
                                boolean isnull = key.contains("M");
                                if(isnull){
                                    deliveryOtherMoneyList.forEach(deliveryOtherMoney ->{
                                        if(deliveryOtherMoney.getColumn().equals(key)){
                                            deliveryOtherMoney.setQuantity(deliveryOtherMoney.getQuantity()+( Double.valueOf(value)* orderDetail.getDeliveryDetail().getQuantity()));
                                        }
                                    });
                                }
                            });
                        }
                        //新增发货明细数据
                        deliveryDetailMapper.insertDeliveryDetail(orderDetail, oddNumber, deliveryDetailmaximum + 1,deliveryDetailMoney,deliveryDetailotherMoneys);
                        //修改订单明细
                        deliveryDetailMapper.updateOrderDetailDeliveryNum(orderDetail);
                        //修改库存表出库数量
                        finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getOrderId(), orderDetail.getOrderNumber(), orderDetail.getDeliveryDetail().getQuantity());
                    }else{
                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
                        return "false2";
                    }
                }
                //往订单其他金额副表传入数据