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();
}
}