package com.qianwen.smartman.modules.cps.service.impl;
|
|
import java.time.LocalDate;
|
import java.util.List;
|
|
import org.springframework.stereotype.Service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.qianwen.core.mp.service.impl.BladeServiceImpl;
|
import com.qianwen.core.mp.support.Condition;
|
import com.qianwen.core.mp.support.Query;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.smartman.common.utils.MessageUtils;
|
import com.qianwen.smartman.modules.cps.convert.ShiftOffDayConvert;
|
import com.qianwen.smartman.modules.cps.entity.ShiftOffDay;
|
import com.qianwen.smartman.modules.cps.mapper.ShiftOffDayMapper;
|
import com.qianwen.smartman.modules.cps.service.IShiftOffDayService;
|
import com.qianwen.smartman.modules.cps.utils.ThrowFun;
|
import com.qianwen.smartman.modules.cps.vo.OffDaySearchVO;
|
import com.qianwen.smartman.modules.cps.vo.OffDayUpdateVO;
|
import com.qianwen.smartman.modules.cps.vo.ShiftOffDayAddVO;
|
import com.qianwen.smartman.modules.cps.vo.ShiftOffDayVO;
|
|
@Service
|
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/cps/service/impl/ShiftOffDayServiceImpl.class */
|
public class ShiftOffDayServiceImpl extends BladeServiceImpl<ShiftOffDayMapper, ShiftOffDay> implements IShiftOffDayService {
|
|
|
@Override // org.springblade.modules.cps.service.IShiftOffDayService
|
public ShiftOffDayVO saveOffDay(ShiftOffDayAddVO addVO) {
|
ShiftOffDay shiftOffDay = ShiftOffDayConvert.INSTANCE.convert(addVO);
|
LocalDate start = shiftOffDay.getStartOffDay();
|
LocalDate end = shiftOffDay.getEndOffDay();
|
validOffDay(start, end, shiftOffDay.getYear(), null);
|
save(shiftOffDay);
|
return ShiftOffDayConvert.INSTANCE.convert(shiftOffDay);
|
}
|
|
@Override // org.springblade.modules.cps.service.IShiftOffDayService
|
public ShiftOffDayVO updateOffDay(OffDayUpdateVO updateVO) {
|
ShiftOffDay shiftOffDay = ShiftOffDayConvert.INSTANCE.convert(updateVO);
|
LocalDate start = shiftOffDay.getStartOffDay();
|
LocalDate end = shiftOffDay.getEndOffDay();
|
validOffDay(start, end, shiftOffDay.getYear(), shiftOffDay.getId());
|
updateById(shiftOffDay);
|
return ShiftOffDayConvert.INSTANCE.convert(shiftOffDay);
|
}
|
|
@Override // org.springblade.modules.cps.service.IShiftOffDayService
|
public List<ShiftOffDayVO> listOffDay(OffDaySearchVO vo) {
|
LambdaQueryWrapper<ShiftOffDay> wrapper = wrapper(vo);
|
List<ShiftOffDay> list = list(wrapper);
|
return ShiftOffDayConvert.INSTANCE.convert(list);
|
}
|
|
@Override // org.springblade.modules.cps.service.IShiftOffDayService
|
public IPage<ShiftOffDayVO> pageOffDay(Query query, OffDaySearchVO vo) {
|
LambdaQueryWrapper<ShiftOffDay> wrapper = wrapper(vo);
|
IPage<ShiftOffDay> pages = page(Condition.getPage(query), wrapper);
|
return ShiftOffDayConvert.INSTANCE.convert(pages);
|
}
|
|
private LambdaQueryWrapper<ShiftOffDay> wrapper(OffDaySearchVO vo) {
|
LocalDate startOffDay = vo.getStartOffDay();
|
LocalDate endOffDay = vo.getEndOffDay();
|
LambdaQueryWrapper<ShiftOffDay> wrapper = Wrappers.lambdaQuery();
|
Integer year = vo.getYear();
|
wrapper.eq(Func.isNotEmpty(year), (v0) -> {
|
return v0.getYear();
|
}, year);
|
if (!Func.isNull(startOffDay) && !Func.isNull(endOffDay)) {
|
wrapper.nested(c -> c.ge(ShiftOffDay::getStartOffDay, startOffDay).le(ShiftOffDay::getEndOffDay, endOffDay));
|
/*
|
wrapper.nested(c -> {
|
LambdaQueryWrapper lambdaQueryWrapper = (LambdaQueryWrapper) ((LambdaQueryWrapper) c.ge((v0) -> {
|
return v0.getStartOffDay();
|
}, startOffDay)).le((v0) -> {
|
return v0.getEndOffDay();
|
}, endOffDay);
|
});*/
|
}
|
return wrapper;
|
}
|
|
private void validOffDay(LocalDate startDay, LocalDate endDay, Integer year, Long id) {
|
int year1 = startDay.getYear();
|
int year2 = endDay.getYear();
|
ThrowFun.isTrue((year.intValue() == year1 && year.intValue() == year2) ? false : true).throwMessage(MessageUtils.message("cps.off.day.not.year", new Object[0]));
|
ThrowFun.isTrue(startDay.isAfter(endDay)).throwMessage(MessageUtils.message("cps.off.day.sort", new Object[0]));
|
|
long count = count(Wrappers.<ShiftOffDay>lambdaQuery().eq(ShiftOffDay::getYear, year).nested(n -> {
|
LambdaQueryWrapper lambdaQueryWrapper = n.nested(c -> {
|
c.le(ShiftOffDay::getStartOffDay, startDay).ge(ShiftOffDay::getEndOffDay, startDay);
|
}).or(e -> {
|
e.le(ShiftOffDay::getStartOffDay, endDay).ge(ShiftOffDay::getEndOffDay, endDay);
|
}).or(e2 -> {
|
e2.ge(ShiftOffDay::getStartOffDay, startDay).le(ShiftOffDay::getEndOffDay, endDay);
|
});
|
}).ne(Func.isNotEmpty(id), ShiftOffDay::getId, id));
|
ThrowFun.isTrue(count > 0).throwMessage(MessageUtils.message("cps.off.day.exist", new Object[0]));
|
}
|
}
|