package com.stylefeng.guns.modular.crossCity.server.impl;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
import com.stylefeng.guns.modular.crossCity.dao.LineMapper;
|
import com.stylefeng.guns.modular.crossCity.dao.LineShiftDriverMapper;
|
import com.stylefeng.guns.modular.crossCity.dao.LineShiftMapper;
|
import com.stylefeng.guns.modular.crossCity.model.Line;
|
import com.stylefeng.guns.modular.crossCity.model.LineShift;
|
import com.stylefeng.guns.modular.crossCity.model.LineShiftDriver;
|
import com.stylefeng.guns.modular.crossCity.server.ILineService;
|
import com.stylefeng.guns.modular.system.util.DateUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
|
|
@Service
|
public class LineServiceImpl extends ServiceImpl<LineMapper, Line> implements ILineService {
|
|
@Resource
|
private LineMapper lineMapper;
|
|
@Resource
|
private LineShiftMapper lineShiftMapper;
|
|
@Resource
|
private LineShiftDriverMapper lineShiftDriverMapper;
|
|
@Autowired
|
private DateUtil dateUtil;
|
|
|
/**
|
* 扫码获取司机的所有线路
|
* @param driverId
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public List<Map<String, Object>> scanCodeQueryLines(Integer driverId) throws Exception {
|
return lineMapper.scanCodeQueryLines(driverId);
|
}
|
|
|
/**
|
* 获取线路对应的排班数据
|
* @param lineId
|
* @param time
|
* @param driverId
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public List<Map<String, Object>> queryLineShiftInfo(Integer lineId, String time, Integer driverId) throws Exception {
|
List<LineShift> lineShifts = lineShiftMapper.queryByLineId(lineId);
|
Map<String, Date> date = dateUtil.getStartAndEndDate(time);
|
Calendar s = Calendar.getInstance();
|
s.setTime(new Date());
|
long timeInMillis = s.getTimeInMillis();
|
List<Map<String, Object>> list = new ArrayList<>();
|
for(LineShift lineShift : lineShifts){
|
Map<String, Object> map = new HashMap<>();
|
map.put("id", lineShift.getId());
|
map.put("time", lineShift.getStartTime() + "-" + lineShift.getEndTime());
|
List<LineShiftDriver> lineShiftDriver = lineShiftDriverMapper.queryByDriver(lineShift.getId(), driverId, date.get("startTime"));
|
s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(lineShift.getEndTime().split(":")[0]));
|
s.set(Calendar.MINUTE, Integer.valueOf(lineShift.getEndTime().split(":")[1]));
|
long timeInMillis1 = s.getTimeInMillis();
|
if(lineShiftDriver.size() == 0 && timeInMillis > timeInMillis1){
|
map.put("state", 1);//不可预约
|
}
|
if(lineShiftDriver.size() > 0){
|
map.put("state", 2);//已预约
|
}
|
map.put("state", 3);//未预约
|
list.add(map);
|
}
|
return list;
|
}
|
|
|
/**
|
* 根据站点id获取线路
|
* @param startId
|
* @param endId
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public List<Map<String, Object>> queryLines(Integer startId, Integer endId, Integer driverId) throws Exception {
|
List<Map<String, Object>> list1 = lineMapper.queryLines(startId, 1);
|
List<Map<String, Object>> list2 = lineMapper.queryLines(endId, 2);
|
List<Map<String, Object>> list = new ArrayList<>();
|
for(Map<String, Object> map1 : list1){
|
Integer id1 = Integer.valueOf(map1.get("id").toString());
|
for(Map<String, Object> map2 : list2){
|
Integer id2 = Integer.valueOf(map2.get("id").toString());
|
if(id1 == id2){
|
map1.put("startAddress", map1.get("siteName"));
|
map1.put("endAddress", map2.get("siteName"));
|
list.add(map1);
|
}
|
}
|
}
|
if(null != driverId){
|
List<Map<String, Object>> lists = new ArrayList<>();
|
List<Map<String, Object>> list3 = lineMapper.scanCodeQueryLines(driverId);
|
for(Map<String, Object> map1 : list){
|
Integer id2 = Integer.valueOf(map1.get("id").toString());
|
for(Map<String, Object> map : list3){
|
Integer id1 = Integer.valueOf(map.get("id").toString());
|
if(id1 == id2){
|
lists.add(map1);
|
}
|
}
|
}
|
list = lists;
|
}
|
return list;
|
}
|
}
|