package com.zy.acs.manager.manager.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zy.acs.framework.common.BaseRes; import com.zy.acs.manager.common.domain.TaskDto; import com.zy.acs.manager.manager.controller.param.OpenBusSubmitParam; import com.zy.acs.manager.manager.entity.Bus; import com.zy.acs.manager.manager.enums.BusStsType; import com.zy.acs.manager.manager.mapper.BusMapper; import com.zy.acs.manager.manager.service.BusService; import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.manager.service.TaskService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @Slf4j @Service("busService") public class BusServiceImpl extends ServiceImpl implements BusService { @Autowired private TaskService taskService; @Override public Bus selectByUuid(String uuid) { return this.getOne(new LambdaQueryWrapper().eq(Bus::getUuid, uuid)); } @Override public String checkoutValid(OpenBusSubmitParam param) { if (null == param) { return BaseRes.PARAM; } if (Cools.isEmpty(param.getBatch())) { return "Batch cannot be empty!"; } Set oriStaNoSet = new HashSet<>(); Set oriLocNoSet = new HashSet<>(); Set destStaNoSet = new HashSet<>(); Set destLocNoSet = new HashSet<>(); for (TaskDto dto : param.getTaskList()) { if (!Cools.isEmpty(dto.getOriSta()) && !Cools.isEmpty(dto.getOriLoc())) { return "OriSta and OriLoc cannot exist at the same time!"; } if (Cools.isEmpty(dto.getOriSta()) && Cools.isEmpty(dto.getOriLoc())) { return "OriSta and OriLoc must have one!"; } if (!Cools.isEmpty(dto.getOriSta())) { if (Cools.isEmpty(dto.getDestSta()) && Cools.isEmpty(dto.getDestLoc())) { return "Destination cannot be empty!"; } } if (!Cools.isEmpty(dto.getOriLoc())) { if (Cools.isEmpty(dto.getDestSta()) && Cools.isEmpty(dto.getDestLoc())) { return "Destination cannot be empty!"; } if (oriLocNoSet.contains(dto.getOriLoc())) { return "OriLoc cannot be repeated"; } else { oriLocNoSet.add(dto.getOriLoc()); } } if (!Cools.isEmpty(dto.getDestSta()) && !Cools.isEmpty(dto.getDestLoc())) { return "DestSta and DestLoc cannot exist at the same time!"; } if (Cools.isEmpty(dto.getDestSta()) && Cools.isEmpty(dto.getDestLoc())) { return "DestSta and DestLoc must have one!"; } if (!Cools.isEmpty(dto.getDestSta())) { if (Cools.isEmpty(dto.getOriSta()) && Cools.isEmpty(dto.getOriLoc())) { return "Origin cannot be empty!"; } } if (!Cools.isEmpty(dto.getDestLoc())) { if (Cools.isEmpty(dto.getOriSta()) && Cools.isEmpty(dto.getOriLoc())) { return "Origin cannot be empty!"; } if (destLocNoSet.contains(dto.getDestLoc())) { return "DestLoc cannot be repeated"; } else { destLocNoSet.add(dto.getDestLoc()); } } if (Cools.isEmpty(dto.getSeqNum())) { dto.setSeqNum(taskService.generateSeqNum()); } } return null; } @Override public List selectBySts(BusStsType busStsType) { return this.selectBySts(busStsType, null); } @Override public List selectInSts(BusStsType... busStsTypes) { List params = new ArrayList<>(); for (BusStsType busStsType : busStsTypes) { params.add(busStsType.val()); } return this.list(new LambdaQueryWrapper().in(Bus::getBusSts, params)); } @Override public List selectBySts(BusStsType busStsType, String memo) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Bus::getBusSts, busStsType.val()); if (!Cools.isEmpty(memo)) { wrapper.eq(Bus::getMemo, memo); } return this.list(wrapper); } }