liujie
2023-05-15 6225c37d2f53adf26daf6b4859af5fb5c6fad088
src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
@@ -1,561 +1,545 @@
package com.stylefeng.guns.modular.system.service.impl;
    package com.stylefeng.guns.modular.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.system.dao.*;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.ITBoxSizeService;
import com.stylefeng.guns.modular.system.service.ITDriverService;
import com.stylefeng.guns.modular.system.service.ITOrderService;
import com.stylefeng.guns.modular.system.utils.GoogleMap.GoogleMapUtil;
import com.stylefeng.guns.modular.system.utils.UserInfoUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
    import cn.hutool.core.bean.BeanUtil;
    import cn.hutool.core.date.DateUtil;
    import com.baomidou.mybatisplus.mapper.EntityWrapper;
    import com.baomidou.mybatisplus.plugins.Page;
    import com.baomidou.mybatisplus.service.impl.ServiceImpl;
    import com.stylefeng.guns.core.util.ToolUtil;
    import com.stylefeng.guns.modular.system.dao.*;
    import com.stylefeng.guns.modular.system.model.*;
    import com.stylefeng.guns.modular.system.service.ITBoxSizeService;
    import com.stylefeng.guns.modular.system.service.ITDriverService;
    import com.stylefeng.guns.modular.system.service.ITOrderService;
    import com.stylefeng.guns.modular.system.utils.GoogleMap.GoogleMapUtil;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
    import javax.annotation.Resource;
    import java.math.BigDecimal;
    import java.math.BigInteger;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.*;
    import java.util.stream.Collectors;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-03
 */
@Service
public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> implements ITOrderService {
    /**
     * <p>
     *  服务实现类
     * </p>
     *
     * @author stylefeng
     * @since 2023-02-03
     */
    @Service
    public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> implements ITOrderService {
    @Autowired
    private TUserMapper tUserMapper;
        @Autowired
        private TUserMapper tUserMapper;
    @Autowired
    private UserMapper userMapper;
        @Autowired
        private UserMapper userMapper;
    @Autowired
    private TGoodsMapper tGoodsMapper;
        @Autowired
        private TGoodsMapper tGoodsMapper;
    @Autowired
    private TCompanyMapper tCompanyMapper;
        @Autowired
        private TCompanyMapper tCompanyMapper;
    @Autowired
    private TPriceMapper priceMapper;
        @Autowired
        private TPriceMapper priceMapper;
    @Autowired
    private TUserFeeSettingMapper tUserFeeSettingMapper;
        @Autowired
        private TUserFeeSettingMapper tUserFeeSettingMapper;
    @Autowired
    private TGroupMapper tGroupMapper;
        @Autowired
        private TGroupMapper tGroupMapper;
    @Autowired
    private TQuoteMapper tQuoteMapper;
        @Autowired
        private TQuoteMapper tQuoteMapper;
    @Autowired
    private ITBoxSizeService sizeService;
        @Autowired
        private ITBoxSizeService sizeService;
    @Autowired
    private GoogleMapUtil googleMapUtil;
        @Autowired
        private GoogleMapUtil googleMapUtil;
    @Autowired
    private TPortMapper portMapper;
        @Autowired
        private TPortMapper portMapper;
    @Autowired
    private WareHouseMapper wareHouseMapper;
        @Autowired
        private WareHouseMapper wareHouseMapper;
    @Autowired
    private DriverNoteMapper driverNoteMapper;
        @Autowired
        private DriverNoteMapper driverNoteMapper;
    @Autowired
    private ITDriverService driverService;
        @Autowired
        private ITDriverService driverService;
    @Resource
    private TCarriersMapper carriersMapper;
        @Resource
        private TCarriersMapper carriersMapper;
    @Override
    public List<ReceivableVo> getReceivable(Page<ReceivableVo> receivableVoPage, String time, String name) {
        //TODO 时间保留
        List<ReceivableVo> list = this.baseMapper.getReceivable(receivableVoPage,name);
        @Override
        public List<ReceivableVo> getReceivable(Page<ReceivableVo> receivableVoPage, String time, String name,int id) {
            //TODO 时间保留
            List<ReceivableVo> list = this.baseMapper.getReceivable(receivableVoPage,name,id);
        Calendar instance = Calendar.getInstance();
        instance.setTime(new Date());
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String format = simpleDateFormat.format(new Date())+" 23:59:59";
        // 30天
        instance.add(Calendar.DATE,-30);
        String time1 = simpleDateFormat.format(instance.getTime())+" 00:00:01";
        // 60tian
        instance.add(Calendar.DATE,-30);
        String time2 = simpleDateFormat.format(instance.getTime())+" 00:00:01";
        // 90tian
        instance.add(Calendar.DATE,-30);
        String time3 = simpleDateFormat.format(instance.getTime())+" 00:00:01";
            Calendar instance = Calendar.getInstance();
            instance.setTime(new Date());
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
            String format = simpleDateFormat.format(new Date())+" 23:59:59";
            // 30天
            instance.add(Calendar.DATE,-30);
            String time1 = simpleDateFormat.format(instance.getTime())+" 00:00:01";
            // 60tian
            instance.add(Calendar.DATE,-30);
            String time2 = simpleDateFormat.format(instance.getTime())+" 00:00:01";
            // 90tian
            instance.add(Calendar.DATE,-30);
            String time3 = simpleDateFormat.format(instance.getTime())+" 00:00:01";
        for (ReceivableVo receivableVo : list) {
            // 根据id获取30天内的金额
            receivableVo.setTwentyDay(this.baseMapper.getTwentyDay(receivableVo.getUserId(),format,time1)==null?0:this.baseMapper.getTwentyDay(receivableVo.getUserId(),format,time1));
            for (ReceivableVo receivableVo : list) {
                // 根据id获取30天内的金额
                receivableVo.setTwentyDay(this.baseMapper.getTwentyDay(receivableVo.getUserId(),format,time1)==null?0:this.baseMapper.getTwentyDay(receivableVo.getUserId(),format,time1));
            // 30-60tian
            receivableVo.setThirtyDay(this.baseMapper.getTwentyDay(receivableVo.getUserId(),time1,time2)==null?0:this.baseMapper.getTwentyDay(receivableVo.getUserId(),time1,time2));
            receivableVo.setSixtyDay(this.baseMapper.getTwentyDay(receivableVo.getUserId(),time2,time3)==null?0:this.baseMapper.getTwentyDay(receivableVo.getUserId(),time2,time3));
            receivableVo.setNinetyDay(this.baseMapper.getNineDay(receivableVo.getUserId(),time3)==null?0:this.baseMapper.getNineDay(receivableVo.getUserId(),time3));
                // 30-60tian
                receivableVo.setThirtyDay(this.baseMapper.getTwentyDay(receivableVo.getUserId(),time1,time2)==null?0:this.baseMapper.getTwentyDay(receivableVo.getUserId(),time1,time2));
                receivableVo.setSixtyDay(this.baseMapper.getTwentyDay(receivableVo.getUserId(),time2,time3)==null?0:this.baseMapper.getTwentyDay(receivableVo.getUserId(),time2,time3));
                receivableVo.setNinetyDay(this.baseMapper.getNineDay(receivableVo.getUserId(),time3)==null?0:this.baseMapper.getNineDay(receivableVo.getUserId(),time3));
        }
        return list;
    }
    @Override
    public List<ShouldPayVo> getPayList(Page<ShouldPayVo> receivableVoPage, String time, String name) {
        List<ShouldPayVo> list = this.baseMapper.getPayList(receivableVoPage,name);
        Calendar instance = Calendar.getInstance();
        instance.setTime(new Date());
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String format = simpleDateFormat.format(new Date())+" 23:59:59";
        // 30天
        instance.add(Calendar.DATE,-30);
        String time1 = simpleDateFormat.format(instance.getTime())+" 00:00:01";
        // 60tian
        instance.add(Calendar.DATE,-30);
        String time2 = simpleDateFormat.format(instance.getTime())+" 00:00:01";
        // 90tian
        instance.add(Calendar.DATE,-30);
        String time3 = simpleDateFormat.format(instance.getTime())+" 00:00:01";
        for (ShouldPayVo shouldPayVo : list) {
            shouldPayVo.setTwentyDay(this.baseMapper.getTwentyDayPay(shouldPayVo.getUserId(),format,time1)==null?0:this.baseMapper.getTwentyDayPay(shouldPayVo.getUserId(),format,time1));
            // 30-60tian
            shouldPayVo.setThirtyDay(this.baseMapper.getTwentyDayPay(shouldPayVo.getUserId(),time1,time2)==null?0:this.baseMapper.getTwentyDayPay(shouldPayVo.getUserId(),time1,time2));
            shouldPayVo.setSixtyDay(this.baseMapper.getTwentyDayPay(shouldPayVo.getUserId(),time2,time3)==null?0:this.baseMapper.getTwentyDayPay(shouldPayVo.getUserId(),time2,time3));
            shouldPayVo.setNinetyDay(this.baseMapper.getNineDayPay(shouldPayVo.getUserId(),time3)==null?0:this.baseMapper.getNineDayPay(shouldPayVo.getUserId(),time3));
        }
        return list;
    }
    @Override
    public List<ReceivablesList> listOfReceivables(Page<ReceivablesList> receivableVoPage, String time, String name, Integer invoicesId, Integer orderId, Integer state) {
        String sTime=null;
        String eTime =null;
        if(Objects.nonNull(time)){
            sTime = time.split(" - ")[0]+" 00:00:01";
            eTime = time.split(" - ")[1]+" 23:59:59";
        }
        List<ReceivablesList> receivablesLists = this.baseMapper.listOfReceivables(receivableVoPage, sTime, eTime, name, invoicesId, orderId, state);
        for (ReceivablesList receivablesList : receivablesLists) {
           Integer id= this.baseMapper.getPayStatus(receivablesList.getOrderId());
            if(id==null){
               receivablesList.setPayStatus(1);
           }else {
               receivablesList.setPayStatus(2);
           }
        }
        return receivablesLists;
    }
    @Override
    public List<PayList> listOfPay(Page<PayList> receivableVoPage, String time, String name, Integer billId, Integer orderId, Integer state) {
        String sTime=null;
        String eTime =null;
        if(Objects.nonNull(time)){
            sTime = time.split(" - ")[0]+" 00:00:01";
            eTime = time.split(" - ")[1]+" 23:59:59";
        }
        List<PayList> list = this.baseMapper.listOfPay(receivableVoPage, sTime, eTime, name, billId, orderId, state);
        return list;
    }
    @Override
    public InvoicesCarVo listOPayInfo(Long number) {
        InvoicesVo info1 = tUserMapper.getOrderInfo(number);
        InvoicesCarVo info = new InvoicesCarVo();
        BeanUtil.copyProperties(info1,info);
        // 根据订单id 获取货物信息
        Long id = info.getId();
        TOrder tOrder = this.baseMapper.selectById(id);
        List<TGoods> orders = tGoodsMapper.selectList(new EntityWrapper<TGoods>().eq("order_id", id));
        ArrayList<TGoodsVo> tGoodsVos = new ArrayList<>();
        TCompany tCompany = tCompanyMapper.selectById(info.getCompanyId());
        List<TBoxSize> tBoxSizes = sizeService.selectList(null);
        for (TGoods order : orders) {
            TGoodsVo tGoodsVo = new TGoodsVo();
            tGoodsVo.setName(tCompany.getName());
            tGoodsVo.setSize(order.getSize());
            tGoodsVo.setKg(order.getKg());
            String size = order.getSize();
            for (TBoxSize tBoxSize : tBoxSizes) {
                if(size.equals(tBoxSize.getBoxName())){
                    tGoodsVo.setLength(tBoxSize.getBoxLength());
                    tGoodsVo.setWidth(tBoxSize.getBoxWidth());
                    tGoodsVo.setHeight(tBoxSize.getBoxHigh());
                }
            }
            tGoodsVos.add(tGoodsVo);
        }
        // 付卡车公司钱
        BigDecimal payMoney = tOrder.getPayMoney();
        Integer carriersId = tOrder.getCarriersId();
        TCarriers tCarriers = carriersMapper.selectById(carriersId);
        Double commission = tCarriers.getCommission();
        BigDecimal multiply = new BigDecimal(commission).multiply(new BigDecimal(0.01));
        BigDecimal multiply1 = payMoney.multiply(multiply);
        info.setGoodsVos(tGoodsVos);
        info.setAmount(multiply1.doubleValue());
        return info;
    }
    @Override
    public Boolean confirmationOfPayment(Long number, int type, String remark) {
        Boolean b =false;
        // 同意
        if(type==1){
             b = this.baseMapper.agreePay(number);
        }else {
             b = this.baseMapper.noAgreePay(number,remark);
            return list;
        }
        return b;
    }
        @Override
        public List<ShouldPayVo> getPayList(Page<ShouldPayVo> receivableVoPage, String time, String name,int id) {
            List<ShouldPayVo> list = this.baseMapper.getPayList(receivableVoPage,name,id);
    @Override
    public Boolean agreeOfPayment(Long number) {
        return this.baseMapper.agreeOfPayment(number);
    }
            Calendar instance = Calendar.getInstance();
            instance.setTime(new Date());
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
            String format = simpleDateFormat.format(new Date())+" 23:59:59";
            // 30天
            instance.add(Calendar.DATE,-30);
            String time1 = simpleDateFormat.format(instance.getTime())+" 00:00:01";
            // 60tian
            instance.add(Calendar.DATE,-30);
            String time2 = simpleDateFormat.format(instance.getTime())+" 00:00:01";
            // 90tian
            instance.add(Calendar.DATE,-30);
            String time3 = simpleDateFormat.format(instance.getTime())+" 00:00:01";
    @Resource
    private TDriverMapper driverMapper;
    @Resource
    private TPowerUnitsMapper powerUnitsMapper;
            for (ShouldPayVo shouldPayVo : list) {
                shouldPayVo.setTwentyDay(this.baseMapper.getTwentyDayPay(shouldPayVo.getUserId(),format,time1)==null?0:this.baseMapper.getTwentyDayPay(shouldPayVo.getUserId(),format,time1));
    @Override
    public IndexInfo indexList(String time) {
        IndexInfo indexInfo = new IndexInfo();
        // 卡车公司收入时间
        String sTime=null;
        String eTime=null;
        if(ToolUtil.isNotEmpty(time)){
            sTime=time.split(" - ")[0]+" 00:00:01";
            eTime=time.split(" - ")[1]+" 23:59:59";
                // 30-60tian
                shouldPayVo.setThirtyDay(this.baseMapper.getTwentyDayPay(shouldPayVo.getUserId(),time1,time2)==null?0:this.baseMapper.getTwentyDayPay(shouldPayVo.getUserId(),time1,time2));
                shouldPayVo.setSixtyDay(this.baseMapper.getTwentyDayPay(shouldPayVo.getUserId(),time2,time3)==null?0:this.baseMapper.getTwentyDayPay(shouldPayVo.getUserId(),time2,time3));
                shouldPayVo.setNinetyDay(this.baseMapper.getNineDayPay(shouldPayVo.getUserId(),time3)==null?0:this.baseMapper.getNineDayPay(shouldPayVo.getUserId(),time3));
            }
            return list;
        }
        Integer companyId = UserInfoUtil.getId();
        // 获取卡车公司收入
        Double companyIncome = this.baseMapper.getCompanyIncome(companyId, sTime, eTime);
        indexInfo.setAccountsReceivable(new BigDecimal(companyIncome));
        // 获取卡车公司支出-》 是否存在承运商  -》算价格
        EntityWrapper<TOrder> wrapper = new EntityWrapper<>();
        wrapper.eq("company_id",companyId);
        wrapper.eq("carriers_pay_status",1);
        if(sTime!=null){
            wrapper.between("success_time",sTime,eTime);
        @Override
        public List<ReceivablesList> listOfReceivables(Page<ReceivablesList> receivableVoPage, String time, String name, Integer invoicesId, Integer orderId, Integer state,Integer id) {
            String sTime=null;
            String eTime =null;
            if(Objects.nonNull(time)){
                sTime = time.split(" - ")[0]+" 00:00:01";
                eTime = time.split(" - ")[1]+" 23:59:59";
            }
            List<ReceivablesList> receivablesLists = this.baseMapper.listOfReceivables(receivableVoPage, sTime, eTime, name, invoicesId, orderId, state,id);
            for (ReceivablesList receivablesList : receivablesLists) {
               Integer ids= this.baseMapper.getPayStatus(receivablesList.getOrderId());
                if(ids==null){
                   receivablesList.setPayStatus(1);
               }else {
                   receivablesList.setPayStatus(2);
               }
            }
            return receivablesLists;
        }
        List<TOrder> orders = this.baseMapper.selectList(wrapper);
        // 找出有承运商的订单
        List<TOrder> collect = orders.stream().filter(o -> ToolUtil.isNotEmpty(o.getCarriersId())).collect(Collectors.toList());
        // 付给承运商的钱
        BigDecimal disburse = new BigDecimal(BigInteger.ZERO);
        for (TOrder tOrder : collect) {
            TCarriers tCarriers = carriersMapper.selectById(tOrder.getCarriersId());
            Double commission = tCarriers.getCommission();
        @Override
        public List<PayList> listOfPay(Page<PayList> receivableVoPage, String time, String name, Integer billId, Integer orderId, Integer state, Integer id) {
            String sTime=null;
            String eTime =null;
            if(Objects.nonNull(time)){
                sTime = time.split(" - ")[0]+" 00:00:01";
                eTime = time.split(" - ")[1]+" 23:59:59";
            }
            List<PayList> list = this.baseMapper.listOfPay(receivableVoPage, sTime, eTime, name, billId, orderId, state,id);
            return list;
        }
        @Override
        public InvoicesCarVo listOPayInfo(Long number) {
            InvoicesVo info1 = tUserMapper.getOrderInfo(number);
            InvoicesCarVo info = new InvoicesCarVo();
            BeanUtil.copyProperties(info1,info);
            // 根据订单id 获取货物信息
            Long id = info.getId();
            TOrder tOrder = this.baseMapper.selectById(id);
            List<TGoods> orders = tGoodsMapper.selectList(new EntityWrapper<TGoods>().eq("order_id", id));
            ArrayList<TGoodsVo> tGoodsVos = new ArrayList<>();
            TCompany tCompany = tCompanyMapper.selectById(info.getCompanyId());
            for (TGoods order : orders) {
                TGoodsVo tGoodsVo = new TGoodsVo();
                tGoodsVo.setName(tCompany.getName());
                tGoodsVo.setSize(order.getSize());
                tGoodsVo.setKg(order.getKg());
                String size = order.getSize();
                tGoodsVo.setType(size);
                tGoodsVos.add(tGoodsVo);
            }
            // 付卡车公司钱
            BigDecimal payMoney = tOrder.getPayMoney();
            if(ToolUtil.isNotEmpty(commission)){
                BigDecimal bigDecimal = new BigDecimal(commission);
                BigDecimal multiply = payMoney.multiply(bigDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
                disburse = disburse.add(multiply);
            }
            Integer carriersId = tOrder.getCarriersId();
            TCarriers tCarriers = carriersMapper.selectById(carriersId);
            Double commission = tCarriers.getCommission();
            BigDecimal multiply = new BigDecimal(commission).multiply(new BigDecimal(0.01));
            BigDecimal multiply1 = payMoney.multiply(multiply);
            info.setGoodsVos(tGoodsVos);
            info.setAmount(multiply1.doubleValue());
            return info;
        }
        indexInfo.setAccountsPayable(disburse);
        indexInfo.setPlatformRevenue(indexInfo.getAccountsReceivable().subtract(indexInfo.getAccountsPayable()));
        // 所有的信息
        // 所有司机
        Integer integer = driverMapper.selectCount(new EntityWrapper<TDriver>().eq("company_id", companyId).eq("remove",0));
        indexInfo.setDriver(integer);
        //车头
        Integer integer1 = powerUnitsMapper.selectCount(new EntityWrapper<TPowerUnits>().eq("company_id", companyId).eq("type", 1));
        indexInfo.setPowerUnits(integer1);
        // 车架
        indexInfo.setChassises(powerUnitsMapper.selectCount(new EntityWrapper<TPowerUnits>().eq("company_id", companyId).eq("type", 2)));
        // 总订单
        indexInfo.setOrdersTotal(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",companyId)));
        //
        indexInfo.setInTransit(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",companyId).eq("status","7")));
        indexInfo.setDispatching(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",companyId).eq("status","0")));
        indexInfo.setCanceled(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",companyId).eq("status","16")));
        indexInfo.setCompleted(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",companyId).eq("status","1")));
        //获取当前公司的订单数量  根据当前月推算前12个月
        ArrayList<IndexMonth> indexMonths = new ArrayList<>();
        //获取当前月份
        Calendar instance = Calendar.getInstance();
        instance.setTime(new Date());
        for (int i = 0; i <12; i++) {
            if(i==0){
                IndexMonth indexMonth = new IndexMonth();
                int month = DateUtil.thisMonth();
                indexMonth.setMonth(month);
                indexMonth.setOrderNumber(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",companyId).between("pay_time",DateUtil.beginOfMonth(new Date()),DateUtil.endOfMonth(new Date()))));
                indexMonths.add(indexMonth);
        @Override
        public Boolean confirmationOfPayment(Long number, int type, String remark) {
            Boolean b =false;
            // 同意
            if(type==1){
                 b = this.baseMapper.agreePay(number);
            }else {
                IndexMonth indexMonth = new IndexMonth();
                instance.add(Calendar.MONTH, -1);
                Date time1 = instance.getTime();
                int month = DateUtil.month(time1);
                indexMonth.setMonth(month);
                indexMonth.setOrderNumber(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",companyId).between("pay_time",DateUtil.beginOfMonth(time1),DateUtil.endOfMonth(time1))));
                indexMonths.add(indexMonth);
                 b = this.baseMapper.noAgreePay(number,remark);
            }
            return b;
        }
        indexInfo.setList(indexMonths);
        return indexInfo;
    }
    @Override
    public InvoicesVoTwo listOfReceivablesInfo(Long orderId) {
        InvoicesVoTwo invoicesVoTwo = new InvoicesVoTwo();
        TOrder tOrder = this.baseMapper.selectById(orderId);
        invoicesVoTwo.setId(tOrder.getId());
        invoicesVoTwo.setPickupDate(tOrder.getShipmentDate());
        invoicesVoTwo.setDeliveryDate(tOrder.getDeliveryDate());
        invoicesVoTwo.setInvoiceNumber(tOrder.getInvoiceNumber());
        invoicesVoTwo.setRemark(tOrder.getRemark());
        // 根据订单id 获取价格
        List<TPrice> prices = priceMapper.selectList(new EntityWrapper<TPrice>().eq("order_id", tOrder.getId()));
        ArrayList<TPriceVo> priceVos = new ArrayList<TPriceVo>();
        for (TPrice price : prices) {
            TPriceVo tPriceVo = new TPriceVo();
            tPriceVo.setId(price.getId());
            tPriceVo.setPrice(price.getCarPrice());
            tPriceVo.setType(price.getType());
            priceVos.add(tPriceVo);
        @Override
        public Boolean agreeOfPayment(Long number) {
            return this.baseMapper.agreeOfPayment(number);
        }
        invoicesVoTwo.setPriceVos(priceVos);
        return invoicesVoTwo;
    }
    @Override
    public InvoicesVoOne listOfReceivablesInfoOne(Long orderId) {
        InvoicesVoOne info = tUserMapper.getOrderInfoOne(orderId);
        // 根据订单id 获取货物信息
        Long id = info.getId();
        @Resource
        private TDriverMapper driverMapper;
        TOrder tOrder = this.baseMapper.selectById(id);
        List<TGoods> orders = tGoodsMapper.selectList(new EntityWrapper<TGoods>().eq("order_id", id));
        ArrayList<TGoodsVo> tGoodsVos = new ArrayList<>();
        TCompany tCompany = tCompanyMapper.selectById(info.getCompanyId());
        List<TBoxSize> tBoxSizes = sizeService.selectList(null);
        for (TGoods order : orders) {
            TGoodsVo tGoodsVo = new TGoodsVo();
            tGoodsVo.setName(tCompany.getName());
            tGoodsVo.setSize(order.getSize());
            tGoodsVo.setKg(order.getKg());
            String size = order.getSize();
            for (TBoxSize tBoxSize : tBoxSizes) {
                if(size.equals(tBoxSize.getBoxName())){
                    tGoodsVo.setLength(tBoxSize.getBoxLength());
                    tGoodsVo.setWidth(tBoxSize.getBoxWidth());
                    tGoodsVo.setHeight(tBoxSize.getBoxHigh());
        @Resource
        private TPowerUnitsMapper powerUnitsMapper;
        @Override
        public IndexInfo indexList(String time,int id) {
            IndexInfo indexInfo = new IndexInfo();
            // 卡车公司收入时间
            String sTime=null;
            String eTime=null;
            if(ToolUtil.isNotEmpty(time)){
                sTime=time.split(" - ")[0]+" 00:00:01";
                eTime=time.split(" - ")[1]+" 23:59:59";
            }
            // 获取卡车公司收入
            Double companyIncome = this.baseMapper.getCompanyIncome(id, sTime, eTime);
            indexInfo.setAccountsReceivable(new BigDecimal(companyIncome));
            // 获取卡车公司支出-》 是否存在承运商  -》算价格
            EntityWrapper<TOrder> wrapper = new EntityWrapper<>();
            wrapper.eq("company_id",id);
            wrapper.eq("carriers_pay_status",1);
            if(sTime!=null){
                wrapper.between("success_time",sTime,eTime);
            }
            List<TOrder> orders = this.baseMapper.selectList(wrapper);
            // 找出有承运商的订单
            List<TOrder> collect = orders.stream().filter(o -> ToolUtil.isNotEmpty(o.getCarriersId())).collect(Collectors.toList());
            // 付给承运商的钱
            BigDecimal disburse = new BigDecimal(BigInteger.ZERO);
            for (TOrder tOrder : collect) {
                TCarriers tCarriers = carriersMapper.selectById(tOrder.getCarriersId());
                Double commission = tCarriers.getCommission();
                BigDecimal payMoney = tOrder.getPayMoney();
                if(ToolUtil.isNotEmpty(commission)){
                    BigDecimal bigDecimal = new BigDecimal(commission);
                    BigDecimal multiply = payMoney.multiply(bigDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
                    disburse = disburse.add(multiply);
                }
            }
            tGoodsVos.add(tGoodsVo);
        }
            indexInfo.setAccountsPayable(disburse);
            indexInfo.setPlatformRevenue(indexInfo.getAccountsReceivable().subtract(indexInfo.getAccountsPayable()));
            // 所有的信息
            // 所有司机
            Integer integer = driverMapper.selectCount(new EntityWrapper<TDriver>().eq("company_id", id).eq("remove",0));
            indexInfo.setDriver(integer);
            //车头
            Integer integer1 = powerUnitsMapper.selectCount(new EntityWrapper<TPowerUnits>().eq("company_id", id).eq("type", 1));
            indexInfo.setPowerUnits(integer1);
            // 车架
            indexInfo.setChassises(powerUnitsMapper.selectCount(new EntityWrapper<TPowerUnits>().eq("company_id", id).eq("type", 2)));
            // 总订单
            indexInfo.setOrdersTotal(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",id)));
            //
            indexInfo.setInTransit(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",id).eq("status","7")));
            indexInfo.setDispatching(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",id).eq("status","0")));
            indexInfo.setCanceled(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",id).eq("status","16")));
            indexInfo.setCompleted(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",id).eq("status","1")));
            //获取当前公司的订单数量  根据当前月推算前12个月
            ArrayList<IndexMonth> indexMonths = new ArrayList<>();
            //获取当前月份
        // 根据订单id 获取价格
        List<TPrice> prices = priceMapper.selectList(new EntityWrapper<TPrice>().eq("order_id", tOrder.getId()));
        ArrayList<TPriceVo> priceVos = new ArrayList<TPriceVo>();
        for (TPrice price : prices) {
            TPriceVo tPriceVo = new TPriceVo();
            tPriceVo.setId(price.getId());
            tPriceVo.setPrice(price.getCarPrice());
            tPriceVo.setType(price.getType());
            priceVos.add(tPriceVo);
        }
        info.setGoodsVos(tGoodsVos);
        info.setPriceVos(priceVos);
        return info;
    }
    @Override
    public List<OrderListVo> getOrderList(Page<OrderListVo> orderListVoPage, OrderListDto dto) {
        String sTime =null;
        String eTime = null;
        if(ToolUtil.isNotEmpty(dto.getDateRange())){
            String[] split = dto.getDateRange().split(" - ");
            sTime=split[0]+" 00:00:01";
            eTime=split[1]+" 23:59:59";
        }
        Integer id = UserInfoUtil.getId();
        List<OrderListVo> list = this.baseMapper.getOrderListOne(orderListVoPage,sTime,eTime,dto.getCustomerName(),dto.getId(),dto.getGroupId(),dto.getSaleId(),dto.getState(),id,dto.getType());
            for (OrderListVo orderListVo : list) {
            // TODO 对接第三方 看是否能提柜
            if(Objects.nonNull(dto.getState())){
                if(dto.getState()==1){
            Calendar instance = Calendar.getInstance();
            instance.setTime(new Date());
            for (int i = 0; i <12; i++) {
                if(i==0){
                    IndexMonth indexMonth = new IndexMonth();
                    int month = DateUtil.thisMonth();
                    indexMonth.setMonth(month);
                    indexMonth.setOrderNumber(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",id).between("pay_time",DateUtil.beginOfMonth(new Date()),DateUtil.endOfMonth(new Date()))));
                    indexMonths.add(indexMonth);
                }else {
                    IndexMonth indexMonth = new IndexMonth();
                    instance.add(Calendar.MONTH, -1);
                    Date time1 = instance.getTime();
                    int month = DateUtil.month(time1);
                    indexMonth.setMonth(month);
                    indexMonth.setOrderNumber(this.baseMapper.selectCount(new EntityWrapper<TOrder>().eq("company_id",id).between("pay_time",DateUtil.beginOfMonth(time1),DateUtil.endOfMonth(time1))));
                    indexMonths.add(indexMonth);
                }
            }
            indexInfo.setList(indexMonths);
            return indexInfo;
        }
        return list;
    }
    @Override
    public List<GoodsInfoVo> getGoodsInfo(Long orderId) {
        TOrder tOrder = this.baseMapper.selectById(orderId);
        ArrayList<GoodsInfoVo> goodsInfoVos = new ArrayList<>();
        List<TGoods> goods = tGoodsMapper.selectList(new EntityWrapper<TGoods>().eq("order_id", orderId));
        for (TGoods g : goods) {
            GoodsInfoVo goodsInfoVo = new GoodsInfoVo();
            goodsInfoVo.setAwbNo(g.getBillNumber());
            goodsInfoVo.setContainer(g.getContainerNumber());
            goodsInfoVo.setHazmat(g.getDanger());
            goodsInfoVo.setOverWeight(g.getWeight());
            goodsInfoVo.setShippingLine(g.getShippingLine());
            goodsInfoVo.setSize(g.getSize());
            goodsInfoVo.setType(g.getType());
            goodsInfoVo.setTypeClass(g.getTypeClass());
            goodsInfoVo.setWeight(g.getKg());
            goodsInfoVos.add(goodsInfoVo);
        }
        return goodsInfoVos;
    }
    @Override
    public OrderInfo getOrderInfo(Long orderId) {
        OrderInfo orderInfo = new OrderInfo();
        ArrayList<LonLat> lonLats = new ArrayList<>();
        TOrder tOrder = this.baseMapper.selectById(orderId);
        orderInfo.setSlat(tOrder.getStartLat());
        orderInfo.setSlon(tOrder.getStartLon());
        LonLat lonLat = new LonLat();
        lonLat.setLat(tOrder.getStartLat());
        lonLat.setLng(tOrder.getStartLon());
        lonLats.add(lonLat);
        String s = tOrder.geteAddress();
//        GeocodeVo geocode = googleMapUtil.getGeocode(s);
//        orderInfo.setElat(String.valueOf(geocode.getLat()));
//        orderInfo.setElon(String.valueOf(geocode.getLng()));
        lonLat=new LonLat();
        lonLat.setLng("-113.066919618184");
        lonLat.setLat("37.684389618184");
        lonLats.add(lonLat);
        orderInfo.setElat("37.684389618184");
        orderInfo.setElon("-113.066919618184");
        orderInfo.setLonLats(lonLats);
        Long quoteId = tQuoteMapper.selectList(new EntityWrapper<TQuote>().eq("order_id", tOrder.geteZipZ())).get(0).getId();
        orderInfo.setType(tOrder.getType());
        orderInfo.setQuoteId(quoteId);
        // 获取用户
        Integer userId = tOrder.getUserId();
        TUser tUser = tUserMapper.selectById(userId);
        orderInfo.setCustomer(tUser.getCompanyName());
        // 获取组
        Integer groupId = tUser.getGroupId();
        if(groupId!=null) {
            TGroup tGroup = tGroupMapper.selectById(groupId);
            orderInfo.setSalesGroup(tGroup.getName());
            Integer salesId = tGroup.getSalesId();
            User user = userMapper.selectById(salesId);
            orderInfo.setSales(user.getName());
        }
        // 获取码头id  获取码头地址  pickup信息
        Integer portId = tOrder.getPort();
        TPort tPort = portMapper.selectById(portId);
        orderInfo.setAddress(tOrder.geteAddress());
        orderInfo.setContactName(tOrder.getsName());
        orderInfo.setContactPhone(tOrder.getsPhone());
        orderInfo.setContactEmail(tOrder.getsEmail());
        orderInfo.setShipmentDate(tOrder.getShipmentDate());
        orderInfo.setResidentitalPickUp(tOrder.getAccessorialStr());
        String warehouse = tOrder.getWarehouse();
        // 是仓库
        if(!"0".equals(warehouse)){
            TWarehouse tWarehouse = wareHouseMapper.selectList(new EntityWrapper<TWarehouse>().eq("company_id", tOrder.getCompanyId()).eq("code", warehouse)).get(0);
            orderInfo.setWareHouse(tWarehouse.getAddress());
        }
        // destination信息
        orderInfo.setEndAddress(tOrder.geteAddress());
        orderInfo.setECompanyName(tOrder.geteCompanyName());
        orderInfo.setEContactName(tOrder.geteName());
        orderInfo.setEContactPhone(tOrder.getePhone());
        orderInfo.setEContactEmail(tOrder.geteEmail());
        orderInfo.setDeliveryDate(tOrder.getDeliveryDate());
        orderInfo.setDeliverStr(tOrder.getDeliveryStr());
        orderInfo.setCarrierQuoteNumber(quoteId);
        // 根据订单id获取货物
        List<TGoods> goods = tGoodsMapper.selectList(new EntityWrapper<TGoods>().eq("order_id", orderId));
        ArrayList<String> strings = new ArrayList<>();
        goods.forEach(e->{
            strings.add(e.getContainerNumber());
            orderInfo.setBl(e.getBillNumber());
        });
        orderInfo.setContainer(strings);
        ArrayList<DriverNoteVo> driverNoteVos = new ArrayList<>();
        ArrayList<DriverNoteVo> driverNoteVos1 = new ArrayList<>();
        // 获取司机note  和 trouble
        List<DriverNote> driverNotes = driverNoteMapper.selectList(new EntityWrapper<DriverNote>().eq("order_id", orderId));
        for (DriverNote driverNote : driverNotes) {
            DriverNoteVo driverNoteVo = new DriverNoteVo();
            BeanUtil.copyProperties(driverNote,driverNoteVo);
            TDriver tDriver = driverService.selectById(driverNoteVo.getDriverId());
            driverNoteVo.setDriverName(tDriver.getDriverName());
            if(driverNoteVo.getType()==1){
                driverNoteVos.add(driverNoteVo);
            }else {
                driverNoteVos1.add(driverNoteVo);
        @Override
        public InvoicesVoTwo listOfReceivablesInfo(Long orderId) {
            InvoicesVoTwo invoicesVoTwo = new InvoicesVoTwo();
            TOrder tOrder = this.baseMapper.selectById(orderId);
            invoicesVoTwo.setId(tOrder.getId());
            invoicesVoTwo.setPickupDate(tOrder.getShipmentDate());
            invoicesVoTwo.setDeliveryDate(tOrder.getDeliveryDate());
            invoicesVoTwo.setInvoiceNumber(tOrder.getInvoiceNumber());
            invoicesVoTwo.setRemark(tOrder.getRemark());
            // 根据订单id 获取价格
            List<TPrice> prices = priceMapper.selectList(new EntityWrapper<TPrice>().eq("order_id", tOrder.getId()));
            ArrayList<TPriceVo> priceVos = new ArrayList<TPriceVo>();
            for (TPrice price : prices) {
                TPriceVo tPriceVo = new TPriceVo();
                tPriceVo.setId(price.getId());
                tPriceVo.setPrice(price.getCarPrice());
                tPriceVo.setType(price.getType());
                priceVos.add(tPriceVo);
            }
            invoicesVoTwo.setPriceVos(priceVos);
            return invoicesVoTwo;
        }
        orderInfo.setNote(driverNoteVos);
        orderInfo.setTrouble(driverNoteVos1);
        orderInfo.setState(tOrder.getState());
        return orderInfo;
        @Override
        public InvoicesVoOne listOfReceivablesInfoOne(Long orderId) {
            InvoicesVoOne info = tUserMapper.getOrderInfoOne(orderId);
            // 根据订单id 获取货物信息
            Long id = info.getId();
            TOrder tOrder = this.baseMapper.selectById(id);
            List<TGoods> orders = tGoodsMapper.selectList(new EntityWrapper<TGoods>().eq("order_id", id));
            ArrayList<TGoodsVo> tGoodsVos = new ArrayList<>();
            TCompany tCompany = tCompanyMapper.selectById(info.getCompanyId());
            for (TGoods order : orders) {
                TGoodsVo tGoodsVo = new TGoodsVo();
                tGoodsVo.setName(tCompany.getName());
                tGoodsVo.setSize(order.getSize());
                tGoodsVo.setKg(order.getKg());
                String size = order.getSize();
                tGoodsVo.setSize(size);
                tGoodsVos.add(tGoodsVo);
            }
            // 根据订单id 获取价格
            List<TPrice> prices = priceMapper.selectList(new EntityWrapper<TPrice>().eq("order_id", tOrder.getId()));
            ArrayList<TPriceVo> priceVos = new ArrayList<TPriceVo>();
            for (TPrice price : prices) {
                TPriceVo tPriceVo = new TPriceVo();
                tPriceVo.setId(price.getId());
                tPriceVo.setPrice(price.getCarPrice());
                tPriceVo.setType(price.getType());
                priceVos.add(tPriceVo);
            }
            info.setGoodsVos(tGoodsVos);
            info.setPriceVos(priceVos);
    }
    @Override
    public Boolean addOrderFile(Long orderId, String url, String name) {
        return this.baseMapper.addOrderFile(orderId,url,name);
    }
            return info;
        }
    public static void main(String[] args) throws ParseException {
        @Override
        public List<OrderListVo> getOrderList(Page<OrderListVo> orderListVoPage, OrderListDto dto) {
            String sTime =null;
            String eTime = null;
            if(ToolUtil.isNotEmpty(dto.getDateRange())){
                String[] split = dto.getDateRange().split(" - ");
                sTime=split[0]+" 00:00:01";
                eTime=split[1]+" 23:59:59";
            }
            Integer id = dto.getCompanyId();
            List<OrderListVo> list = this.baseMapper.getOrderListOne(orderListVoPage,sTime,eTime,dto.getCustomerName(),dto.getId(),dto.getGroupId(),dto.getSaleId(),dto.getState(),id,dto.getType());
                for (OrderListVo orderListVo : list) {
                // TODO 对接第三方 看是否能提柜
                if(Objects.nonNull(dto.getState())){
                    if(dto.getState()==1){
                    }else {
                    }
                }
            }
            return list;
        }
        @Override
        public List<GoodsInfoVo> getGoodsInfo(Long orderId) {
            TOrder tOrder = this.baseMapper.selectById(orderId);
            ArrayList<GoodsInfoVo> goodsInfoVos = new ArrayList<>();
            List<TGoods> goods = tGoodsMapper.selectList(new EntityWrapper<TGoods>().eq("order_id", orderId));
            for (TGoods g : goods) {
                GoodsInfoVo goodsInfoVo = new GoodsInfoVo();
                goodsInfoVo.setAwbNo(g.getBillNumber());
                goodsInfoVo.setContainer(g.getContainerNumber());
                goodsInfoVo.setHazmat(g.getDanger());
                goodsInfoVo.setOverWeight(g.getWeight());
                goodsInfoVo.setShippingLine(g.getShippingLine());
                goodsInfoVo.setSize(g.getSize());
                goodsInfoVo.setType(g.getType());
                goodsInfoVo.setTypeClass(g.getTypeClass());
                goodsInfoVo.setWeight(g.getKg());
                goodsInfoVos.add(goodsInfoVo);
            }
            return goodsInfoVos;
        }
        @Override
        public OrderInfo getOrderInfo(Long orderId) {
            OrderInfo orderInfo = new OrderInfo();
            ArrayList<LonLat> lonLats = new ArrayList<>();
            TOrder tOrder = this.baseMapper.selectById(orderId);
            orderInfo.setSlat(tOrder.getStartLat());
            orderInfo.setSlon(tOrder.getStartLon());
            LonLat lonLat = new LonLat();
            lonLat.setLat(tOrder.getStartLat());
            lonLat.setLng(tOrder.getStartLon());
            lonLats.add(lonLat);
            String s = tOrder.geteAddress();
    //        GeocodeVo geocode = googleMapUtil.getGeocode(s);
    //        orderInfo.setElat(String.valueOf(geocode.getLat()));
    //        orderInfo.setElon(String.valueOf(geocode.getLng()));
            lonLat=new LonLat();
            lonLat.setLng("-113.066919618184");
            lonLat.setLat("37.684389618184");
            lonLats.add(lonLat);
            orderInfo.setElat("37.684389618184");
            orderInfo.setElon("-113.066919618184");
            orderInfo.setLonLats(lonLats);
            Long quoteId = tQuoteMapper.selectList(new EntityWrapper<TQuote>().eq("order_id", tOrder.geteZipZ())).get(0).getId();
            orderInfo.setType(tOrder.getType());
            orderInfo.setQuoteId(quoteId);
            // 获取用户
            Integer userId = tOrder.getUserId();
            TUser tUser = tUserMapper.selectById(userId);
            orderInfo.setCustomer(tUser.getCompanyName());
            // 获取组
            Integer groupId = tUser.getGroupId();
            if(groupId!=null) {
                TGroup tGroup = tGroupMapper.selectById(groupId);
                orderInfo.setSalesGroup(tGroup.getName());
                Integer salesId = tGroup.getSalesId();
                User user = userMapper.selectById(salesId);
                orderInfo.setSales(user.getName());
            }
            // 获取码头id  获取码头地址  pickup信息
            Integer portId = tOrder.getPort();
            TPort tPort = portMapper.selectById(portId);
            orderInfo.setAddress(tOrder.geteAddress());
            orderInfo.setContactName(tOrder.getsName());
            orderInfo.setContactPhone(tOrder.getsPhone());
            orderInfo.setContactEmail(tOrder.getsEmail());
            orderInfo.setShipmentDate(tOrder.getShipmentDate());
            orderInfo.setResidentitalPickUp(tOrder.getAccessorialStr());
            String warehouse = tOrder.getWarehouse();
            // 是仓库
            if(!"0".equals(warehouse)){
                TWarehouse tWarehouse = wareHouseMapper.selectList(new EntityWrapper<TWarehouse>().eq("company_id", tOrder.getCompanyId()).eq("code", warehouse)).get(0);
                orderInfo.setWareHouse(tWarehouse.getAddress());
            }
            // destination信息
            orderInfo.setEndAddress(tOrder.geteAddress());
            orderInfo.setECompanyName(tOrder.geteCompanyName());
            orderInfo.setEContactName(tOrder.geteName());
            orderInfo.setEContactPhone(tOrder.getePhone());
            orderInfo.setEContactEmail(tOrder.geteEmail());
            orderInfo.setDeliveryDate(tOrder.getDeliveryDate());
            orderInfo.setDeliverStr(tOrder.getDeliveryStr());
            orderInfo.setCarrierQuoteNumber(quoteId);
            // 根据订单id获取货物
            List<TGoods> goods = tGoodsMapper.selectList(new EntityWrapper<TGoods>().eq("order_id", orderId));
            ArrayList<String> strings = new ArrayList<>();
            goods.forEach(e->{
                strings.add(e.getContainerNumber());
                orderInfo.setBl(e.getBillNumber());
            });
            orderInfo.setContainer(strings);
            ArrayList<DriverNoteVo> driverNoteVos = new ArrayList<>();
            ArrayList<DriverNoteVo> driverNoteVos1 = new ArrayList<>();
            // 获取司机note  和 trouble
            List<DriverNote> driverNotes = driverNoteMapper.selectList(new EntityWrapper<DriverNote>().eq("order_id", orderId));
            for (DriverNote driverNote : driverNotes) {
                DriverNoteVo driverNoteVo = new DriverNoteVo();
                BeanUtil.copyProperties(driverNote,driverNoteVo);
                TDriver tDriver = driverService.selectById(driverNoteVo.getDriverId());
                driverNoteVo.setDriverName(tDriver.getDriverName());
                if(driverNoteVo.getType()==1){
                    driverNoteVos.add(driverNoteVo);
                }else {
                    driverNoteVos1.add(driverNoteVo);
                }
            }
            orderInfo.setNote(driverNoteVos);
            orderInfo.setTrouble(driverNoteVos1);
            orderInfo.setState(tOrder.getState());
            return orderInfo;
        }
        @Override
        public Boolean addOrderFile(Long orderId, String url, String name) {
            return this.baseMapper.addOrderFile(orderId,url,name);
        }
        public static void main(String[] args) throws ParseException {
        }
    }
}