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 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> scanCodeQueryLines(Integer driverId) throws Exception { return lineMapper.scanCodeQueryLines(driverId); } /** * 获取线路对应的排班数据 * @param lineId * @param time * @param driverId * @return * @throws Exception */ @Override public List> queryLineShiftInfo(Integer lineId, String time, Integer driverId) throws Exception { List lineShifts = lineShiftMapper.queryByLineId(lineId); Map date = dateUtil.getStartAndEndDate(time); Calendar s = Calendar.getInstance(); s.setTime(new Date()); long timeInMillis = s.getTimeInMillis(); List> list = new ArrayList<>(); for(LineShift lineShift : lineShifts){ Map map = new HashMap<>(); map.put("id", lineShift.getId()); map.put("time", lineShift.getStartTime() + "-" + lineShift.getEndTime()); List 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> queryLines(Integer startId, Integer endId, Integer driverId) throws Exception { List> list1 = lineMapper.queryLines(startId, 1); List> list2 = lineMapper.queryLines(endId, 2); List> list = new ArrayList<>(); for(Map map1 : list1){ Integer id1 = Integer.valueOf(map1.get("id").toString()); for(Map map2 : list2){ Integer id2 = Integer.valueOf(map2.get("id").toString()); if(id1.compareTo(id2) == 0){ map1.put("startAddress", map1.get("siteName")); map1.put("endAddress", map2.get("siteName")); list.add(map1); } } } if(null != driverId){ List> lists = new ArrayList<>(); List> list3 = lineMapper.scanCodeQueryLines(driverId); for(Map map1 : list){ Integer id2 = Integer.valueOf(map1.get("id").toString()); for(Map map : list3){ Integer id1 = Integer.valueOf(map.get("id").toString()); if(id1.compareTo(id2) == 0){ lists.add(map1); } } } list = lists; } return list; } }