yangys
2024-03-28 d0c4758b378e46b35429e2a2ca7d6d3ecf284143
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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]));
    }
}