RuleNumServiceImpl.java
5.18 KB
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
package com.ruoyi.num.service.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.pojo.dto.RuleNumDto;
import com.ruoyi.pojo.vo.RuleNumTemplateVo;
import com.ruoyi.pojo.vo.RuleNumVo;
import com.ruoyi.pojo.vo.SchedulingResponseVo;
import com.ruoyi.service.RuleNumSettingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.num.mapper.RuleNumMapper;
import com.ruoyi.num.domain.RuleNum;
import com.ruoyi.num.service.IRuleNumService;
import static com.ruoyi.common.RuleSchedulingProperties.*;
/**
* 班次管理Service业务层处理
*
* @author guzijian
* @date 2023-08-03
*/
@Service
public class RuleNumServiceImpl implements IRuleNumService
{
@Autowired
private RuleNumMapper ruleNumMapper;
@Autowired
private RuleNumSettingService ruleNumSettingService;
/**
* 查询班次管理
*
* @param id 班次管理主键
* @return 班次管理
*/
@Override
public RuleNum selectRuleNumById(Long id)
{
return ruleNumMapper.selectRuleNumById(id);
}
/**
* 查询班次管理列表
*
* @param ruleNum 班次管理
* @return 班次管理
*/
@Override
public List<RuleNum> selectRuleNumList(RuleNum ruleNum)
{
return ruleNumMapper.selectRuleNumList(ruleNum);
}
/**
* 新增班次管理
*
* @param ruleNum 班次管理
* @return 结果
*/
@Override
public int insertRuleNum(RuleNum ruleNum)
{
String username = SecurityUtils.getUsername();
ruleNum.setCreateBy(username);
ruleNum.setUpdateBy(username);
ruleNum.setCreateTime(DateUtils.getNowDate());
ruleNum.setUpdateTime(DateUtils.getNowDate());
return ruleNumMapper.insertRuleNum(ruleNum);
}
/**
* 修改班次管理
*
* @param ruleNum 班次管理
* @return 结果
*/
@Override
public int updateRuleNum(RuleNum ruleNum)
{
ruleNum.setUpdateTime(DateUtils.getNowDate());
ruleNum.setUpdateBy(ruleNum.getUpdateBy());
return ruleNumMapper.updateRuleNum(ruleNum);
}
/**
* 批量删除班次管理
*
* @param ids 需要删除的班次管理主键
* @return 结果
*/
@Override
public int deleteRuleNumByIds(Long[] ids)
{
// TODO 检查改班次是被使用 使用后提示
List<SchedulingResponseVo> list = ruleNumSettingService.getSchedulingListById(ids);
if (CollectionUtil.isEmpty(list)){
return ruleNumMapper.deleteRuleNumByIds(ids);
}
throw new RuntimeException("班次正在被使用,请在排班设置中解绑该班次!");
}
/**
* 删除班次管理信息
*
* @param id 班次管理主键
* @return 结果
*/
@Override
public int deleteRuleNumById(Long id)
{
return ruleNumMapper.deleteRuleNumById(id);
}
@Override
public RuleNumVo getRuleNumBySettingId(Integer settingId) {
RuleNum ruleNum = ruleNumMapper.listNumBySettingId(settingId);
RuleNumVo vo = new RuleNumVo();
BeanUtil.copyProperties(ruleNum,vo);
// 当为固定规则时
if (RULE_TYPE_FIXED.equals(ruleNum.getRuleType())) {
vo.setTemplateVos(handleFixedTemplate(ruleNum));
}
// 处理按星期
else {
vo.setTemplateVos(handleWeekTemplate(ruleNum));
}
// 模板
return vo;
}
@Override
public List<RuleNumDto> selectRuleNumBySettingId(List<Integer> settingList) {
return ruleNumMapper.selectRuleNumBySettingId(settingList);
}
private List<RuleNumTemplateVo> handleWeekTemplate(RuleNum ruleNum) {
String[] strings = ruleNum.getRuleWeek().split(",");
Map<Integer, Integer> weeks = Stream.of(strings).collect(Collectors.toMap(s -> Integer.parseInt(s), s -> Integer.parseInt(s)));
List<RuleNumTemplateVo> vos = new ArrayList<>(7);
for (int i = 1; i <= 7; i++) {
Integer integer = weeks.get(i);
if (Objects.isNull(integer)) {
vos.add(getRuleNumTemplateVo(i, false));
} else {
vos.add(getRuleNumTemplateVo(integer, true));
}
}
return vos;
}
private RuleNumTemplateVo getRuleNumTemplateVo(Integer serialNumber, Boolean workFlag) {
RuleNumTemplateVo vo = new RuleNumTemplateVo();
vo.setSerialNumber(serialNumber);
vo.setType(workFlag ? WORK_FLAG : FREE_FLAG);
return vo;
}
private List<RuleNumTemplateVo> handleFixedTemplate(RuleNum ruleNum) {
int countDay = ruleNum.getWorkDay() + ruleNum.getFreeDay();
List<RuleNumTemplateVo> vos = new ArrayList<>(countDay);
for (int i = 1; i <= countDay; i++) {
vos.add(getRuleNumTemplateVo(i, i <= ruleNum.getWorkDay()));
}
return vos;
}
}