package com.ruoyi.sim.service.impl; import java.util.*; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.sim.domain.Sim; import com.ruoyi.sim.domain.vo.SeatVo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.sim.mapper.SeatMapper; import com.ruoyi.sim.domain.Seat; /** * 座Service业务层处理 * * @author tom * @date 2024-12-13 */ @Service public class SeatService { @Autowired private SeatMapper seatMapper; /** * 查询座 * * @param seatId 座主键 * @return 座 */ public Seat selectSeatBySeatId(Long seatId) { return seatMapper.selectSeatBySeatId(seatId); } /** * 查询座列表 * * @param seat 座 * @return 座 */ public List selectSeatList(Seat seat) { return seatMapper.selectSeatList(seat); } /** * 新增座 * * @param seat 座 * @return 结果 */ public int insertSeat(Seat seat) { seat.setCreateTime(DateUtils.getNowDate()); return seatMapper.insertSeat(seat); } /** * 修改座 * * @param seat 座 * @return 结果 */ public int updateSeat(Seat seat) { seat.setUpdateTime(DateUtils.getNowDate()); return seatMapper.updateSeat(seat); } /** * 批量删除座 * * @param seatIds 需要删除的座主键 * @return 结果 */ public int deleteSeatBySeatIds(Long[] seatIds) { return seatMapper.deleteSeatBySeatIds(seatIds); } /** * 删除座信息 * * @param seatId 座主键 * @return 结果 */ public int deleteSeatBySeatId(Long seatId) { return seatMapper.deleteSeatBySeatId(seatId); } // -------------------------------- tom add -------------------------------- @Autowired private SimService simService; public boolean exist(Long seatId) { if (seatId == null) { return false; } if (seatId == 0) { return false; } Seat s = selectSeatBySeatId(seatId); if (s == null) { return false; } return true; } public List listAllEnable() { List list = new ArrayList<>(); seatMapper.selectSeatList(new Seat()).stream().filter(Objects::nonNull).filter(s -> !StringUtils.equals(Seat.SocketState.DISABLE, s.getSeatRs485SocketState())).forEach(list::add); return list; } /** * 获取所有没有被禁用的 座 列表 * * @return */ public AjaxResult listAllEnableAj() { List list1 = listAllEnable(); List list2 = new ArrayList<>(); for (Seat seat : list1) { SeatVo vo = new SeatVo(); BeanUtils.copyProperties(seat, vo); Sim sim = simService.selectSimBySimId(seat.getCurrentSimId()); if (seat != null && seat.getCurrentSimId() != null && seat.getCurrentSimId() != 0L) { BeanUtils.copyProperties(sim, vo); } list2.add(vo); } return AjaxResult.success(list2); } public Seat uniqueBySeatNum(final Integer seatNum) { Seat q = new Seat(); q.setSeatNum(seatNum); List list = seatMapper.selectSeatList(q); if (list.isEmpty()) { return null; } else if (list.size() == 1) { return list.get(0); } else { throw new IllegalArgumentException("Seat数据错误。"); } } public Seat uniqueByBindIp(final String bindIp) { Seat q = new Seat(); q.setSeatBindIp(bindIp); List list = seatMapper.selectSeatList(q); if (list.isEmpty()) { return null; } else if (list.size() == 1) { return list.get(0); } else { throw new IllegalArgumentException("Seat数据错误。"); } } public Seat uniqueByRs485IpAndPort(final String rs485Ip, final int rs485Port) { Seat q = new Seat(); q.setSeatRs485Ip(rs485Ip); q.setSeatRs485Port(rs485Port); List list = seatMapper.selectSeatList(q); if (list.isEmpty()) { return null; } else if (list.size() == 1) { return list.get(0); } else { throw new IllegalArgumentException("Seat数据错误。"); } } public void updateSimIdBySeatNum(final Integer seatNum, final Long simId) { Seat f = uniqueBySeatNum(seatNum); f.setCurrentSimId(simId); updateSeat(f); } public int updateAllEnableState(final String socketState) { List list = listAllEnable(); for (Seat seat : list) { seat.setSeatRs485SocketState(socketState); seatMapper.updateSeat(seat); } return list.size(); } public List listAllRs485Ip() { List list = listAllEnable(); Set ips = new HashSet<>(); list.forEach(seat -> ips.add(seat.getSeatRs485Ip())); return ips.stream().toList(); } public void updateSocketStateBySeatNum(final Integer seatNum, final String socketState) { Seat f = uniqueBySeatNum(seatNum); f.setSeatRs485SocketState(socketState); updateSeat(f); } public void updateSocketStateByRs485Ip(final String rs485Ip, final String socketState) { Seat q = new Seat(); q.setSeatRs485Ip(rs485Ip); selectSeatList(q).forEach(seat -> { seat.setSeatRs485SocketState(socketState); seatMapper.updateSeat(seat); }); } }