| | |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.stylefeng.guns.core.util.DateUtil; |
| | | import com.stylefeng.guns.modular.system.model.TDriver; |
| | | import com.stylefeng.guns.modular.system.dao.TDriverMapper; |
| | | import com.stylefeng.guns.modular.system.controller.resp.TDriverResp; |
| | | import com.stylefeng.guns.modular.system.dao.*; |
| | | import com.stylefeng.guns.modular.system.enums.OrderStateEnum; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.modular.system.service.ITDriverService; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.Period; |
| | | import java.time.ZoneId; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | */ |
| | | @Service |
| | | public class TDriverServiceImpl extends ServiceImpl<TDriverMapper, TDriver> implements ITDriverService { |
| | | |
| | | |
| | | @Autowired |
| | | private TAgentMapper tAgentMapper; |
| | | @Autowired |
| | | private TBranchOfficeMapper tBranchOfficeMapper; |
| | | @Autowired |
| | | private TOrderMapper tOrderMapper; |
| | | @Autowired |
| | | private TDriverMapper tDriverMapper; |
| | | @Autowired |
| | | private TAppUserMapper tAppUserMapper; |
| | | |
| | | @Override |
| | | public EntityWrapper<TDriver> getPageList(String createTime, String phone, Integer status) { |
| | |
| | | Date endTime = DateUtil.getDate_str4(split[1]); |
| | | wrapper.between("createTime",startTime,endTime); |
| | | } |
| | | wrapper.orderBy(true,"approvalStatus"); |
| | | return wrapper; |
| | | } |
| | | |
| | | @Override |
| | | public List<TDriverResp> getTDriverResp(List<TDriver> tDrivers) { |
| | | List<TDriverResp> tDriverRespList = new ArrayList<>(tDrivers.size()); |
| | | |
| | | List<TOrder> tOrders = tOrderMapper.selectList(new EntityWrapper<TOrder>()); |
| | | |
| | | String monthDate = new SimpleDateFormat("yyyyMM").format(new Date()); |
| | | |
| | | for (TDriver tDriver : tDrivers) { |
| | | TDriverResp tDriverResp = new TDriverResp(); |
| | | BeanUtils.copyProperties(tDriver,tDriverResp); |
| | | |
| | | // 设置余额 |
| | | tDriverResp.setBalance(tDriver.getBackgroundBalance().add(tDriver.getBalance())); |
| | | |
| | | // 所属代理商 |
| | | TAgent tAgent = tAgentMapper.selectById(tDriver.getAgentId()); |
| | | if(Objects.nonNull(tAgent)){ |
| | | tDriverResp.setAgentName(tAgent.getPrincipal()); |
| | | } |
| | | //所属分公司 |
| | | TBranchOffice tBranchOffice = tBranchOfficeMapper.selectById(tDriver.getBranchOfficeId()); |
| | | if(Objects.nonNull(tBranchOffice)){ |
| | | tDriverResp.setBranchName(tBranchOffice.getPrincipal()); |
| | | } |
| | | //累计订单量 |
| | | List<TOrder> cumulativeOrderCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId()) |
| | | && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode())).collect(Collectors.toList()); |
| | | tDriverResp.setCumulativeOrderCount(cumulativeOrderCount.size()); |
| | | //当月订单量 |
| | | List<TOrder> monthOrderCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId()) |
| | | && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode()) |
| | | && new SimpleDateFormat("yyyyMM").format(order.getCreateTime()).equals(monthDate)).collect(Collectors.toList()); |
| | | tDriverResp.setMonthOrderCount(monthOrderCount.size()); |
| | | // TODO 拒单次数 |
| | | List<TOrder> refusalCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId()) |
| | | && order.getState().equals(OrderStateEnum.CANCELED.getCode())).collect(Collectors.toList()); |
| | | tDriverResp.setRefusalCount(refusalCount.size()); |
| | | |
| | | tDriverRespList.add(tDriverResp); |
| | | } |
| | | return tDriverRespList; |
| | | } |
| | | |
| | | @Override |
| | | public void auditPage(Integer id, Model model) { |
| | | |
| | | TDriver tDriver = tDriverMapper.selectById(id); |
| | | |
| | | model.addAttribute("id",tDriver.getId()); |
| | | model.addAttribute("code",tDriver.getCode()); |
| | | model.addAttribute("name",tDriver.getName()); |
| | | model.addAttribute("phone",tDriver.getPhone()); |
| | | model.addAttribute("sex",tDriver.getSex()); |
| | | model.addAttribute("driverLicenseNumber",tDriver.getDriverLicenseNumber()); |
| | | model.addAttribute("driverLicense",tDriver.getDriverLicense()); |
| | | model.addAttribute("idcard",tDriver.getIdcard()); |
| | | model.addAttribute("idcardFront",tDriver.getIdcardFront()); |
| | | model.addAttribute("idcardBack",tDriver.getIdcardBack()); |
| | | model.addAttribute("emergencyContact",tDriver.getEmergencyContact()); |
| | | model.addAttribute("emergencyPhone",tDriver.getEmergencyPhone()); |
| | | model.addAttribute("provinceName",tDriver.getProvinceName()); |
| | | model.addAttribute("cityName",tDriver.getCityName()); |
| | | model.addAttribute("areaName",tDriver.getAreaName()); |
| | | model.addAttribute("createTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tDriver.getCreateTime())); |
| | | |
| | | // 计算驾龄 |
| | | ZoneId zoneId = ZoneId.systemDefault(); |
| | | LocalDate firstTime = tDriver.getFirstCertificateTime().toInstant().atZone(zoneId).toLocalDate(); |
| | | LocalDate now = tDriver.getFirstCertificateTime().toInstant().atZone(zoneId).toLocalDate(); |
| | | Period period = Period.between(firstTime, now); |
| | | model.addAttribute("drivingExperience",period.getYears()); |
| | | |
| | | List<TOrder> tOrders = tOrderMapper.selectList(new EntityWrapper<TOrder>()); |
| | | |
| | | String monthDate = new SimpleDateFormat("yyyyMM").format(new Date()); |
| | | |
| | | // 设置余额 |
| | | tDriver.setBalance(tDriver.getBackgroundBalance().add(tDriver.getBalance())); |
| | | |
| | | // 所属代理商 |
| | | TAgent tAgent = tAgentMapper.selectById(tDriver.getAgentId()); |
| | | if(Objects.nonNull(tAgent)){ |
| | | model.addAttribute("agentName",tAgent.getPrincipal()); |
| | | }else { |
| | | model.addAttribute("agentName",""); |
| | | } |
| | | //所属分公司 |
| | | TBranchOffice tBranchOffice = tBranchOfficeMapper.selectById(tDriver.getBranchOfficeId()); |
| | | if(Objects.nonNull(tBranchOffice)){ |
| | | model.addAttribute("principal",tBranchOffice.getPrincipal()); |
| | | }else { |
| | | model.addAttribute("principal",""); |
| | | } |
| | | |
| | | // 查询邀请人 |
| | | if(1 == tDriver.getInviterType()){ |
| | | TAppUser tAppUser = tAppUserMapper.selectById(tDriver.getInviterId()); |
| | | model.addAttribute("inviterName",tAppUser.getNickname()); |
| | | model.addAttribute("inviterPhone",tAppUser.getPhone()); |
| | | }else if(2 == tDriver.getInviterType()){ |
| | | TDriver tDriver1 = tDriverMapper.selectById(tDriver.getInviterId()); |
| | | model.addAttribute("inviterName",tDriver1.getName()); |
| | | model.addAttribute("inviterPhone",tDriver1.getPhone()); |
| | | }else { |
| | | model.addAttribute("inviterName",""); |
| | | model.addAttribute("inviterPhone",""); |
| | | } |
| | | |
| | | if(!CollectionUtils.isEmpty(tOrders)){ |
| | | //累计订单量 |
| | | List<TOrder> cumulativeOrderCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId()) |
| | | && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode())).collect(Collectors.toList()); |
| | | model.addAttribute("cumulativeOrderCount",cumulativeOrderCount.size()); |
| | | //当月订单量 |
| | | List<TOrder> monthOrderCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId()) |
| | | && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode()) |
| | | && new SimpleDateFormat("yyyyMM").format(order.getCreateTime()).equals(monthDate)).collect(Collectors.toList()); |
| | | model.addAttribute("monthOrderCount",monthOrderCount.size()); |
| | | // TODO 拒单次数 |
| | | List<TOrder> refusalCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId()) |
| | | && order.getState().equals(OrderStateEnum.CANCELED.getCode())).collect(Collectors.toList()); |
| | | model.addAttribute("refusalCount",refusalCount.size()); |
| | | }else { |
| | | model.addAttribute("cumulativeOrderCount",""); |
| | | model.addAttribute("monthOrderCount",""); |
| | | model.addAttribute("refusalCount",""); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void detail(Integer tDriverId, Model model) { |
| | | auditPage(tDriverId,model); |
| | | // TODO 查询司机 |
| | | TDriver tDriver = tDriverMapper.selectById(tDriverId); |
| | | } |
| | | } |