package com.xiaopeng.maintenance.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.model.account.XpOperationsUser; import com.xiaopeng.api.model.maintenance.XpShift; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.mapper.XpShiftMapper; import com.xiaopeng.maintenance.model.query.XpShiftQuery; import com.xiaopeng.maintenance.model.vo.OperationRecordsVO; import com.xiaopeng.maintenance.service.IXpShiftService; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; /** *

* 班次管理 服务实现类 *

* * @author mitao * @since 2026-02-03 */ @Service public class XpShiftServiceImpl extends ServiceImpl implements IXpShiftService { @Override public PageInfo pageList(XpShiftQuery query) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.pageList(query, pageInfo); pageInfo.setRecords(list); return pageInfo; } /** * 查询班次列表 * * @return */ @Override public List queryList() { return this.list(new LambdaQueryWrapper().eq(XpShift::getDeleted, 0)); } @Override public R add(XpShift dto) { // 判断结束时间是否大于开始时间 格式为 HH:mm if (dto.getEndTime().compareTo(dto.getStartTime()) < 0) { return R.fail("结束时间不能小于开始时间"); } // 判断休息结束时间是否大于休息开始时间 格式为 HH:mm if (dto.getRestEndTime() != null && dto.getRestStartTime() != null && dto.getRestEndTime().compareTo(dto.getRestStartTime()) < 0) { return R.fail("休息结束时间不能小于休息开始时间"); } if (this.count(new LambdaQueryWrapper().eq(XpShift::getShiftName, dto.getShiftName())) > 0) { return R.fail("班次名称已存在"); } this.save(dto); return R.ok(); } @Override public R edit(XpShift dto) { // 判断结束时间是否大于开始时间 格式为 HH:mm if (dto.getEndTime().compareTo(dto.getStartTime()) < 0) { return R.fail("结束时间不能小于开始时间"); } // 判断休息结束时间是否大于休息开始时间 格式为 HH:mm if (dto.getRestEndTime() != null && dto.getRestStartTime() != null && dto.getRestEndTime().compareTo(dto.getRestStartTime()) < 0) { return R.fail("休息结束时间不能小于休息开始时间"); } if (this.count(new LambdaQueryWrapper().eq(XpShift::getShiftName, dto.getShiftName()).ne(XpShift::getId, dto.getId())) > 0) { return R.fail("班次名称已存在"); } this.updateById(dto); return R.ok(); } }