package com.ruoyi.base.service.impl; import cn.hutool.core.util.ObjectUtil; import com.ruoyi.base.domain.CarInfo; import com.ruoyi.base.mapper.CarInfoMapper; import com.ruoyi.base.service.ICarInfoService; import com.ruoyi.common.core.redis.RedisCache; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.event.EventListener; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; /** * 车辆信息Service业务层处理 * * @author ruoyi * @date 2023-09-19 */ @Service public class CarInfoServiceImpl implements ICarInfoService { @Autowired private CarInfoMapper carInfoMapper; @Autowired RedisCache redisCache; private static CopyOnWriteArrayList carList ; /** * 查询车辆信息 * * @param id 车辆信息主键 * @return 车辆信息 */ @Override public CarInfo selectCarInfoById(Long id) { return carInfoMapper.selectCarInfoById(id); } /** * 查询车辆信息列表 * * @param carInfo 车辆信息 * @return 车辆信息 */ @Override public List selectCarInfoList(CarInfo carInfo) { if (ObjectUtil.isNull(carList) ||carList.size() ==0){ carList = new CopyOnWriteArrayList<>(carInfoMapper.selectCarInfoList(carInfo)); } return carList; } /** * 查询车辆信息 * * @param carInfo 车辆信息 * @return 车辆信息 */ @Override public CarInfo selectCarInfoByModel(CarInfo carInfo) { List list = carInfoMapper.selectCarInfoList(carInfo); if (list != null && list.size() > 0) { return list.get(0); } else { return null; } } /** * 新增车辆信息 * * @param carInfo 车辆信息 * @return 结果 */ @Override public int insertCarInfo(CarInfo carInfo) { return carInfoMapper.insertCarInfo(carInfo); } /** * 修改车辆信息 * * @param carInfo 车辆信息 * @return 结果 */ @Override public int updateCarInfo(CarInfo carInfo) { return carInfoMapper.updateCarInfo(carInfo); } /** * 批量删除车辆信息 * * @param ids 需要删除的车辆信息主键 * @return 结果 */ @Override public int deleteCarInfoByIds(Long[] ids) { return carInfoMapper.deleteCarInfoByIds(ids); } /** * 删除车辆信息信息 * * @param id 车辆信息主键 * @return 结果 */ @Override public int deleteCarInfoById(Long id) { return carInfoMapper.deleteCarInfoById(id); } @EventListener @Async public void updateStatus(CarInfo carInfo){ int index = -1; if (ObjectUtil.isNull(carList)){ selectCarInfoList(new CarInfo()); } for (int i = 0; i < carList.size(); i++) { if (carList.get(i).getCarno().equals(carInfo.getCarno())){ carInfo = carList.get(i); index = i; } } if (index ==-1){ return; } if ("status".equals(carInfo.getUpdateType())){ if(!carInfo.getState().equals(carInfo.getState())){ carInfo.setState(carInfo.getState()); carList.set(carInfo.getCarno().intValue() - 1,carInfo); } }else { int a = 0; if(!carInfo.getX().equals(carInfo.getX())){ carInfo.setX(carInfo.getX()); a =1; } if(!carInfo.getY().equals(carInfo.getY())){ carInfo.setY(carInfo.getY()); a =1; } if (a==1){ carList.set(carInfo.getCarno().intValue() - 1,carInfo); } } } }