Commit d34506017851de56367e02fae73691fb26bcf4ff

Authored by guzijian
1 parent 5e0a6bbc

feat: 班次修改和规则修改设置。

Bsth-admin/src/main/java/com/ruoyi/common/WeekEnum.java
... ... @@ -13,6 +13,9 @@ public enum WeekEnum {
13 13 FRIDAY(5,"FRIDAY","星期五"),
14 14 SATURDAY(6,"SATURDAY","星期六"),
15 15 SUNDAY(7,"SUNDAY","星期天"),
  16 + /**
  17 + * 休息的id在表中必须为0
  18 + */
16 19 FREE(0,"休息","休息");
17 20  
18 21 private String description;
... ...
Bsth-admin/src/main/java/com/ruoyi/num/service/impl/RuleNumServiceImpl.java
... ... @@ -8,18 +8,25 @@ import java.util.stream.Collectors;
8 8 import java.util.stream.Stream;
9 9 import cn.hutool.core.bean.BeanUtil;
10 10 import cn.hutool.core.collection.CollectionUtil;
  11 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  12 +import com.ruoyi.common.exception.ServiceException;
11 13 import com.ruoyi.common.utils.DateUtils;
12 14 import com.ruoyi.common.utils.SecurityUtils;
  15 +import com.ruoyi.domain.RuleNumSetting;
13 16 import com.ruoyi.pojo.dto.RuleNumDto;
14 17 import com.ruoyi.pojo.vo.RuleNumTemplateVo;
15 18 import com.ruoyi.pojo.vo.RuleNumVo;
16 19 import com.ruoyi.pojo.vo.SchedulingResponseVo;
17 20 import com.ruoyi.service.RuleNumSettingService;
  21 +import com.ruoyi.utils.ToolUtils;
18 22 import org.springframework.beans.factory.annotation.Autowired;
19 23 import org.springframework.stereotype.Service;
20 24 import com.ruoyi.num.mapper.RuleNumMapper;
21 25 import com.ruoyi.num.domain.RuleNum;
22 26 import com.ruoyi.num.service.IRuleNumService;
  27 +import org.springframework.validation.BindException;
  28 +import org.springframework.web.bind.MethodArgumentNotValidException;
  29 +
23 30 import static com.ruoyi.common.RuleSchedulingProperties.*;
24 31  
25 32 /**
... ... @@ -75,6 +82,7 @@ public class RuleNumServiceImpl implements IRuleNumService
75 82 ruleNum.setUpdateBy(username);
76 83 ruleNum.setCreateTime(DateUtils.getNowDate());
77 84 ruleNum.setUpdateTime(DateUtils.getNowDate());
  85 + ToolUtils.handlerRuleNum(ruleNum);
78 86 return ruleNumMapper.insertRuleNum(ruleNum);
79 87 }
80 88  
... ... @@ -87,6 +95,14 @@ public class RuleNumServiceImpl implements IRuleNumService
87 95 @Override
88 96 public int updateRuleNum(RuleNum ruleNum)
89 97 {
  98 + // TODO 判断是否已绑定到排班设置中
  99 + LambdaQueryWrapper<RuleNumSetting> qw = new LambdaQueryWrapper<>();
  100 + qw.eq(RuleNumSetting::getRuleNumId,ruleNum.getId());
  101 + List<RuleNumSetting> settingList = ruleNumSettingService.list(qw);
  102 + if (CollectionUtil.isNotEmpty(settingList)) {
  103 + throw new ServiceException("该班次已被绑定,无法修改,请解除绑定后再试!");
  104 + }
  105 + ToolUtils.handlerRuleNum(ruleNum);
90 106 ruleNum.setUpdateTime(DateUtils.getNowDate());
91 107 ruleNum.setUpdateBy(ruleNum.getUpdateBy());
92 108 return ruleNumMapper.updateRuleNum(ruleNum);
... ...
Bsth-admin/src/main/java/com/ruoyi/scheduling/service/impl/RuleSchedulingServiceImpl.java
... ... @@ -9,6 +9,7 @@ import java.util.stream.Collectors;
9 9  
10 10 import cn.hutool.core.collection.CollectionUtil;
11 11 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  12 +import com.ruoyi.common.exception.ServiceException;
12 13 import com.ruoyi.common.utils.DateUtils;
13 14 import com.ruoyi.common.utils.SecurityUtils;
14 15 import com.ruoyi.domain.RuleNumSetting;
... ... @@ -19,6 +20,7 @@ import com.ruoyi.pojo.vo.RuleSchedulingResponseVo;
19 20 import com.ruoyi.pojo.vo.RuleSchedulingVo;
20 21 import com.ruoyi.service.RuleNumSettingService;
21 22 import com.ruoyi.service.RuleSettingSchedulingService;
  23 +import com.ruoyi.utils.ToolUtils;
22 24 import org.springframework.beans.BeanUtils;
23 25 import org.springframework.beans.factory.annotation.Autowired;
24 26 import org.springframework.stereotype.Service;
... ... @@ -83,6 +85,7 @@ public class RuleSchedulingServiceImpl implements IRuleSchedulingService {
83 85 Date date = DateUtils.getNowDate();
84 86 ruleScheduling.setCreateTime(date);
85 87 ruleScheduling.setUpdateTime(date);
  88 + ToolUtils.handleRuleScheduling(ruleScheduling);
86 89 return ruleSchedulingMapper.insertRuleScheduling(ruleScheduling);
87 90 }
88 91  
... ... @@ -106,8 +109,19 @@ public class RuleSchedulingServiceImpl implements IRuleSchedulingService {
106 109 @Override
107 110 public int updateRuleScheduling(RuleScheduling ruleScheduling) {
108 111 handleNewAddScheduling(ruleScheduling);
  112 + // TODO 规则是否绑定
  113 + LambdaQueryWrapper<RuleSettingScheduling> qw = new LambdaQueryWrapper<>();
  114 + qw.eq(RuleSettingScheduling::getRuleSchedulingId,ruleScheduling.getId());
  115 + List<RuleSettingScheduling> list = ruleSettingSchedulingService.list(qw);
  116 + if (CollectionUtil.isNotEmpty(list)) {
  117 + String ruleDictName = ruleNumSettingService.listByIds(list.stream()
  118 + .map(RuleSettingScheduling::getSettingId).collect(Collectors.toList()))
  119 + .stream().map(RuleNumSetting::getRuleDictName).distinct().collect(Collectors.joining(","));
  120 + throw new ServiceException("该规则已经与" + ruleDictName + "等班次绑定,请解绑对应班次后修改!");
  121 + }
109 122 ruleScheduling.setUpdateTime(DateUtils.getNowDate());
110 123 ruleScheduling.setUpdateBy(SecurityUtils.getUsername());
  124 + ToolUtils.handleRuleScheduling(ruleScheduling);
111 125 return ruleSchedulingMapper.updateRuleScheduling(ruleScheduling);
112 126 }
113 127  
... ...
Bsth-admin/src/main/java/com/ruoyi/utils/ToolUtils.java
... ... @@ -3,6 +3,7 @@ package com.ruoyi.utils;
3 3 import com.ruoyi.common.utils.uuid.UUID;
4 4 import com.ruoyi.domain.DriverScheduling;
5 5 import com.ruoyi.domain.RuleAttendanceMain;
  6 +import com.ruoyi.num.domain.RuleNum;
6 7 import com.ruoyi.pojo.dto.RuleSchedulingDto;
7 8 import com.ruoyi.scheduling.domain.RuleScheduling;
8 9 import org.springframework.beans.BeanUtils;
... ... @@ -13,7 +14,7 @@ import java.util.Objects;
13 14 import static com.ruoyi.common.ConstDriverProperties.BC_TYPE_IN;
14 15 import static com.ruoyi.common.ConstDriverProperties.BC_TYPE_OUT;
15 16 import static com.ruoyi.common.ConstSignInConstSignInProperties.SIGN_TIME_OUT_EX_NUM;
16   -import static com.ruoyi.common.RuleSchedulingProperties.TOMORROW_NO;
  17 +import static com.ruoyi.common.RuleSchedulingProperties.*;
17 18 import static com.ruoyi.common.SignStatusEnum.SIGN_STATUS_DELAY_ENUM;
18 19 import static com.ruoyi.common.SignStatusEnum.SIGN_STATUS_ZONE_ENUM;
19 20  
... ... @@ -41,6 +42,7 @@ public class ToolUtils {
41 42  
42 43 /**
43 44 * 更新报表记录
  45 + *
44 46 * @param scheduling
45 47 */
46 48 public static void updateReport(DriverScheduling scheduling) {
... ... @@ -65,12 +67,32 @@ public class ToolUtils {
65 67 // 计划签退时间
66 68 Long zdsjT = scheduling.getZdsjT();
67 69 // 一小时内约束
68   - if ( date.getTime() - zdsjT > 60 * 60 * 1000 ) {
  70 + if (date.getTime() - zdsjT > 60 * 60 * 1000) {
69 71 scheduling.setExType(SIGN_TIME_OUT_EX_NUM);
70 72 scheduling.setRemark(SIGN_STATUS_DELAY_ENUM.getDescription(scheduling.getBcType()));
71 73 }
72 74 }
73 75 }
74 76  
  77 + public static void handlerRuleNum(RuleNum ruleNum) {
  78 + if (RULE_TYPE_FIXED.equals(ruleNum.getRuleType())) {
  79 + ruleNum.setRuleWeek("");
  80 + }
  81 + if (RULE_TYPE_WEEK.equals(ruleNum.getRuleType())) {
  82 + ruleNum.setWorkDay(null);
  83 + ruleNum.setFreeDay(null);
  84 + }
  85 + }
  86 +
  87 + public static void handleRuleScheduling(RuleScheduling ruleScheduling) {
  88 + if (ruleScheduling.getSecondFlag().equals(NO_SEGMENTATION)) {
  89 + ruleScheduling.setSecondSignDayTomorrow(null);
  90 + ruleScheduling.setSecondQuittingSignInTime(null);
  91 + ruleScheduling.setSecondSignInQuittingRange(null);
  92 + ruleScheduling.setSecondWorkSignInTime(null);
  93 + ruleScheduling.setSecondSignInWorkingRange(null);
  94 + }
  95 + }
  96 +
75 97  
76 98 }
... ...
Bsth-admin/src/main/resources/mapper/scheduling/RuleSchedulingMapper.xml
... ... @@ -187,11 +187,11 @@
187 187 <if test="firstSignInQuittingRange != null">first_sign_in_quitting_range = #{firstSignInQuittingRange},</if>
188 188 <if test="signInTimeOutRange != null">sign_in_time_out_range = #{signInTimeOutRange},</if>
189 189 <if test="secondFlag != null">second_flag = #{secondFlag},</if>
190   - <if test="secondWorkSignInTime != null">second_work_sign_in_time = #{secondWorkSignInTime},</if>
191   - <if test="secondSignInWorkingRange != null">second_sign_in_working_range = #{secondSignInWorkingRange},</if>
192   - <if test="secondQuittingSignInTime != null">second_quitting_sign_in_time = #{secondQuittingSignInTime},</if>
193   - <if test="secondSignInQuittingRange != null">second_sign_in_quitting_range = #{secondSignInQuittingRange},</if>
194   - <if test="secondSignDayTomorrow != null">second_sign_day_tomorrow = #{secondSignDayTomorrow},</if>
  190 + second_work_sign_in_time = #{secondWorkSignInTime},
  191 + second_sign_in_working_range = #{secondSignInWorkingRange},
  192 + second_quitting_sign_in_time = #{secondQuittingSignInTime},
  193 + second_sign_in_quitting_range = #{secondSignInQuittingRange},
  194 + second_sign_day_tomorrow = #{secondSignDayTomorrow},
195 195 <if test="updateBy != null">update_by = #{updateBy},</if>
196 196 <if test="updateTime != null">update_time = #{updateTime},</if>
197 197 </trim>
... ...