package com.ozs.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.ozs.common.core.domain.AjaxResult; import com.ozs.common.exception.ServiceException; import com.ozs.common.utils.StringUtils; import com.ozs.common.utils.bean.BeanUtils; import com.ozs.common.utils.bean.BeanValidators; import com.ozs.entity.BaseRailwayManagement; import com.ozs.entity.BaseVehicleTerminal; import com.ozs.entity.BaseVehicle; import com.ozs.entity.BaseTerminal; import com.ozs.entity.vo.BaseVehicleTerminalDto; import com.ozs.entity.vo.BaseVehicleTerminalVo; import com.ozs.entity.vo.BaseVehicleVo; import com.ozs.entity.vo.VehicleTreeVo; import com.ozs.mapper.BaseDeviceDynamicManagementMapper; import com.ozs.mapper.BaseVehicleTerminalMapper; import com.ozs.mapper.BaseVehicleMapper; import com.ozs.mapper.BaseTerminalMapper; import com.ozs.service.BaseVehicleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import javax.validation.Validator; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** *

* 机车信息表 服务实现类 *

* * @author ozs * @since 2023-04-11 */ @Service public class BaseVehicleServiceImpl extends ServiceImpl implements BaseVehicleService { @Autowired private BaseVehicleMapper baseVehicleMapper; @Autowired private BaseVehicleTerminalMapper baseVehicleTerminalMapper; @Autowired BaseDeviceDynamicManagementMapper baseDeviceDynamicManagementMapper; @Autowired private BaseTerminalMapper baseTerminalMapper; @Autowired protected Validator validator; @Override public IPage vehicleList(BaseVehicleVo baseVehicle) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleName())) { wrapper.like(BaseVehicle::getVehicleName, baseVehicle.getVehicleName()); } if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) { wrapper.like(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode()); } wrapper.orderByDesc(BaseVehicle::getCreateTime); int pageNum = Integer.parseInt(baseVehicle.getPageNum().toString()); int pageSize = Integer.parseInt(baseVehicle.getPageSize().toString()); com.github.pagehelper.Page page = PageHelper.startPage(pageNum, pageSize) .doSelectPage(() -> baseVehicleMapper.selectList(wrapper)); if (!StringUtils.isEmptySunhh(page) && page.getResult().size() > 0) { List dto1 = page.getResult().stream().map(o -> { BaseVehicleTerminal baseVehicleTerminal = baseVehicleTerminalMapper.selectTerminal(o.getVehicleCode()); if (!StringUtils.isEmptySunhh(baseVehicleTerminal) && !StringUtils.isEmptySunhh(baseVehicleTerminal.getVehicleCode())) { LambdaQueryWrapper wrapperBaseTerminal = new LambdaQueryWrapper<>(); if (!StringUtils.isEmptySunhh(baseVehicleTerminal) && !StringUtils.isEmptySunhh(baseVehicleTerminal.getTerminalCode())) { wrapperBaseTerminal.eq(BaseTerminal::getTerminalCode, baseVehicleTerminal.getTerminalCode()); } BaseTerminal baseTerminal1 = baseTerminalMapper.selectOne(wrapperBaseTerminal); if (!StringUtils.isEmptySunhh(baseTerminal1) && !StringUtils.isEmptySunhh(baseTerminal1.getTerminalName())) { o.setTerminalName(baseTerminal1.getTerminalName()); } } return o; }).collect(Collectors.toList()); } com.baomidou.mybatisplus.extension.plugins.pagination.Page pageR = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(pageNum, pageSize); pageR.setRecords(page.getResult()); pageR.setTotal(page.getTotal()); return pageR; } @Override public AjaxResult vehicleAdd(BaseVehicle baseVehicle, String userId) { // LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); // if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) { // wrapper.eq(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode()); // } // List baseVehicles = baseVehicleMapper.selectList(wrapper); // if (baseVehicles.size() > 0) { // return AjaxResult.error("机车号已存在!"); // } Date date = new Date(); baseVehicle.setCreateBy(userId); baseVehicle.setUpdateBy(userId); baseVehicle.setCreateTime(date); baseVehicle.setUpdateTime(date); int insert = baseVehicleMapper.insert(baseVehicle); if (insert > 0) { return AjaxResult.success(); } else { return AjaxResult.error(); } } @Override public AjaxResult vehicleUpdate(BaseVehicle baseVehicle, String userId) { // LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); // if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) { // wrapper.eq(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode()); // } // if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getId())) { // wrapper.ne(BaseVehicle::getId, baseVehicle.getId()); // } // List baseVehicles = baseVehicleMapper.selectList(wrapper); // if (baseVehicles.size() > 0) { // return AjaxResult.error("机车号已存在!"); // } baseVehicle.setUpdateBy(userId); baseVehicle.setUpdateTime(new Date()); int update = baseVehicleMapper.updateById(baseVehicle); if (update > 0) { return AjaxResult.success(); } else { return AjaxResult.error(); } } @Override public String importBaseVehicle(List accountManageList, boolean updateSupport, String userId) { int successNum = 0; int failureNum = 0; StringBuilder successMsg = new StringBuilder(); StringBuilder failureMsg = new StringBuilder(); for (BaseVehicle baseVehicle2 : accountManageList) { try { BaseVehicle baseVehicle = new BaseVehicle(); BeanUtils.copyProperties(baseVehicle2, baseVehicle); // 判断机车号是否存在 // LambdaQueryWrapper lw = new LambdaQueryWrapper(); // if (!StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) { // lw.eq(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode()); // } // BaseVehicle baseVehicle1 = baseVehicleMapper.selectOne(lw); // if (ObjectUtils.isEmpty(baseVehicle1)) { BeanValidators.validateWithException(validator, baseVehicle); baseVehicle.setUpdateBy(userId); baseVehicle.setCreateBy(userId); Date date = new Date(); baseVehicle.setCreateTime(date); baseVehicle.setUpdateTime(date); int insert = baseVehicleMapper.insert(baseVehicle); successNum++; successMsg.append(successNum + "、机车号 " + baseVehicle.getVehicleCode() + " 导入成功"); // } else if (updateSupport) { // BeanValidators.validateWithException(validator, baseVehicle); // LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); // if (!StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) { // lambdaQueryWrapper.eq(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode()); // } // BaseVehicle baseVehicle4 = baseVehicleMapper.selectOne(lambdaQueryWrapper); // if (StringUtils.isEmptySunhh(baseVehicle4)) { // baseVehicle.setUpdateBy(userId); // baseVehicle.setUpdateTime(new Date()); // baseVehicle.setId(baseVehicle4.getId()); // baseVehicleMapper.updateById(baseVehicle); // successNum++; // successMsg.append(successNum + "、机车号 " + baseVehicle.getVehicleCode() + " 更新成功"); // } else { // failureNum++; // failureMsg.append(failureNum + "、机车号 " + baseVehicle.getVehicleCode() + "已存在"); // } } catch (Exception e) { String msg = null; failureNum++; if (ObjectUtils.isEmpty(baseVehicle2)) { msg = "导入的文档格式不正确"; } else { msg = failureNum + "、机车号 " + baseVehicle2.getVehicleCode() + " 导入失败:"; } failureMsg.append(msg); log.error(msg, e); } } if (failureNum > 0) { failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); throw new ServiceException(failureMsg.toString()); } else { successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条。"); } return successMsg.toString(); } @Override public AjaxResult vehicleDetails(BaseVehicle baseVehicle) { BaseVehicle baseVehicle1 = baseVehicleMapper.selectById(baseVehicle.getId()); return AjaxResult.success(baseVehicle1); } @Override public List exportBaseVehicle(BaseVehicle baseVehicle) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleName())) { wrapper.eq(BaseVehicle::getVehicleName, baseVehicle.getVehicleName()); } if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) { wrapper.eq(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode()); } if (baseVehicle.getIds().size() > 0) { wrapper.in(BaseVehicle::getId, baseVehicle.getIds()); } List baseVehicles = baseVehicleMapper.selectList(wrapper); for (BaseVehicle baseVehicle1 : baseVehicles) { BaseVehicleTerminal baseTerminal = baseVehicleTerminalMapper.selectTerminal(baseVehicle1.getVehicleCode()); if (!StringUtils.isEmptySunhh(baseTerminal) && !StringUtils.isEmptySunhh(baseTerminal.getVehicleCode())) { LambdaQueryWrapper wrapperBaseVehicleTerminal = new LambdaQueryWrapper<>(); if (!StringUtils.isEmptySunhh(baseTerminal) && !StringUtils.isEmptySunhh(baseTerminal.getTerminalCode())) { wrapperBaseVehicleTerminal.eq(BaseTerminal::getTerminalCode, baseTerminal.getTerminalCode()); } BaseTerminal baseVehicleTerminal = baseTerminalMapper.selectOne(wrapperBaseVehicleTerminal); if (!StringUtils.isEmptySunhh(baseVehicleTerminal) && !StringUtils.isEmptySunhh(baseVehicleTerminal.getTerminalName())) { baseVehicle1.setTerminalName(baseVehicleTerminal.getTerminalName()); } else { baseVehicle1.setTerminalName(""); } } } return baseVehicles; } @Override public IPage vehicleTerminal(BaseVehicleVo baseVehicleVo) { BaseVehicleTerminal baseTerminal = baseVehicleTerminalMapper.selectTerminal(baseVehicleVo.getVehicleCode()); List terminalCodeList = baseVehicleTerminalMapper.selectMountCode(baseVehicleVo.getVehicleCode()); // List collect = terminalCodeList.stream().map(BaseTerminal::getTerminalCode).collect(Collectors.toList()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (!StringUtils.isEmptySunhh(terminalCodeList) && terminalCodeList.size() > 0) { wrapper.notIn(BaseTerminal::getTerminalCode, terminalCodeList); } wrapper.eq(BaseTerminal::getStatus, 1); // List baseVehicleTerminalList = baseVehicleTerminalMapper.selectList(wrapper); int pageNum = Integer.parseInt(baseVehicleVo.getPageNum().toString()); int pageSize = Integer.parseInt(baseVehicleVo.getPageSize().toString()); com.github.pagehelper.Page page = PageHelper .startPage(pageNum, pageSize).doSelectPage(() -> baseTerminalMapper.selectList(wrapper)); com.baomidou.mybatisplus.extension.plugins.pagination.Page pageR = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(pageNum, pageSize); if (!ObjectUtils.isEmpty(page) && page.getResult().size() > 0) { List dto1 = page.getResult().stream().map(o -> { BaseVehicleTerminalVo baseVehicleTerminalVo = new BaseVehicleTerminalVo(); BeanUtils.copyProperties(o, baseVehicleTerminalVo); if (!StringUtils.isEmptySunhh(baseTerminal)) { if (baseTerminal.getTerminalCode().equals(o.getTerminalCode())) { baseVehicleTerminalVo.setIsMount("2"); } else { baseVehicleTerminalVo.setIsMount("1"); } } else { baseVehicleTerminalVo.setIsMount("1"); } return baseVehicleTerminalVo; }).collect(Collectors.toList()); pageR.setRecords(dto1); } return pageR; } @Override public AjaxResult vehicleTerminalAdd(BaseVehicleTerminal baseTerminal1, String userId) { LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); if (!StringUtils.isEmptySunhh(baseTerminal1) && !StringUtils.isEmptySunhh(baseTerminal1.getVehicleCode())) { wrapper1.ne(BaseVehicleTerminal::getVehicleCode, baseTerminal1.getVehicleCode()); } if (!StringUtils.isEmptySunhh(baseTerminal1) && !StringUtils.isEmptySunhh(baseTerminal1.getTerminalCode())) { wrapper1.eq(BaseVehicleTerminal::getTerminalCode, baseTerminal1.getTerminalCode()); } List baseTerminals = baseVehicleTerminalMapper.selectList(wrapper1); if (!StringUtils.isEmptySunhh(baseTerminals) && baseTerminals.size() > 0) { return AjaxResult.error("此终端已经挂载其他机车!"); } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (!StringUtils.isEmptySunhh(baseTerminal1) && !StringUtils.isEmptySunhh(baseTerminal1.getVehicleCode())) { wrapper.eq(BaseVehicleTerminal::getVehicleCode, baseTerminal1.getVehicleCode()); } BaseVehicleTerminal baseTerminal = baseVehicleTerminalMapper.selectOne(wrapper); if (StringUtils.isEmptySunhh(baseTerminal)) { BaseVehicleTerminal baseTerminal2 = new BaseVehicleTerminal(); baseTerminal2.setVehicleCode(baseTerminal1.getVehicleCode()); baseTerminal2.setTerminalCode(baseTerminal1.getTerminalCode()); baseTerminal2.setCreateBy(userId); baseTerminal2.setUpdateBy(userId); Date date = new Date(); baseTerminal2.setCreateTime(date); baseTerminal2.setUpdateTime(date); int insert = baseVehicleTerminalMapper.insert(baseTerminal2); } else { baseTerminal.setUpdateBy(userId); baseTerminal.setUpdateTime(new Date()); baseTerminal.setVehicleCode(baseTerminal1.getVehicleCode()); baseTerminal.setTerminalCode(baseTerminal1.getTerminalCode()); int updateById = baseVehicleTerminalMapper.updateById(baseTerminal); } return AjaxResult.success(); } @Override public Boolean isMount(BaseVehicleVo baseVehicleVo) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (!StringUtils.isEmptySunhh(baseVehicleVo) && !StringUtils.isEmptySunhh(baseVehicleVo.getVehicleCode())) { wrapper.eq(BaseVehicleTerminal::getVehicleCode, baseVehicleVo.getVehicleCode()); } BaseVehicleTerminal baseTerminal = baseVehicleTerminalMapper.selectOne(wrapper); if (StringUtils.isEmptySunhh(baseTerminal)) { return true; } return false; } @Override public List vehicleList() { List dtoList = baseDeviceDynamicManagementMapper.vehicleTreelist(null); List strings = dtoList.stream().map(BaseVehicleTerminalDto::getVehicleCode).collect(Collectors.toList()); LambdaQueryWrapper bw = new LambdaQueryWrapper<>(); bw.in(BaseVehicle::getVehicleCode, strings); List vehicles = baseVehicleMapper.selectList(bw); for (BaseVehicleTerminalDto terminalDto : dtoList) { for (BaseVehicle vehicle : vehicles) { if (terminalDto.getVehicleCode().equals(vehicle.getVehicleCode())) { terminalDto.setVehicleName(vehicle.getVehicleName()); break; } } } return dtoList; } @Override public List vehicleListDT(BaseVehicleVo baseVehicle) { //查到所有机车数据 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) { wrapper.like(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode()); } List baseVehicles = baseVehicleMapper.selectList(wrapper); //查到机车关联的终端 if (!StringUtils.isEmptySunhh(baseVehicles)) { List terminalCodeList = new ArrayList<>(); baseVehicles = baseVehicles.stream().map(o -> { //查到已保存的关联信息 BaseVehicleTerminal baseVehicleTerminal = baseVehicleTerminalMapper.selectTerminal(o.getVehicleCode()); if (!StringUtils.isEmptySunhh(baseVehicleTerminal) && !StringUtils.isEmptySunhh(baseVehicleTerminal.getVehicleCode())) { terminalCodeList.add(baseVehicleTerminal.getVehicleCode()); LambdaQueryWrapper wrapperBaseVehicleTerminal = new LambdaQueryWrapper<>(); if (!StringUtils.isEmptySunhh(baseVehicleTerminal) && !StringUtils.isEmptySunhh(baseVehicleTerminal.getTerminalCode())) { wrapperBaseVehicleTerminal.eq(BaseTerminal::getTerminalCode, baseVehicleTerminal.getTerminalCode()); } //根据编码获取终端名称 BaseTerminal baseTerminal = baseTerminalMapper.selectOne(wrapperBaseVehicleTerminal); if (!StringUtils.isEmptySunhh(baseTerminal) && !StringUtils.isEmptySunhh(baseTerminal.getTerminalName())) { o.setTerminalName(baseTerminal.getTerminalName()); } } return o; }).collect(Collectors.toList()); VehicleTreeVo vehicleTreeVo = new VehicleTreeVo(); vehicleTreeVo.setTerminalCodeList(terminalCodeList); //机车和终端在行驶记录中最后的位置信息 List list = baseDeviceDynamicManagementMapper.vehicleTreelist(vehicleTreeVo); for (BaseVehicle vehicle : baseVehicles) { for (BaseVehicleTerminalDto terminalDto : list) { if (terminalDto.getVehicleCode().equals(vehicle.getVehicleCode())) { vehicle.setVehicleTerminalDto(terminalDto); break; } } } } return baseVehicles; } @Override public AjaxResult vehicleTerminalUnmount(BaseVehicleTerminal baseTerminal) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (!StringUtils.isEmptySunhh(baseTerminal) && !StringUtils.isEmptySunhh(baseTerminal.getVehicleCode())) { wrapper.eq(BaseVehicleTerminal::getVehicleCode, baseTerminal.getVehicleCode()); } baseVehicleTerminalMapper.delete(wrapper); return AjaxResult.success(); } @Override @Transactional public AjaxResult removeByIdList(List ids) { for (Long vehicleId : ids) { BaseVehicle baseVehicle = baseVehicleMapper.selectById(vehicleId); if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(BaseVehicleTerminal::getVehicleCode, baseVehicle.getVehicleCode()); int delete = baseVehicleTerminalMapper.delete(wrapper); int i = baseVehicleMapper.deleteById(vehicleId); } } return AjaxResult.success(true); } }