Forráskód Böngészése

Merge remote-tracking branch 'origin/master'

tomatozq 4 éve
szülő
commit
d0c9f0fc58

+ 3 - 2
common/src/main/java/com/jpsoft/bus/modules/base/dao/OrderInfoDAO.java

@@ -5,6 +5,7 @@ import java.util.Date;
 import java.util.List;
 
 import cn.hutool.core.date.DateTime;
+import com.jpsoft.bus.modules.bus.entity.ShiftInfo;
 import com.jpsoft.bus.modules.bus.entity.VehicleInfo;
 import org.springframework.stereotype.Repository;
 import com.jpsoft.bus.modules.base.entity.OrderInfo;
@@ -31,9 +32,9 @@ public interface OrderInfoDAO {
 
 	OrderInfo findByPassengerId(String passengerId);
 
-    BigDecimal paySum(List<VehicleInfo> vehicleInfoList, String companyId,String payName, Date beginOfDay, Date endOfDay, Boolean settlementFlag);
+    BigDecimal paySum(List<VehicleInfo> vehicleInfoList, List<ShiftInfo> shiftInfoList, String companyId, String payName, Date beginOfDay, Date endOfDay, Boolean settlementFlag);
 
-    Integer payNum(List<VehicleInfo> vehicleInfoList,String companyId, String payName, Date beginOfDay, Date endOfDay, Boolean settlementFlag);
+    Integer payNum(List<VehicleInfo> vehicleInfoList,List<ShiftInfo> shiftInfoList,String companyId, String payName, Date beginOfDay, Date endOfDay, Boolean settlementFlag);
 
 	List<OrderInfo> findBySearchParams(Map<String, Object> searchParams);
 }

+ 3 - 2
common/src/main/java/com/jpsoft/bus/modules/base/service/OrderInfoService.java

@@ -8,6 +8,7 @@ import java.util.Map;
 import cn.hutool.core.date.DateTime;
 import com.jpsoft.bus.modules.base.entity.OrderInfo;
 import com.github.pagehelper.Page;
+import com.jpsoft.bus.modules.bus.entity.ShiftInfo;
 import com.jpsoft.bus.modules.bus.entity.VehicleInfo;
 import com.jpsoft.bus.modules.common.dto.Sort;
 
@@ -39,9 +40,9 @@ public interface OrderInfoService {
 	 */
 	Boolean refund(String orderId,String userId) throws Exception;
 
-    BigDecimal paySum(List<VehicleInfo> vehicleInfoList,String companyId, String payName, Date beginOfDay, Date endOfDay, Boolean settlementFlag);
+    BigDecimal paySum(List<VehicleInfo> vehicleInfoList, List<ShiftInfo> shiftInfoList, String companyId, String payName, Date beginOfDay, Date endOfDay, Boolean settlementFlag);
 
-	Integer payNum(List<VehicleInfo> vehicleInfoList,String companyId, String payName, Date beginOfDay, Date endOfDay,Boolean settlementFlag);
+	Integer payNum(List<VehicleInfo> vehicleInfoList,List<ShiftInfo> shiftInfoList,String companyId, String payName, Date beginOfDay, Date endOfDay,Boolean settlementFlag);
 
 	List<OrderInfo> findBySearchParams(Map<String, Object> searchParams,List<Sort> sortList);
 }

+ 5 - 4
common/src/main/java/com/jpsoft/bus/modules/base/service/impl/OrderInfoServiceImpl.java

@@ -12,6 +12,7 @@ import com.jpsoft.bus.modules.base.dao.OrderLogDAO;
 import com.jpsoft.bus.modules.base.entity.OrderLog;
 import com.jpsoft.bus.modules.base.service.OrderLogService;
 import com.jpsoft.bus.modules.bus.entity.PassengerInfo;
+import com.jpsoft.bus.modules.bus.entity.ShiftInfo;
 import com.jpsoft.bus.modules.bus.entity.VehicleInfo;
 import com.jpsoft.bus.modules.bus.service.PassengerInfoService;
 import com.jpsoft.bus.modules.pay.service.AlipayService;
@@ -162,13 +163,13 @@ public class OrderInfoServiceImpl implements OrderInfoService {
 	}
 
 	@Override
-	public BigDecimal paySum(List<VehicleInfo> vehicleInfoList,String companyId, String payName, Date beginOfDay, Date endOfDay,Boolean settlementFlag) {
-		return orderInfoDAO.paySum(vehicleInfoList,companyId,payName,beginOfDay,endOfDay,settlementFlag);
+	public BigDecimal paySum(List<VehicleInfo> vehicleInfoList, List<ShiftInfo> shiftInfoList, String companyId, String payName, Date beginOfDay, Date endOfDay, Boolean settlementFlag) {
+		return orderInfoDAO.paySum(vehicleInfoList,shiftInfoList,companyId,payName,beginOfDay,endOfDay,settlementFlag);
 	}
 
 	@Override
-	public Integer payNum(List<VehicleInfo> vehicleInfoList,String companyId, String payName, Date beginOfDay, Date endOfDay, Boolean settlementFlag) {
-		return orderInfoDAO.payNum(vehicleInfoList,companyId,payName,beginOfDay,endOfDay,settlementFlag);
+	public Integer payNum(List<VehicleInfo> vehicleInfoList,List<ShiftInfo> shiftInfoList,String companyId, String payName, Date beginOfDay, Date endOfDay, Boolean settlementFlag) {
+		return orderInfoDAO.payNum(vehicleInfoList,shiftInfoList,companyId,payName,beginOfDay,endOfDay,settlementFlag);
 	}
 
 	@Override

+ 2 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/dao/ShiftInfoDAO.java

@@ -23,4 +23,6 @@ public interface ShiftInfoDAO {
     List<ShiftInfo> findByRouteIdAndStatus(String routeId, String status);
 
     List<ShiftInfo> findByRouteIdAndStatusAndStartStationId(String routeId, String status, String startStationId);
+
+	List<ShiftInfo> findVehicleByDriverId(Long driverId);
 }

+ 19 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/dto/ShiftRevenueDTO.java

@@ -0,0 +1,19 @@
+package com.jpsoft.bus.modules.bus.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2021-5-27 15:35
+ */
+@Data
+public class ShiftRevenueDTO {
+
+    private BigDecimal price;
+
+    private Integer num;
+
+    private BigDecimal total;
+}

+ 30 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/dto/VehicleShiftDTO.java

@@ -0,0 +1,30 @@
+package com.jpsoft.bus.modules.bus.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2021-5-27 15:32
+ */
+@Data
+public class VehicleShiftDTO {
+
+    private String routeName;
+
+    private String carNum;
+
+    private String driverName;
+
+    private String dateStr;
+
+    private String shiftDateStr;
+
+    private Integer passengerNum;
+
+    private BigDecimal total;
+
+    private List<ShiftRevenueDTO> list;
+}

+ 21 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/dto/VehicleShiftListDTO.java

@@ -0,0 +1,21 @@
+package com.jpsoft.bus.modules.bus.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2021-5-27 15:07
+ */
+@Data
+public class VehicleShiftListDTO {
+
+    private String id;
+
+    private String carNum;
+
+    private String dateStr;
+
+    private BigDecimal total;
+}

+ 8 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/service/ShiftInfoService.java

@@ -1,11 +1,13 @@
 package com.jpsoft.bus.modules.bus.service;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import com.jpsoft.bus.modules.bus.entity.ShiftInfo;
 import com.github.pagehelper.Page;
 import com.jpsoft.bus.modules.bus.entity.VehicleInfo;
 import com.jpsoft.bus.modules.common.dto.Sort;
+import com.jpsoft.bus.modules.merchant.entity.AccountInfo;
 
 public interface ShiftInfoService {
 	ShiftInfo get(String id);
@@ -16,6 +18,8 @@ public interface ShiftInfoService {
 	List<ShiftInfo> list();
 	Page<ShiftInfo> pageSearch(Map<String, Object> searchParams,int pageNum,int pageSize,boolean count,List<Sort> sortList);
 
+	List<ShiftInfo> listSearch(Map<String, Object> searchParams,List<Sort> sortList);
+
     List<ShiftInfo> findByDriverIdAndStatus(Long driverId, String status);
 
     List<ShiftInfo> findByVehicleIdAndStatus(String vehicleId, String status);
@@ -29,4 +33,8 @@ public interface ShiftInfoService {
     void finishShift(ShiftInfo shiftInfo);
 
     void stationChange(ShiftInfo shiftInfo, String stationId);
+
+	List<ShiftInfo> findVehicleByDriverId(Long driverId);
+
+    List<ShiftInfo> findByVehicleDateAccount(Date startDate, Date endDate, AccountInfo accountInfo);
 }

+ 99 - 4
common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/ShiftInfoServiceImpl.java

@@ -1,9 +1,6 @@
 package com.jpsoft.bus.modules.bus.service.impl;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 import javax.annotation.Resource;
 
 import com.jpsoft.bus.modules.base.entity.MergeOrderInfo;
@@ -13,6 +10,7 @@ import com.jpsoft.bus.modules.base.service.OrderInfoService;
 import com.jpsoft.bus.modules.bus.dto.StationStatusDTO;
 import com.jpsoft.bus.modules.bus.entity.*;
 import com.jpsoft.bus.modules.bus.service.*;
+import com.jpsoft.bus.modules.merchant.entity.AccountInfo;
 import com.sun.xml.bind.v2.TODO;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
@@ -33,6 +31,18 @@ public class ShiftInfoServiceImpl implements ShiftInfoService {
 	@Autowired
 	private GpsService gpsService;
 
+	@Autowired
+	private VehicleInfoService vehicleInfoService;
+
+	@Autowired
+	private CompanyInfoService companyInfoService;
+
+	@Autowired
+	private RouteAccountService routeAccountService;
+
+	@Autowired
+	private DriverInfoService driverInfoService;
+
 	@Autowired
 	private MergeOrderInfoService mergeOrderInfoService;
 
@@ -100,6 +110,11 @@ public class ShiftInfoServiceImpl implements ShiftInfoService {
         return page;
 	}
 
+	@Override
+	public List<ShiftInfo> listSearch(Map<String, Object> searchParams, List<Sort> sortList) {
+		 return shiftInfoDAO.search(searchParams,sortList);
+	}
+
 	@Override
 	public List<ShiftInfo> findByDriverIdAndStatus(Long driverId, String status) {
 		return shiftInfoDAO.findByDriverIdAndStatus(driverId,status);
@@ -284,4 +299,84 @@ public class ShiftInfoServiceImpl implements ShiftInfoService {
 			}
 		}
 	}
+
+	@Override
+	public List<ShiftInfo> findVehicleByDriverId(Long driverId) {
+		return shiftInfoDAO.findVehicleByDriverId(driverId);
+	}
+
+	@Override
+	public List<ShiftInfo> findByVehicleDateAccount(Date startDate, Date endDate, AccountInfo accountInfo) {
+
+		List<ShiftInfo> list = new ArrayList<>();
+		List<String> roleList = Arrays.asList(accountInfo.getRoles().split(","));
+
+		for (String roleId : roleList) {
+			if ("1".equals(roleId)){
+				DriverInfo driverInfo = driverInfoService.findByPhone(accountInfo.getPhone());
+				if (driverInfo != null){
+					Map<String,Object> searchParams = new HashMap<>();
+					searchParams.put("driverId",driverInfo.getId());
+					if (startDate != null){
+						searchParams.put("startTime",startDate);
+					}
+					if (endDate != null){
+						searchParams.put("endTime",endDate);
+					}
+					List<Sort> sortList = new ArrayList<>();
+					sortList.add(new Sort("a.create_time","desc"));
+					List<ShiftInfo> shiftInfoList = listSearch(searchParams,sortList);
+					if (shiftInfoList.size() >0) {
+						for (ShiftInfo shiftInfo : shiftInfoList){
+							if (!list.contains(shiftInfo)){
+								list.add(shiftInfo);
+							}
+						}
+					}
+				}
+
+			}
+			else {
+				List<VehicleInfo> vehicleInfoList = new ArrayList<>();
+				if ("2".equals(roleId)){
+					List<VehicleInfo> vehicleInfoList1 = vehicleInfoService.findByAccountId(accountInfo.getId());
+					vehicleInfoList.addAll(vehicleInfoList1);
+				}
+				if ("3".equals(roleId)){
+					List<RouteAccount> routeAccountList = routeAccountService.findByAccountId(accountInfo.getId());
+					if (routeAccountList.size() > 0) {
+						for (RouteAccount routeAccount : routeAccountList) {
+							List<VehicleInfo> vehicleInfoList1 =vehicleInfoService.findByRouteId(routeAccount.getRouteId());
+							vehicleInfoList.addAll(vehicleInfoList1);
+						}
+					}
+				}
+				if ("4".equals(roleId)){
+					CompanyInfo companyInfo = companyInfoService.get(accountInfo.getCompanyId());
+					List<VehicleInfo> vehicleInfoList1 = vehicleInfoService.findByCompanyId(companyInfo.getId());
+					vehicleInfoList.addAll(vehicleInfoList1);
+				}
+				Map<String,Object> searchParams = new HashMap<>();
+				searchParams.put("vehicleInfoList",vehicleInfoList);
+				if (startDate != null){
+					searchParams.put("startTime",startDate);
+				}
+				if (endDate != null){
+					searchParams.put("endTime",endDate);
+				}
+				List<Sort> sortList = new ArrayList<>();
+				sortList.add(new Sort("a.create_time","desc"));
+				List<ShiftInfo> shiftInfoList = listSearch(searchParams,sortList);
+				if (shiftInfoList.size() >0) {
+					for (ShiftInfo shiftInfo : shiftInfoList){
+						if (!list.contains(shiftInfo)){
+							list.add(shiftInfo);
+						}
+					}
+				}
+			}
+
+		}
+		return list;
+	}
 }

+ 204 - 134
common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/VehicleInfoServiceImpl.java

@@ -1,165 +1,235 @@
 package com.jpsoft.bus.modules.bus.service.impl;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 import javax.annotation.Resource;
 
 import com.jpsoft.bus.modules.bus.dto.VehicleDTO;
-import com.jpsoft.bus.modules.bus.entity.CompanyInfo;
-import com.jpsoft.bus.modules.bus.entity.RouteAccount;
-import com.jpsoft.bus.modules.bus.service.CompanyInfoService;
-import com.jpsoft.bus.modules.bus.service.RouteAccountService;
+import com.jpsoft.bus.modules.bus.entity.*;
+import com.jpsoft.bus.modules.bus.service.*;
 import com.jpsoft.bus.modules.merchant.entity.AccountInfo;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 import com.jpsoft.bus.modules.bus.dao.VehicleInfoDAO;
-import com.jpsoft.bus.modules.bus.entity.VehicleInfo;
-import com.jpsoft.bus.modules.bus.service.VehicleInfoService;
 import com.github.pagehelper.Page;
 import com.jpsoft.bus.modules.common.dto.Sort;
 import com.github.pagehelper.PageHelper;
 
 @Transactional
-@Component(value="vehicleInfoService")
+@Component(value = "vehicleInfoService")
 public class VehicleInfoServiceImpl implements VehicleInfoService {
-	@Resource(name="vehicleInfoDAO")
-	private VehicleInfoDAO vehicleInfoDAO;
-
-	@Autowired
-	private CompanyInfoService companyInfoService;
-
-	@Autowired
-	private RouteAccountService routeAccountService;
-
-	@Override
-	public VehicleInfo get(String id) {
-		// TODO Auto-generated method stub
-		return vehicleInfoDAO.get(id);
-	}
-
-	@Override
-	public int insert(VehicleInfo model) {
-		// TODO Auto-generated method stub
-		//model.setId(UUID.randomUUID().toString());
-
-		return vehicleInfoDAO.insert(model);
-	}
-
-	@Override
-	public int update(VehicleInfo model) {
-		// TODO Auto-generated method stub
-		return vehicleInfoDAO.update(model);
-	}
-
-	@Override
-	public int delete(String id) {
-		// TODO Auto-generated method stub
-		return vehicleInfoDAO.delete(id);
-	}
-
-	@Override
-	public boolean exist(String id) {
-		// TODO Auto-generated method stub
-		int count = vehicleInfoDAO.exist(id);
-
-		return count > 0 ? true : false;
-	}
-
-	@Override
-	public List<VehicleInfo> list() {
-		// TODO Auto-generated method stub
-		return vehicleInfoDAO.list();
-	}
-
-	@Override
-	public Page<VehicleInfo> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize,boolean count,List<Sort> sortList) {
-        Page<VehicleInfo> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
-            vehicleInfoDAO.search(searchParams,sortList);
+    @Resource(name = "vehicleInfoDAO")
+    private VehicleInfoDAO vehicleInfoDAO;
+
+    @Autowired
+    private DriverInfoService driverInfoService;
+
+    @Autowired
+    private ShiftInfoService shiftInfoService;
+
+    @Autowired
+    private CompanyInfoService companyInfoService;
+
+    @Autowired
+    private RouteAccountService routeAccountService;
+
+    @Override
+    public VehicleInfo get(String id) {
+        // TODO Auto-generated method stub
+        return vehicleInfoDAO.get(id);
+    }
+
+    @Override
+    public int insert(VehicleInfo model) {
+        // TODO Auto-generated method stub
+        //model.setId(UUID.randomUUID().toString());
+
+        return vehicleInfoDAO.insert(model);
+    }
+
+    @Override
+    public int update(VehicleInfo model) {
+        // TODO Auto-generated method stub
+        return vehicleInfoDAO.update(model);
+    }
+
+    @Override
+    public int delete(String id) {
+        // TODO Auto-generated method stub
+        return vehicleInfoDAO.delete(id);
+    }
+
+    @Override
+    public boolean exist(String id) {
+        // TODO Auto-generated method stub
+        int count = vehicleInfoDAO.exist(id);
+
+        return count > 0 ? true : false;
+    }
+
+    @Override
+    public List<VehicleInfo> list() {
+        // TODO Auto-generated method stub
+        return vehicleInfoDAO.list();
+    }
+
+    @Override
+    public Page<VehicleInfo> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize, boolean count, List<Sort> sortList) {
+        Page<VehicleInfo> page = PageHelper.startPage(pageNumber, pageSize, count).doSelectPage(() -> {
+            vehicleInfoDAO.search(searchParams, sortList);
         });
 
         return page;
-	}
-
-	@Override
-	public VehicleInfo findByCodeAndCarNum(String activationCode, String carNum) {
-		return vehicleInfoDAO.findByCodeAndCarNum(activationCode,carNum);
-	}
-
-	@Override
-	public VehicleInfo findByGpsDeviceNo(String gpsDeviceNo) {
-		return vehicleInfoDAO.findByGpsDeviceNo(gpsDeviceNo);
-	}
-	@Override
-	public void updateGps(VehicleInfo v) {
-		vehicleInfoDAO.updateGps(v);
-	}
-
-	@Override
-	public List<VehicleInfo> findByCompanyId(String companyId) {
-		return vehicleInfoDAO.findByCompanyId(companyId);
-	}
-
-	@Override
-	public VehicleInfo findByCarNum(String carNum){
-		return vehicleInfoDAO.findByCarNum(carNum);
-	}
-
-	@Override
-	public List<VehicleInfo> getRunningList() {
-		return vehicleInfoDAO.getRunningList();
-	}
-
-	@Override
-	public List<VehicleInfo> findByRouteId(String routeId) {
-		return vehicleInfoDAO.findByRouteId(routeId);
-	}
-
-	@Override
-	public List<VehicleInfo> findByAccountId(String accountId) {
-		return vehicleInfoDAO.findByAccountId(accountId);
-	}
-
-	@Override
-	public List<VehicleInfo> getAllVehicleByAccount(AccountInfo accountInfo) {
-
-		CompanyInfo companyInfo = companyInfoService.get(accountInfo.getCompanyId());
-		List<VehicleInfo> vehicleInfoList = findByCompanyId(companyInfo.getId());
-		List<VehicleInfo> list = new ArrayList<>();
-		if (vehicleInfoList.size()>0){
-			for (VehicleInfo vehicleInfo : vehicleInfoList){
-				list.add(vehicleInfo);
+    }
+
+    @Override
+    public VehicleInfo findByCodeAndCarNum(String activationCode, String carNum) {
+        return vehicleInfoDAO.findByCodeAndCarNum(activationCode, carNum);
+    }
+
+    @Override
+    public VehicleInfo findByGpsDeviceNo(String gpsDeviceNo) {
+        return vehicleInfoDAO.findByGpsDeviceNo(gpsDeviceNo);
+    }
+
+    @Override
+    public void updateGps(VehicleInfo v) {
+        vehicleInfoDAO.updateGps(v);
+    }
+
+    @Override
+    public List<VehicleInfo> findByCompanyId(String companyId) {
+        return vehicleInfoDAO.findByCompanyId(companyId);
+    }
+
+    @Override
+    public VehicleInfo findByCarNum(String carNum) {
+        return vehicleInfoDAO.findByCarNum(carNum);
+    }
+
+    @Override
+    public List<VehicleInfo> getRunningList() {
+        return vehicleInfoDAO.getRunningList();
+    }
+
+    @Override
+    public List<VehicleInfo> findByRouteId(String routeId) {
+        return vehicleInfoDAO.findByRouteId(routeId);
+    }
+
+    @Override
+    public List<VehicleInfo> findByAccountId(String accountId) {
+        return vehicleInfoDAO.findByAccountId(accountId);
+    }
+
+    @Override
+    public List<VehicleInfo> getAllVehicleByAccount(AccountInfo accountInfo) {
+
+        List<VehicleInfo> list = new ArrayList<>();
+
+
+        if (StringUtils.isNotBlank(accountInfo.getRoles())) {
+            //账户角色
+            List<String> roleList = Arrays.asList(accountInfo.getRoles().split(","));
+
+            for (String roleId : roleList) {
+                //司机
+                if ("1".equals(roleId)) {
+                    DriverInfo driverInfo = driverInfoService.findByPhone(accountInfo.getPhone());
+                    if (driverInfo != null) {
+                        List<ShiftInfo> shiftInfoList = shiftInfoService.findVehicleByDriverId(driverInfo.getId());
+                        if (shiftInfoList.size() > 0) {
+                            for (ShiftInfo shiftInfo : shiftInfoList) {
+                                VehicleInfo vehicleInfo = get(shiftInfo.getVehicleId());
+                                if (!list.contains(vehicleInfo)) {
+                                    list.add(vehicleInfo);
+                                }
+                            }
+                        }
+                    }
+                }
+                //车主
+                if ("2".equals(roleId)) {
+                    List<VehicleInfo> vehicleInfoList = findByAccountId(accountInfo.getId());
+                    if (vehicleInfoList.size() > 0) {
+                        for (VehicleInfo vehicleInfo : vehicleInfoList) {
+                            if (!list.contains(vehicleInfo)) {
+                                list.add(vehicleInfo);
+                            }
+                        }
+                    }
+                }
+                //车队长
+                if ("3".equals(roleId)) {
+                    List<RouteAccount> routeAccountList = routeAccountService.findByAccountId(accountInfo.getId());
+                    if (routeAccountList.size() > 0) {
+                        for (RouteAccount routeAccount : routeAccountList) {
+                            List<VehicleInfo> vehicleInfoList1 = findByRouteId(routeAccount.getRouteId());
+                            if (vehicleInfoList1.size() > 0) {
+                                for (VehicleInfo vehicleInfo : vehicleInfoList1) {
+                                    if (!list.contains(vehicleInfo)) {
+                                        list.add(vehicleInfo);
+                                    }
+                                }
+                            }
+                        }
+                    }
+
+                }
+                //管理人员
+                if ("4".equals(roleId)) {
+                    CompanyInfo companyInfo = companyInfoService.get(accountInfo.getCompanyId());
+                    List<VehicleInfo> vehicleInfoList = findByCompanyId(companyInfo.getId());
+
+                    if (vehicleInfoList.size() > 0) {
+                        for (VehicleInfo vehicleInfo : vehicleInfoList) {
+                            if (!list.contains(vehicleInfo)) {
+                                list.add(vehicleInfo);
+                            }
+                        }
+
+                    }
+                }
+
+            }
+        }
+			/*CompanyInfo companyInfo = companyInfoService.get(accountInfo.getCompanyId());
+			List<VehicleInfo> vehicleInfoList = findByCompanyId(companyInfo.getId());
+
+			if (vehicleInfoList.size()>0){
+				for (VehicleInfo vehicleInfo : vehicleInfoList){
+					list.add(vehicleInfo);
+				}
 			}
-		}
-
-		List<RouteAccount> routeAccountList = routeAccountService.findByAccountId(accountInfo.getId());
-		if (routeAccountList.size()>0){
-			for (RouteAccount routeAccount : routeAccountList){
-				List<VehicleInfo> vehicleInfoList1 = findByRouteId(routeAccount.getRouteId());
-				if (vehicleInfoList1.size()>0){
-					for (VehicleInfo vehicleInfo:vehicleInfoList1){
-						if (!list.contains(vehicleInfo)){
-							list.add(vehicleInfo);
+
+			List<RouteAccount> routeAccountList = routeAccountService.findByAccountId(accountInfo.getId());
+			if (routeAccountList.size()>0){
+				for (RouteAccount routeAccount : routeAccountList){
+					List<VehicleInfo> vehicleInfoList1 = findByRouteId(routeAccount.getRouteId());
+					if (vehicleInfoList1.size()>0){
+						for (VehicleInfo vehicleInfo:vehicleInfoList1){
+							if (!list.contains(vehicleInfo)){
+								list.add(vehicleInfo);
+							}
 						}
 					}
 				}
 			}
-		}
 
-		List<VehicleInfo> vehicleInfoList2 = findByAccountId(accountInfo.getId());
-		if (vehicleInfoList2.size() > 0){
-			for (VehicleInfo vehicleInfo : vehicleInfoList2){
-				if (!list.contains(vehicleInfo)){
-					list.add(vehicleInfo);
+			List<VehicleInfo> vehicleInfoList2 = findByAccountId(accountInfo.getId());
+			if (vehicleInfoList2.size() > 0){
+				for (VehicleInfo vehicleInfo : vehicleInfoList2){
+					if (!list.contains(vehicleInfo)){
+						list.add(vehicleInfo);
+					}
 				}
-			}
 
-		}
+			}
+		}*/
 
 
-		return list;
-	}
+        return list;
+    }
 }

+ 23 - 21
common/src/main/java/com/jpsoft/bus/modules/merchant/entity/AccountInfo.java

@@ -4,6 +4,7 @@ import java.io.Serializable;
 import java.util.Date;
 import java.text.SimpleDateFormat;
 import java.math.BigDecimal;
+
 import org.springframework.format.annotation.DateTimeFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
@@ -11,46 +12,47 @@ import io.swagger.annotations.ApiModel;
 import lombok.Data;
 
 /**
-  描述:merchant_account_info的实体类
+ * 描述:merchant_account_info的实体类
  */
 @Data
 @ApiModel(value = "merchant_account_info的实体类")
 public class AccountInfo {
-        @ApiModelProperty(value = "")
+    @ApiModelProperty(value = "")
     private String id;
-        @ApiModelProperty(value = "商户名称")
+    @ApiModelProperty(value = "商户名称")
     private String name;
-        @ApiModelProperty(value = "关联的公司车队")
+    @ApiModelProperty(value = "关联的公司车队")
     private String companyId;
-        @ApiModelProperty(value = "微信openId")
+    @ApiModelProperty(value = "微信openId")
     private String openId;
-        @ApiModelProperty(value = "手机号")
+    @ApiModelProperty(value = "手机号")
     private String phone;
-        @ApiModelProperty(value = "提现许可(0:不可提现,1:可提现)")
+    @ApiModelProperty(value = "提现许可(0:不可提现,1:可提现)")
     private Boolean withdrawAllow;
-        @ApiModelProperty(value = "商户冻结(0:未冻结,1:已冻结)")
+    @ApiModelProperty(value = "商户冻结(0:未冻结,1:已冻结)")
     private Boolean frozen;
-        @ApiModelProperty(value = "头像")
+    @ApiModelProperty(value = "头像")
     private String imageUrl;
-        @ApiModelProperty(value = "银行名称")
+    @ApiModelProperty(value = "银行名称")
     private String bankName;
-        @ApiModelProperty(value = "银行卡账号")
+    @ApiModelProperty(value = "银行卡账号")
     private String bankNumber;
-        @ApiModelProperty(value = "创建人")
+    @ApiModelProperty(value = "创建人")
     private String createBy;
-        @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
-	    @ApiModelProperty(value = "创建时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @ApiModelProperty(value = "创建时间")
     private Date createTime;
-        @ApiModelProperty(value = "更新人")
+    @ApiModelProperty(value = "更新人")
     private String updateBy;
-        @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
-	    @ApiModelProperty(value = "更新时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @ApiModelProperty(value = "更新时间")
     private Date updateTime;
-        @ApiModelProperty(value = "是否删除")
+    @ApiModelProperty(value = "是否删除")
     private Boolean delFlag;
-
     @ApiModelProperty(value = "关联的公司车队")
     private String companyName;
+    @ApiModelProperty(value = "身份(1-司机、2-车主、3-车队长、4-管理人员)")
+    private String roles;
 }

+ 14 - 1
common/src/main/resources/mapper/base/OrderInfo.xml

@@ -223,7 +223,6 @@
                   and a.pay_time <= #{searchParams.payEndTime}
             ]]>
 			</if>
-
 			<if test="searchParams.payName != null and searchParams.payName != ''">
 				and a.pay_name = #{searchParams.payName}
 			</if>
@@ -232,6 +231,10 @@
 					#{item.id}
 				</foreach>
 			</if>
+			<if test="searchParams.vehicleShiftId != null ">
+				and h.vehicle_shift_id = #{searchParams.vehicleShiftId}
+			</if>
+
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">
 	        ${sort.name} ${sort.order}
@@ -298,6 +301,11 @@
 					#{item.id}
 				</foreach>
 			</if>
+			<if test="shiftInfoList!= null">
+				<foreach item="item" collection="shiftInfoList" open="and b.vehicle_shift_id in (" separator="," close=")">
+					#{item.id}
+				</foreach>
+			</if>
 			<if test="beginOfDay != null">
 				<![CDATA[
 			and	a.pay_time >= #{beginOfDay}
@@ -334,6 +342,11 @@
 					#{item.id}
 				</foreach>
 			</if>
+			<if test="shiftInfoList!= null">
+				<foreach item="item" collection="shiftInfoList" open="and b.vehicle_shift_id in (" separator="," close=")">
+					#{item.id}
+				</foreach>
+			</if>
 			<if test="beginOfDay != null">
 				<![CDATA[
 			and	a.pay_time >= #{beginOfDay}

+ 26 - 0
common/src/main/resources/mapper/bus/ShiftInfo.xml

@@ -146,6 +146,24 @@
 			<if test="searchParams.vehicleNumber != null">
 				and c.license_plate_number like #{searchParams.vehicleNumber}
 			</if>
+			<if test="searchParams.vehicleInfoList!= null">
+				<foreach item="item" collection="searchParams.vehicleInfoList" open="and a.vehicle_id in (" separator="," close=")">
+					#{item.id}
+				</foreach>
+			</if>
+			<if test="searchParams.driverId">
+				and a.driver_id = #{searchParams.driverId}
+			</if>
+			<if test="searchParams.startTime != null">
+				<![CDATA[
+					and a.create_time >= #{searchParams.startTime}
+				]]>
+			</if>
+			<if test="searchParams.endTime != null">
+				<![CDATA[
+					and a.create_time <= #{searchParams.endTime}
+				]]>
+			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">
 	        ${sort.name} ${sort.order}
@@ -187,4 +205,12 @@
 		and start_station_id = #{startStationId}
 		]]>
 	</select>
+	<select id="findVehicleByDriverId" resultMap="ShiftInfoMap">
+		<![CDATA[
+		select * from bus_shift_info
+		where del_flag = 0
+		and driver_id = #{driverId}
+		GROUP BY vehicle_id
+		]]>
+	</select>
 </mapper>

+ 146 - 140
common/src/main/resources/mapper/merchant/AccountInfo.xml

@@ -1,123 +1,129 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
 <mapper namespace="com.jpsoft.bus.modules.merchant.dao.AccountInfoDAO">
-	<resultMap id="AccountInfoMap" type="com.jpsoft.bus.modules.merchant.entity.AccountInfo">
-		<id property="id" column="id_" />
-			<result property="name" column="name_" />
-			<result property="companyId" column="company_id" />
-			<result property="openId" column="open_id" />
-			<result property="phone" column="phone_" />
-			<result property="withdrawAllow" column="withdraw_allow" />
-			<result property="frozen" column="frozen_" />
-			<result property="imageUrl" column="image_url" />
-			<result property="bankName" column="bank_name" />
-			<result property="bankNumber" column="bank_number" />
-			<result property="createBy" column="create_by" />
-			<result property="createTime" column="create_time" />
-			<result property="updateBy" column="update_by" />
-			<result property="updateTime" column="update_time" />
-			<result property="delFlag" column="del_flag" />
-			<result property="companyName" column="company_name" />
-			</resultMap>
-	<insert id="insert" parameterType="com.jpsoft.bus.modules.merchant.entity.AccountInfo">
-	<!--
-	<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
-		select sys_guid() from dual
-	</selectKey>
-	-->
-	<![CDATA[
+    <resultMap id="AccountInfoMap" type="com.jpsoft.bus.modules.merchant.entity.AccountInfo">
+        <id property="id" column="id_"/>
+        <result property="name" column="name_"/>
+        <result property="companyId" column="company_id"/>
+        <result property="openId" column="open_id"/>
+        <result property="phone" column="phone_"/>
+        <result property="withdrawAllow" column="withdraw_allow"/>
+        <result property="frozen" column="frozen_"/>
+        <result property="imageUrl" column="image_url"/>
+        <result property="bankName" column="bank_name"/>
+        <result property="bankNumber" column="bank_number"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="companyName" column="company_name"/>
+        <result property="roles" column="roles_"/>
+    </resultMap>
+    <insert id="insert" parameterType="com.jpsoft.bus.modules.merchant.entity.AccountInfo">
+        <!--
+        <selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
+            select sys_guid() from dual
+        </selectKey>
+        -->
+        <![CDATA[
 		insert into merchant_account_info
-	    (id_,name_,company_id,open_id,phone_,withdraw_allow,frozen_,image_url,bank_name,bank_number,create_by,create_time,update_by,update_time,del_flag)
+	    (id_,name_,company_id,open_id,phone_,withdraw_allow,frozen_,image_url,bank_name,bank_number,
+	    create_by,create_time,update_by,update_time,del_flag,roles_)
 		values
 		(
-#{id,jdbcType=VARCHAR}
-,#{name,jdbcType=VARCHAR}
-,#{companyId,jdbcType=VARCHAR}
-,#{openId,jdbcType=VARCHAR}
-,#{phone,jdbcType=VARCHAR}
-,#{withdrawAllow,jdbcType= NUMERIC }
-,#{frozen,jdbcType= NUMERIC }
-,#{imageUrl,jdbcType=VARCHAR}
-,#{bankName,jdbcType=VARCHAR}
-,#{bankNumber,jdbcType=VARCHAR}
-,#{createBy,jdbcType=VARCHAR}
-,#{createTime,jdbcType= TIMESTAMP }
-,#{updateBy,jdbcType=VARCHAR}
-,#{updateTime,jdbcType= TIMESTAMP }
-,#{delFlag,jdbcType= NUMERIC }
+            #{id,jdbcType=VARCHAR}
+            ,#{name,jdbcType=VARCHAR}
+            ,#{companyId,jdbcType=VARCHAR}
+            ,#{openId,jdbcType=VARCHAR}
+            ,#{phone,jdbcType=VARCHAR}
+            ,#{withdrawAllow,jdbcType= NUMERIC }
+            ,#{frozen,jdbcType= NUMERIC }
+            ,#{imageUrl,jdbcType=VARCHAR}
+            ,#{bankName,jdbcType=VARCHAR}
+            ,#{bankNumber,jdbcType=VARCHAR}
+            ,#{createBy,jdbcType=VARCHAR}
+            ,#{createTime,jdbcType= TIMESTAMP }
+            ,#{updateBy,jdbcType=VARCHAR}
+            ,#{updateTime,jdbcType= TIMESTAMP }
+            ,#{delFlag,jdbcType= NUMERIC }
+            ,#{roles,jdbcType=VARCHAR}
 		)
 	]]>
-	</insert>
-	<delete id="delete" parameterType="string">
-		delete from merchant_account_info where id_=#{id,jdbcType=VARCHAR}
-	</delete>
-	<update id="update" parameterType="com.jpsoft.bus.modules.merchant.entity.AccountInfo">
-		update merchant_account_info
-		<set>
-				<if test="name!=null">
-		name_=#{name,jdbcType=VARCHAR},
-		</if>
-				<if test="companyId!=null">
-		company_id=#{companyId,jdbcType=VARCHAR},
-		</if>
-				<if test="openId!=null">
-		open_id=#{openId,jdbcType=VARCHAR},
-		</if>
-				<if test="phone!=null">
-		phone_=#{phone,jdbcType=VARCHAR},
-		</if>
-				<if test="withdrawAllow!=null">
-		withdraw_allow=#{withdrawAllow,jdbcType= NUMERIC },
-		</if>
-				<if test="frozen!=null">
-		frozen_=#{frozen,jdbcType= NUMERIC },
-		</if>
-				<if test="imageUrl!=null">
-		image_url=#{imageUrl,jdbcType=VARCHAR},
-		</if>
-				<if test="bankName!=null">
-		bank_name=#{bankName,jdbcType=VARCHAR},
-		</if>
-				<if test="bankNumber!=null">
-		bank_number=#{bankNumber,jdbcType=VARCHAR},
-		</if>
-				<if test="createBy!=null">
-		create_by=#{createBy,jdbcType=VARCHAR},
-		</if>
-				<if test="createTime!=null">
-		create_time=#{createTime,jdbcType= TIMESTAMP },
-		</if>
-				<if test="updateBy!=null">
-		update_by=#{updateBy,jdbcType=VARCHAR},
-		</if>
-				<if test="updateTime!=null">
-		update_time=#{updateTime,jdbcType= TIMESTAMP },
-		</if>
-				<if test="delFlag!=null">
-		del_flag=#{delFlag,jdbcType= NUMERIC },
-		</if>
-		</set>
-	where id_=#{id}
-	</update>
-	<select id="get" parameterType="string" resultMap="AccountInfoMap">
-		SELECT
-		a.*,
-		b.name_ AS company_name
-		FROM
-		merchant_account_info a
-		LEFT JOIN bus_company_info b ON a.company_id = b.id_
-		where a.id_=#{0}
-	</select>
-	<select id="exist" parameterType="string" resultType="int">
-		select count(*) from merchant_account_info where id_=#{0}
-	</select>
-	<select id="list" resultMap="AccountInfoMap">
-		select * from merchant_account_info
-	</select>
-	<select id="search" parameterType="hashmap" resultMap="AccountInfoMap">
-		<![CDATA[
+    </insert>
+    <delete id="delete" parameterType="string">
+        delete from merchant_account_info where id_=#{id,jdbcType=VARCHAR}
+    </delete>
+    <update id="update" parameterType="com.jpsoft.bus.modules.merchant.entity.AccountInfo">
+        update merchant_account_info
+        <set>
+            <if test="name!=null">
+                name_=#{name,jdbcType=VARCHAR},
+            </if>
+            <if test="companyId!=null">
+                company_id=#{companyId,jdbcType=VARCHAR},
+            </if>
+            <if test="openId!=null">
+                open_id=#{openId,jdbcType=VARCHAR},
+            </if>
+            <if test="phone!=null">
+                phone_=#{phone,jdbcType=VARCHAR},
+            </if>
+            <if test="withdrawAllow!=null">
+                withdraw_allow=#{withdrawAllow,jdbcType= NUMERIC },
+            </if>
+            <if test="frozen!=null">
+                frozen_=#{frozen,jdbcType= NUMERIC },
+            </if>
+            <if test="imageUrl!=null">
+                image_url=#{imageUrl,jdbcType=VARCHAR},
+            </if>
+            <if test="bankName!=null">
+                bank_name=#{bankName,jdbcType=VARCHAR},
+            </if>
+            <if test="bankNumber!=null">
+                bank_number=#{bankNumber,jdbcType=VARCHAR},
+            </if>
+            <if test="createBy!=null">
+                create_by=#{createBy,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime!=null">
+                create_time=#{createTime,jdbcType= TIMESTAMP },
+            </if>
+            <if test="updateBy!=null">
+                update_by=#{updateBy,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime!=null">
+                update_time=#{updateTime,jdbcType= TIMESTAMP },
+            </if>
+            <if test="delFlag!=null">
+                del_flag=#{delFlag,jdbcType= NUMERIC },
+            </if>
+            <if test="roles!=null">
+                roles_=#{roles,jdbcType= NUMERIC },
+            </if>
+        </set>
+        where id_=#{id}
+    </update>
+    <select id="get" parameterType="string" resultMap="AccountInfoMap">
+        SELECT
+        a.*,
+        b.name_ AS company_name
+        FROM
+        merchant_account_info a
+        LEFT JOIN bus_company_info b ON a.company_id = b.id_
+        where a.id_=#{0}
+    </select>
+    <select id="exist" parameterType="string" resultType="int">
+        select count(*) from merchant_account_info where id_=#{0}
+    </select>
+    <select id="list" resultMap="AccountInfoMap">
+        select * from merchant_account_info
+    </select>
+    <select id="search" parameterType="hashmap" resultMap="AccountInfoMap">
+        <![CDATA[
 			SELECT
 				a.*,
 				b.name_ AS company_name
@@ -125,43 +131,43 @@
 				merchant_account_info a
 				LEFT JOIN bus_company_info b ON b.id_ = a.company_id
 		]]>
-		<where>
-			a.del_flag = 0
-			<if test="searchParams.id != null">
-				and a.ID_ like #{searchParams.id}
-			</if>
-			<if test="searchParams.companyCode != null">
-				and b.code_ like #{searchParams.companyCode}
-			</if>
-			<if test="searchParams.name != null">
-				and a.name_ like #{searchParams.name}
-			</if>
-			<if test="searchParams.phone != null">
-				and a.phone_ like #{searchParams.phone}
-			</if>
-			<if test="searchParams.frozen != null">
-				and a.frozen_ = #{searchParams.frozen}
-			</if>
-		</where>
-		<foreach item="sort" collection="sortList"  open="order by" separator=",">
-	        ${sort.name} ${sort.order}
-	 	</foreach>
-	</select>
+        <where>
+            a.del_flag = 0
+            <if test="searchParams.id != null">
+                and a.ID_ like #{searchParams.id}
+            </if>
+            <if test="searchParams.companyCode != null">
+                and b.code_ like #{searchParams.companyCode}
+            </if>
+            <if test="searchParams.name != null">
+                and a.name_ like #{searchParams.name}
+            </if>
+            <if test="searchParams.phone != null">
+                and a.phone_ like #{searchParams.phone}
+            </if>
+            <if test="searchParams.frozen != null">
+                and a.frozen_ = #{searchParams.frozen}
+            </if>
+        </where>
+        <foreach item="sort" collection="sortList" open="order by" separator=",">
+            ${sort.name} ${sort.order}
+        </foreach>
+    </select>
 
-	<select id="findByPhone" resultMap="AccountInfoMap">
-		<![CDATA[
+    <select id="findByPhone" resultMap="AccountInfoMap">
+        <![CDATA[
 		select  * from merchant_account_info
 		where del_flag = 0
 		and phone_ = #{phone}
 		]]>
-	</select>
+    </select>
 
-	<select id="findByOpenId" resultMap="AccountInfoMap">
-		<![CDATA[
+    <select id="findByOpenId" resultMap="AccountInfoMap">
+        <![CDATA[
 		select * from merchant_account_info
 		where del_flag = 0
 		and open_id = #{openId}
 		limit 1
 		]]>
-	</select>
+    </select>
 </mapper>

+ 88 - 10
web/src/main/java/com/jpsoft/bus/modules/driver/controller/DriverApiController.java

@@ -525,28 +525,101 @@ public class DriverApiController {
         return messageResult;
     }
 
+    @PostMapping("shiftDetail")
+    @ApiOperation(value = "车辆班次信息")
+    public MessageResult<Map> shiftDetail(String shiftId, @RequestAttribute String subject) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+            ShiftInfo shiftInfo = shiftInfoService.get(shiftId);
+
+            if (shiftInfo == null){
+                throw new Exception("车辆没有相关班次信息");
+            }
+
+            VehicleInfo vehicleInfo = vehicleInfoService.get(shiftInfo.getVehicleId());
+
+            //始发站
+            StationInfo startStation = stationInfoService.get(shiftInfo.getStartStationId());
+
+            //终点站
+            StationInfo endStation = stationInfoService.get(shiftInfo.getEndStationId());
+
+            //当前站点
+            StationInfo currentStation = stationInfoService.get(shiftInfo.getCurrentStationId());
+
+            Map<String,Object> map = new HashMap<>();
+
+            DriverInfo driverInfo = driverInfoService.get(shiftInfo.getDriverId());
+
+            map.put("licensePlateNumber", vehicleInfo.getLicensePlateNumber());
+
+            if(driverInfo!=null) {
+                map.put("driverName", driverInfo.getName());
+            }
+
+            SimpleDateFormat ymdFormat = new SimpleDateFormat("yyyy-MM-dd");
+            SimpleDateFormat hmFormat = new SimpleDateFormat("HH:mm");
+
+            map.put("date", ymdFormat.format(shiftInfo.getCreateTime()));
+            map.put("startTime", hmFormat.format(shiftInfo.getCreateTime()));
+
+            if (shiftInfo.getFinishTime()!=null){
+                map.put("finishTime", hmFormat.format(shiftInfo.getFinishTime()));
+            }
+
+            map.put("startStationId",startStation.getId());
+            map.put("startStationName",startStation.getName());
+            map.put("endStationId",endStation.getId());
+            map.put("endStationName",endStation.getName());
+
+            if(currentStation != null) {
+                map.put("currentStationId", currentStation.getId());
+                map.put("currentStationName", currentStation.getName());
+            }
+
+            RouteInfo routeInfo = routeInfoService.get(vehicleInfo.getRouteId());
+
+            if(routeInfo!=null){
+                map.put("routeName", routeInfo.getName());
+            }
+
+            messageResult.setData(map);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
     @PostMapping("busShiftInfo")
     @ApiOperation(value = "车辆班次信息")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "token", value = "令牌", paramType = "form"),
-            @ApiImplicitParam(name = "subject", value = "目标(不传)", paramType = "form")
+        @ApiImplicitParam(name = "subject", value = "目标(不传)", paramType = "form")
     })
-    public MessageResult<Map> busShiftInfo(String token, @RequestAttribute String subject) {
+    public MessageResult<Map> busShiftInfo(@RequestAttribute String subject) {
         MessageResult<Map> messageResult = new MessageResult<>();
 
         try {
-
             VehicleInfo vehicleInfo = vehicleInfoService.get(subject);
+
             if (vehicleInfo == null){
                 throw new Exception("当前车辆不存在");
             }
 
             List<ShiftInfo> shiftInfoList = shiftInfoService.findByVehicleIdAndStatus(vehicleInfo.getId(),"1");
+
             if (shiftInfoList.size() == 0){
                 throw new Exception("车辆没有相关班次信息");
             }
 
             ShiftInfo shiftInfo = shiftInfoList.get(0);
+
             //始发站
             StationInfo startStation = stationInfoService.get(shiftInfo.getStartStationId());
             //终点站
@@ -559,6 +632,7 @@ public class DriverApiController {
             StationStatusDTO stationStatusDTO = gpsService.queryStation(vehicleInfo.getId());
 
             Map<String,Object> map = new HashMap<>();
+
             map.put("startStationId",startStation.getId());
             map.put("startStationName",startStation.getName());
             map.put("endStationId",endStation.getId());
@@ -578,6 +652,8 @@ public class DriverApiController {
                 map.put("routeName", routeInfo.getName());
             }
 
+            map.put("shiftId", shiftInfo.getId());
+
             messageResult.setData(map);
             messageResult.setResult(true);
             messageResult.setCode(200);
@@ -769,14 +845,16 @@ public class DriverApiController {
             Page<PassengerInfo> page = passengerInfoService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
 
             for (PassengerInfo passengerInfo : page.getResult()) {
-                if ("1".equals(passengerInfo.getPayStatus())) {
-                    List<OrderInfo> orderInfoList = orderInfoService.findByPassengerIdAndPayStatus(passengerInfo.getId(), 20);
+                List<OrderInfo> orderInfoList = orderInfoService.findByPassengerIdAndPayStatus(passengerInfo.getId(), 20);
 
-                    //乘客最后一次购票信息
-                    if (orderInfoList.size() > 0) {
-                        passengerInfo.setTotalFee(orderInfoList.get(0).getTotalFee());
-                    }
+                BigDecimal totalFee = new BigDecimal(0);
+
+                //乘客所有购票
+                for (OrderInfo orderInfo : orderInfoList) {
+                    totalFee = totalFee.add(orderInfo.getTotalFee());
                 }
+
+                passengerInfo.setTotalFee(totalFee);
             }
 
             messageResult.setData(PojoUtils.pageWrapper(page));

+ 275 - 41
web/src/main/java/com/jpsoft/bus/modules/mobile/controller/MerchantApiController.java

@@ -8,7 +8,10 @@ import com.jpsoft.bus.modules.base.entity.OrderInfo;
 import com.jpsoft.bus.modules.base.entity.ProblemFeedback;
 import com.jpsoft.bus.modules.base.service.MergeOrderInfoService;
 import com.jpsoft.bus.modules.base.service.OrderInfoService;
+import com.jpsoft.bus.modules.bus.dto.ShiftRevenueDTO;
 import com.jpsoft.bus.modules.bus.dto.VehicleDTO;
+import com.jpsoft.bus.modules.bus.dto.VehicleShiftDTO;
+import com.jpsoft.bus.modules.bus.dto.VehicleShiftListDTO;
 import com.jpsoft.bus.modules.bus.entity.*;
 import com.jpsoft.bus.modules.bus.service.*;
 import com.jpsoft.bus.modules.common.dto.MessageResult;
@@ -238,7 +241,7 @@ public class MerchantApiController {
 
     @PostMapping("revenueStatisticsUp")
     @ApiOperation(value = "营收统计(上)")
-    public MessageResult<Map> revenueStatisticsUp(String token, @RequestAttribute String subject) {
+    public MessageResult<Map> revenueStatisticsUp(String vehicleId, String token, @RequestAttribute String subject) {
         MessageResult<Map> messageResult = new MessageResult<>();
 
         try {
@@ -248,7 +251,14 @@ public class MerchantApiController {
                 throw new Exception("请重新登录");
             }
             CompanyInfo companyInfo = companyInfoService.get(accountInfo.getCompanyId());
-            List<VehicleInfo> vehicleInfoList = vehicleInfoService.getAllVehicleByAccount(accountInfo);
+            List<VehicleInfo> vehicleInfoList = new ArrayList<>();
+            if (StringUtils.isBlank(vehicleId)) {
+                vehicleInfoList = vehicleInfoService.getAllVehicleByAccount(accountInfo);
+            } else {
+                VehicleInfo vehicleInfo = vehicleInfoService.get(vehicleId);
+                vehicleInfoList.add(vehicleInfo);
+            }
+
             //今日收益
             BigDecimal todayRevenue = BigDecimal.ZERO;
             //昨日收益
@@ -262,25 +272,38 @@ public class MerchantApiController {
             }
 
             //      if (vehicleInfoList.size()>0){
-            //今日收益
-            BigDecimal todaySum = orderInfoService.paySum(vehicleInfoList, null, null, DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), null);
-            if (todaySum != null) {
-                todayRevenue = todaySum;
+            List<ShiftInfo> shiftInfoList = shiftInfoService.findByVehicleDateAccount(DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()),accountInfo);
+
+            if (shiftInfoList.size()>0){
+                //今日收益
+                BigDecimal todaySum = orderInfoService.paySum(null, shiftInfoList,null, null, DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), null);
+                if (todaySum != null) {
+                    todayRevenue = todaySum;
+                }
             }
-            //昨日收益
-            BigDecimal yesterdaySum = orderInfoService.paySum(vehicleInfoList, null, null, DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -1)), DateUtil.endOfDay(DateUtil.offsetDay(new Date(), -1)), null);
-            if (yesterdaySum != null) {
-                yesterdayRevenue = yesterdaySum;
+
+            List<ShiftInfo> shiftInfoList1 = shiftInfoService.findByVehicleDateAccount(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -1)), DateUtil.endOfDay(DateUtil.offsetDay(new Date(), -1)),accountInfo);
+            if (shiftInfoList1.size()>0){
+                //昨日收益
+                BigDecimal yesterdaySum = orderInfoService.paySum(null, shiftInfoList1,null, null, DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -1)), DateUtil.endOfDay(DateUtil.offsetDay(new Date(), -1)), null);
+                if (yesterdaySum != null) {
+                    yesterdayRevenue = yesterdaySum;
+                }
             }
 
-            //总收益
-            BigDecimal totalSum = orderInfoService.paySum(vehicleInfoList, null, null, null, new cn.hutool.core.date.DateTime(), null);
+            List<ShiftInfo> shiftInfoList2 = shiftInfoService.findByVehicleDateAccount(null, new cn.hutool.core.date.DateTime(),accountInfo);
+            if (shiftInfoList2.size()>0){
+                //总收益
+                BigDecimal totalSum = orderInfoService.paySum(null, shiftInfoList2,null, null, null, new cn.hutool.core.date.DateTime(), null);
 
-            if (totalSum != null) {
-                totalRevenue = totalSum;
+                if (totalSum != null) {
+                    totalRevenue = totalSum;
+                }
             }
 
 
+
+
             //      }
 
             Map<String, Object> map = new HashMap<>();
@@ -303,7 +326,7 @@ public class MerchantApiController {
 
     @PostMapping("revenueStatisticsDown")
     @ApiOperation(value = "营收统计(下)")
-    public MessageResult<Map> revenueStatisticsDown(String token, @RequestAttribute String subject) {
+    public MessageResult<Map> revenueStatisticsDown(String vehicleId, String token, @RequestAttribute String subject) {
         MessageResult<Map> messageResult = new MessageResult<>();
 
         try {
@@ -313,7 +336,15 @@ public class MerchantApiController {
                 throw new Exception("请重新登录");
             }
             CompanyInfo companyInfo = companyInfoService.get(accountInfo.getCompanyId());
-            List<VehicleInfo> vehicleInfoList = vehicleInfoService.getAllVehicleByAccount(accountInfo);
+            // List<VehicleInfo> vehicleInfoList = vehicleInfoService.getAllVehicleByAccount(accountInfo);
+
+            List<VehicleInfo> vehicleInfoList = new ArrayList<>();
+            if (StringUtils.isBlank(vehicleId)) {
+                vehicleInfoList = vehicleInfoService.getAllVehicleByAccount(accountInfo);
+            } else {
+                VehicleInfo vehicleInfo = vehicleInfoService.get(vehicleId);
+                vehicleInfoList.add(vehicleInfo);
+            }
             //线上购票款
             BigDecimal onlineRevenue = BigDecimal.ZERO;
             //微信收款
@@ -328,36 +359,41 @@ public class MerchantApiController {
             Integer num = 0;
 
 
+            List<ShiftInfo> shiftInfoList = shiftInfoService.findByVehicleDateAccount(DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), accountInfo);
             //  if (vehicleInfoList.size()>0){
+
+            if (shiftInfoList.size() > 0) {
+
+
             //微信
-            BigDecimal wechatSum = orderInfoService.paySum(vehicleInfoList, null, "wechat", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), null);
+            BigDecimal wechatSum = orderInfoService.paySum(null, shiftInfoList, null, "wechat", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), null);
             if (wechatSum != null) {
                 wechatRevenue = wechatSum;
             }
             //支付宝
-            BigDecimal alipaySum = orderInfoService.paySum(vehicleInfoList, null, "alipay", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), null);
+            BigDecimal alipaySum = orderInfoService.paySum(null, shiftInfoList, null, "alipay", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), null);
             if (alipaySum != null) {
                 alipayRevenue = alipaySum;
             }
 
             //现金
-            BigDecimal cashSum = orderInfoService.paySum(vehicleInfoList, null, "cash", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), null);
+            BigDecimal cashSum = orderInfoService.paySum(null, shiftInfoList, null, "cash", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), null);
             if (cashSum != null) {
                 cashRevenue = cashSum;
             }
 
             //车票
-            BigDecimal ticketSum = orderInfoService.paySum(vehicleInfoList, null, "ticket", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), null);
+            BigDecimal ticketSum = orderInfoService.paySum(null, shiftInfoList, null, "ticket", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), null);
             if (ticketSum != null) {
                 ticketRevenue = ticketSum;
             }
 
-            Integer ticketNum = orderInfoService.payNum(vehicleInfoList, null, null, DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), null);
+            Integer ticketNum = orderInfoService.payNum(null, shiftInfoList, null, null, DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), null);
             if (ticketNum != null) {
                 num = ticketNum;
             }
 
-
+        }
             //      }
 
             Map<String, Object> map = new HashMap<>();
@@ -381,6 +417,185 @@ public class MerchantApiController {
         return messageResult;
     }
 
+    @PostMapping("vehicleShiftList")
+    @ApiOperation(value = "商户的车辆班次列表")
+    public MessageResult<Map> vehicleShiftList(String vehicleId, String date, String token, @RequestAttribute String subject, @RequestParam(value = "pageIndex", defaultValue = "1") int pageIndex, @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            AccountInfo accountInfo = accountInfoService.get(subject);
+            if (accountInfo == null) {
+                throw new Exception("请重新登录");
+            }
+            Map<String, Object> searchParams = new HashMap<>();
+            List<VehicleInfo> vehicleInfoList = new ArrayList<>();
+            if (StringUtils.isBlank(vehicleId)) {
+                vehicleInfoList = vehicleInfoService.getAllVehicleByAccount(accountInfo);
+            } else {
+                VehicleInfo vehicleInfo = vehicleInfoService.get(vehicleId);
+                vehicleInfoList.add(vehicleInfo);
+            }
+
+            searchParams.put("vehicleInfoList", vehicleInfoList);
+            if (StringUtils.isNotBlank(date)){
+                searchParams.put("startTime", DateUtil.beginOfDay(DateUtil.parse(date)));
+                searchParams.put("endTime", DateUtil.endOfDay(DateUtil.parse(date)));
+            }
+
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("a.vehicle_id", "desc"));
+            sortList.add(new Sort("a.create_time", "desc"));
+            Page<ShiftInfo> page = shiftInfoService.pageSearch(searchParams, pageIndex, pageSize, true, sortList);
+            List<ShiftInfo> shiftInfoList = page.getResult();
+            List<VehicleShiftListDTO> list = new ArrayList<>();
+            if (shiftInfoList.size() > 0) {
+                for (ShiftInfo shiftInfo : shiftInfoList) {
+                    VehicleShiftListDTO vehicleShiftListDTO = new VehicleShiftListDTO();
+                    VehicleInfo vehicleInfo = vehicleInfoService.get(shiftInfo.getVehicleId());
+                    String dateStr1 = DateUtil.format(shiftInfo.getCreateTime(), "yyyy-MM-dd");
+                    String dateStr2 = DateUtil.format(shiftInfo.getCreateTime(), "HH:mm");
+                    if ("1".equals(shiftInfo.getStatus())) {
+                        dateStr2 = dateStr2 + "-" + "待结束";
+                    }
+                    if ("2".equals(shiftInfo.getStatus())) {
+                        dateStr2 = dateStr2 + "-" + DateUtil.format(shiftInfo.getFinishTime(), "HH:mm");
+                    }
+                    vehicleShiftListDTO.setId(shiftInfo.getId());
+                    vehicleShiftListDTO.setCarNum(vehicleInfo.getLicensePlateNumber());
+                    vehicleShiftListDTO.setDateStr(dateStr1 + " " + dateStr2);
+
+                    Map<String, Object> searchParams1 = new HashMap<>();
+                    searchParams1.put("payStatus",20);
+                    searchParams1.put("vehicleShiftId",shiftInfo.getId());
+                    List<Sort> sortList1 = new ArrayList<>();
+                    sortList1.add(new Sort("a.pay_time","desc"));
+                    List<OrderInfo> orderInfoList = orderInfoService.findBySearchParams(searchParams1,sortList1);
+                    BigDecimal total = BigDecimal.ZERO;
+                    if (orderInfoList.size()>0){
+                        for (OrderInfo orderInfo : orderInfoList){
+                            total = total.add(orderInfo.getPayFee());
+                        }
+                    }
+
+                    vehicleShiftListDTO.setTotal(total);
+                    list.add(vehicleShiftListDTO);
+                }
+
+            }
+            Map<String, Object> pageMap = new HashMap<>();
+            pageMap.put("recordsTotal", page.getTotal());
+            pageMap.put("recordsFiltered", page.getTotal());
+            pageMap.put("totalPage", page.getPages());
+            pageMap.put("pageNumber", page.getPageNum());
+            pageMap.put("pageSize", page.getPageSize());
+            pageMap.put("data", list);
+
+
+            messageResult.setData(pageMap);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+    @PostMapping("vehicleShiftDetail")
+    @ApiOperation(value = "商户的车辆班次详情")
+    public MessageResult<VehicleShiftDTO> vehicleShiftDetail(String id, String token, @RequestAttribute String subject) {
+        MessageResult<VehicleShiftDTO> messageResult = new MessageResult<>();
+
+        try {
+
+            AccountInfo accountInfo = accountInfoService.get(subject);
+            if (accountInfo == null) {
+                throw new Exception("请重新登录");
+            }
+            VehicleShiftDTO vehicleShiftDTO = new VehicleShiftDTO();
+            ShiftInfo shiftInfo = shiftInfoService.get(id);
+            VehicleInfo vehicleInfo = vehicleInfoService.get(shiftInfo.getVehicleId());
+            DriverInfo driverInfo = driverInfoService.get(shiftInfo.getDriverId());
+            //开始站
+            StationInfo startStation = stationInfoService.get(shiftInfo.getStartStationId());
+            //终点站
+            StationInfo endStation = stationInfoService.get(shiftInfo.getEndStationId());
+
+            String shiftDateStr = DateUtil.format(shiftInfo.getCreateTime(), "HH:mm");
+            if ("1".equals(shiftInfo.getStatus())) {
+                shiftDateStr = shiftDateStr + "-" + "待结束";
+            }
+            if ("2".equals(shiftInfo.getStatus())) {
+                shiftDateStr = shiftDateStr + "-" + DateUtil.format(shiftInfo.getFinishTime(), "HH:mm");
+            }
+            vehicleShiftDTO.setRouteName(startStation.getName()+"-" + endStation.getName());
+            vehicleShiftDTO.setCarNum(vehicleInfo.getLicensePlateNumber());
+            vehicleShiftDTO.setDriverName(driverInfo.getName());
+            vehicleShiftDTO.setDateStr(DateUtil.format(shiftInfo.getCreateTime(),"yyyy-MM-dd"));
+            vehicleShiftDTO.setShiftDateStr(shiftDateStr);
+
+
+
+            Map<String, Object> searchParams = new HashMap<>();
+            searchParams.put("shiftId", shiftInfo.getId());
+            searchParams.put("payStatus", 20);
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("a.pay_fee", "asc"));
+            Page<OrderInfo> page = orderInfoService.pageSearch(searchParams, 1, 5000, false, sortList);
+
+            List<OrderInfo> orderInfoList = page.getResult();
+            BigDecimal total = BigDecimal.ZERO;
+            Integer personNum = orderInfoList.size();
+            List<ShiftRevenueDTO> shiftRevenueDTOList = new ArrayList<>();
+            List<BigDecimal> ticketPrice = new ArrayList<>();
+            Map<BigDecimal, List<OrderInfo>> map = new LinkedHashMap<>();
+            if (orderInfoList.size() > 0) {
+                BigDecimal key;
+                List<OrderInfo> listTmp;
+                for (OrderInfo val : orderInfoList) {
+                    total = total.add(val.getPayFee());
+                    key = val.getPayFee();//按这个属性分组,map的Key
+                    listTmp = map.get(key);
+                    if (null == listTmp) {
+                        listTmp = new ArrayList<OrderInfo>();
+                        map.put(key, listTmp);
+                    }
+                    listTmp.add(val);
+                }
+            }
+            for (Map.Entry<BigDecimal, List<OrderInfo>> date : map.entrySet()){
+                BigDecimal payFee = date.getKey();
+                List<OrderInfo> orderInfos = date.getValue();
+                ShiftRevenueDTO shiftRevenueDTO = new ShiftRevenueDTO();
+                shiftRevenueDTO.setPrice(payFee);
+                shiftRevenueDTO.setNum(orderInfos.size());
+                shiftRevenueDTO.setTotal(payFee.multiply(new BigDecimal(orderInfos.size())));
+                shiftRevenueDTOList.add(shiftRevenueDTO);
+            }
+            vehicleShiftDTO.setList(shiftRevenueDTOList);
+            vehicleShiftDTO.setPassengerNum(personNum);
+            vehicleShiftDTO.setTotal(total);
+
+
+
+            messageResult.setData(vehicleShiftDTO);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
 
     @PostMapping("merchantVehicleList")
     @ApiOperation(value = "商户的车辆列表")
@@ -393,17 +608,22 @@ public class MerchantApiController {
             if (accountInfo == null) {
                 throw new Exception("请重新登录");
             }
+            List<VehicleDTO> list = new ArrayList<>();
 
-            List<VehicleInfo> vehicleInfoList = vehicleInfoService.getAllVehicleByAccount(accountInfo);
 
-            List<VehicleDTO> list = new ArrayList<>();
-            if (vehicleInfoList.size() > 0) {
-                for (VehicleInfo vehicleInfo : vehicleInfoList) {
-                    VehicleDTO vehicleDTO = new VehicleDTO();
-                    BeanUtils.copyProperties(vehicleInfo, vehicleDTO);
-                    list.add(vehicleDTO);
+            if (StringUtils.isNotBlank(accountInfo.getRoles())){
+                List<VehicleInfo> vehicleInfoList = vehicleInfoService.getAllVehicleByAccount(accountInfo);
+
+
+                if (vehicleInfoList.size() > 0) {
+                    for (VehicleInfo vehicleInfo : vehicleInfoList) {
+                        VehicleDTO vehicleDTO = new VehicleDTO();
+                        BeanUtils.copyProperties(vehicleInfo, vehicleDTO);
+                        list.add(vehicleDTO);
+                    }
                 }
             }
+
             messageResult.setData(list);
             messageResult.setResult(true);
             messageResult.setCode(200);
@@ -431,10 +651,19 @@ public class MerchantApiController {
         try {
 
             ProfitListDTO profitListDTO = new ProfitListDTO();
+            List<ProfitListDTO> list = new ArrayList<>();
+            BigDecimal revenue = BigDecimal.ZERO;
+            Date startDate = DateUtil.endOfDay(new Date());
+            Date newDate = DateUtil.beginOfMonth(new Date());
+            String dateDesc = DateUtil.format(newDate, "yyyy年MM月");
             AccountInfo accountInfo = accountInfoService.get(subject);
             if (accountInfo == null) {
                 throw new Exception("请重新登录");
             }
+
+            if (StringUtils.isBlank(accountInfo.getRoles())){
+                throw new Exception("账户未分配角色");
+            }
             CompanyInfo companyInfo = companyInfoService.get(accountInfo.getCompanyId());
             List<VehicleInfo> vehicleInfoList = new ArrayList<>();
             if (StringUtils.isNotBlank(vehicleId)) {
@@ -447,11 +676,13 @@ public class MerchantApiController {
             }
 
 
+
+
+
+
+
             int n = 0;
             //开始计算的日期
-            Date startDate = DateUtil.endOfDay(new Date());
-            Date newDate = DateUtil.beginOfMonth(new Date());
-            String dateDesc = DateUtil.format(newDate, "yyyy年MM月");
             if (StringUtils.isNotBlank(dateStr)) {
                 Date date = DateUtil.parse(dateStr, "yyyy-MM");
 
@@ -467,23 +698,24 @@ public class MerchantApiController {
                 n = DateUtil.thisDayOfMonth();
             }
 
-            BigDecimal revenue = BigDecimal.ZERO;
+
 
             profitListDTO.setDateDesc(dateDesc);
 
 
-            List<ProfitListDTO> list = new ArrayList<>();
+
             if (n > 0) {
                 for (int m = 0; m < n; m++) {
                     ProfitListDTO profitListDTO1 = new ProfitListDTO();
                     Date baseDate = DateUtil.offsetDay(startDate, -m);
                     Date baseStartDate = DateUtil.beginOfDay(baseDate);
                     BigDecimal baseSum = BigDecimal.ZERO;
-                    //  if (vehicleInfoList.size()>0){
-                    baseSum = orderInfoService.paySum(vehicleInfoList, null, payName, baseStartDate, baseDate, null);
+                    List<ShiftInfo> shiftInfoList = shiftInfoService.findByVehicleDateAccount(baseStartDate,baseDate,accountInfo);
+                      if (shiftInfoList.size()>0){
+                    baseSum = orderInfoService.paySum(null,shiftInfoList, null, payName, null, null, null);
 
 
-                    //    }
+                        }
 
                     profitListDTO1.setDateDesc(DateUtil.format(baseDate, "yyyy-MM-dd"));
                     profitListDTO1.setRevenue(baseSum == null ? BigDecimal.ZERO : baseSum);
@@ -558,8 +790,8 @@ public class MerchantApiController {
             if (StringUtils.isNotBlank(vehicleId)) {
                 searchParams.put("vehicleId", vehicleId);
             }
-           // searchParams.put("orderCompanyId", companyInfo.getId());
-            searchParams.put("vehicleInfoList",vehicleInfoList);
+            // searchParams.put("orderCompanyId", companyInfo.getId());
+            searchParams.put("vehicleInfoList", vehicleInfoList);
 
             List<Sort> sortList = new ArrayList<>();
             sortList.add(new Sort("a.pay_time", "desc"));
@@ -717,9 +949,11 @@ public class MerchantApiController {
             }
             CompanyInfo companyInfo = companyInfoService.get(accountInfo.getCompanyId());
             List<VehicleInfo> vehicleInfoList = vehicleInfoService.findByCompanyId(companyInfo.getId());
+
+            List<ShiftInfo> shiftInfoList = shiftInfoService.findByVehicleDateAccount(DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()),accountInfo);
             //   if (vehicleInfoList.size()>0){
-            BigDecimal wechatTodaySum = orderInfoService.paySum(null, companyInfo.getId(), "wechat", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), false);
-            BigDecimal alipayTodaySum = orderInfoService.paySum(null, companyInfo.getId(), "alipay", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), false);
+            BigDecimal wechatTodaySum = orderInfoService.paySum(null,null, companyInfo.getId(), "wechat", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), false);
+            BigDecimal alipayTodaySum = orderInfoService.paySum(null, null,companyInfo.getId(), "alipay", DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()), false);
             todayRevenue = (wechatTodaySum == null ? BigDecimal.ZERO : wechatTodaySum).add(alipayTodaySum == null ? BigDecimal.ZERO : alipayTodaySum);
 
             //    }