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 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 listOffDay(OffDaySearchVO vo) { LambdaQueryWrapper wrapper = wrapper(vo); List list = list(wrapper); return ShiftOffDayConvert.INSTANCE.convert(list); } @Override // org.springblade.modules.cps.service.IShiftOffDayService public IPage pageOffDay(Query query, OffDaySearchVO vo) { LambdaQueryWrapper wrapper = wrapper(vo); IPage pages = page(Condition.getPage(query), wrapper); return ShiftOffDayConvert.INSTANCE.convert(pages); } private LambdaQueryWrapper wrapper(OffDaySearchVO vo) { LocalDate startOffDay = vo.getStartOffDay(); LocalDate endOffDay = vo.getEndOffDay(); LambdaQueryWrapper 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.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])); } }