廖井涛
17 小时以前 f0420251442ac6f7bfb6beafa37ad045b4f6478a
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
@@ -6,7 +6,9 @@
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.example.erp.dto.sd.DeliveryDetailDTO;
import com.example.erp.dto.sd.DeliveryDetailProductDTO;
@@ -60,6 +62,8 @@
    SysErrorService sysErrorService;
    @Autowired
    FinishedGoodsInventoryService finishedGoodsInventoryService;
    @Autowired
    OrderOtherMoneyMapper orderOtherMoneyMapper;
    public Map<String, Object> getSelectShippingOrder(Integer pageNum, Integer pageSize,List<String> selectDate, Map<String,Object> config) throws JsonProcessingException {
@@ -224,6 +228,7 @@
                        //还原库存数以及订单明细的发货数
                        finishedGoodsInventoryMapper.updateInventoryquantityIntBybox(deliveryDetail.getOrderId(), deliveryDetail.getOrderNumber(), deliveryDetail.getQuantity(),deliveryDetail.getBoxNo());
                        deliveryDetailMapper.updateIsNotOrderDetailDeliveryNum(deliveryDetail.getOrderId(), deliveryDetail.getOrderNumber(), deliveryDetail.getQuantity());
                    }
                }
                //还原发货表的面积数量金额
@@ -329,6 +334,27 @@
                        deliveryDetailMoney=Double.parseDouble(String.format("%.2f",orderDetail.getPrice() * orderDetail.getDeliveryDetail().getQuantity()));
                    }*/
                            List<OrderOtherMoney> orderOtherMoneyList = orderOtherMoneyMapper.selectList(
                                    new QueryWrapper<OrderOtherMoney>()
                                            .eq("order_id",orderDetail.getOrderId())
                                            .eq("delivery_state",0)
                                            .isNull("`column`")
                            );
                            if(orderOtherMoneyList.size()>0){
                                for (OrderOtherMoney orderOtherMoney:orderOtherMoneyList){
                                    otherMoneys=otherMoneys+orderOtherMoney.getMoney();
                                    deliveryDetailMapper.insertDeliveryOtherMoney(orderOtherMoney,oddNumber);
                                }
                                orderOtherMoneyMapper.update(null, new LambdaUpdateWrapper<OrderOtherMoney>()
                                        .set(OrderOtherMoney::getDeliveryState, 1)
                                        .eq(OrderOtherMoney::getOrderId, orderDetail.getOrderId())
                                        .isNull(OrderOtherMoney::getColumn)
                                );
                            }
@@ -570,12 +596,15 @@
                List<Map<String, Object>> deliveryDetailList2;
                if(state==3){
                    //洛阳有金额
                    deliveryDetailList2=deliveryDetailMapper.getSelectDeliveryPrintingMoneySpecifications(detail.getDeliveryId(),
                            detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId());
                }else if(state==4){
                    //洛阳无金额
                    deliveryDetailList2=deliveryDetailMapper.getSelectDeliveryPrintingNoMoneySpecifications(detail.getDeliveryId(),
                            detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId());
                }else{
                    //通用
                    deliveryDetailList2 = deliveryDetailMapper.getSelectDeliveryDetailPrinting(detail.getDeliveryId(),
                            detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId());
                }
@@ -1015,4 +1044,51 @@
        map.put("totalSum",totalSum);
        return map;
    }
    public boolean updateDeliveryMoney(OrderDetail orderDetail,Order order) {
        List<Delivery> deliveryList=deliveryDetailMapper.getDeliverOrderNumber(orderDetail.getOrderId(),orderDetail.getOrderNumber());
        for (Delivery delivery : deliveryList) {
            if(delivery.getDeliveryState()==0){
                List<DeliveryDetail> deliveryDetailList=deliveryDetailMapper.getDeliverDetailOrderNumber(orderDetail.getOrderId(),orderDetail.getOrderNumber(),delivery.getDeliveryId());
                for (DeliveryDetail deliveryDetail : deliveryDetailList) {
                    deliveryDetail = updateOrderMoneyComputeds(deliveryDetail,orderDetail,order.getCalculateType());
                    deliveryDetailMapper.updateDeliveryDetailmonye(orderDetail.getPrice(),deliveryDetail);
                }
                BigDecimal money = new BigDecimal("0");
                List<DeliveryDetail> deliveryDetailListNew=deliveryDetailMapper.getIsNotDeliveryDetail(delivery.getDeliveryId());
                for (DeliveryDetail deliveryDetail : deliveryDetailListNew) {
                    BigDecimal getMoney= BigDecimal.valueOf(deliveryDetail.getMoney());
                    money=money.add(getMoney);
                }
                deliveryDetailMapper.updateDeliverymonye(delivery.getDeliveryId(), (double) Math.round(money.doubleValue()));
            }
        }
        return true;
    }
    private DeliveryDetail updateOrderMoneyComputeds(DeliveryDetail deliveryDetail,OrderDetail orderDetail, Integer calculateType) {
        BigDecimal getPrice= BigDecimal.valueOf(orderDetail.getPrice());
        BigDecimal getQuantity= BigDecimal.valueOf(deliveryDetail.getQuantity());
        BigDecimal getComputeGrossArea= BigDecimal.valueOf(deliveryDetail.getArea());
        BigDecimal getComputeArea= BigDecimal.valueOf(orderDetail.getComputeArea());
        BigDecimal getWidth= BigDecimal.valueOf(orderDetail.getWidth());
        BigDecimal getHeight= BigDecimal.valueOf(orderDetail.getHeight());
        if (calculateType == 3) {
            deliveryDetail.setMoney(getPrice.multiply(getQuantity).setScale(2, RoundingMode.HALF_UP).doubleValue());
        }else if (calculateType == 4) {
            if(Objects.equals(orderDetail.getArea(), orderDetail.getComputeArea())&&Objects.equals(orderDetail.getGrossArea(), orderDetail.getComputeGrossArea())){
                deliveryDetail.setMoney(getWidth.multiply(getHeight).multiply(getQuantity).multiply(getPrice).
                        divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP).doubleValue());
            }else{
                deliveryDetail.setMoney(getPrice.multiply(getComputeGrossArea).setScale(2, RoundingMode.HALF_UP).doubleValue());
            }
        }else if (calculateType == 1){
            deliveryDetail.setMoney(getPrice.multiply(getComputeArea).multiply(getQuantity).setScale(2, RoundingMode.HALF_UP).doubleValue());
        }else{
            deliveryDetail.setMoney(getPrice.multiply(getComputeGrossArea).setScale(2, RoundingMode.HALF_UP).doubleValue());
        }
        return deliveryDetail;
    }
}