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,6 +13,9 @@ public enum WeekEnum {
13 FRIDAY(5,"FRIDAY","星期五"), 13 FRIDAY(5,"FRIDAY","星期五"),
14 SATURDAY(6,"SATURDAY","星期六"), 14 SATURDAY(6,"SATURDAY","星期六"),
15 SUNDAY(7,"SUNDAY","星期天"), 15 SUNDAY(7,"SUNDAY","星期天"),
  16 + /**
  17 + * 休息的id在表中必须为0
  18 + */
16 FREE(0,"休息","休息"); 19 FREE(0,"休息","休息");
17 20
18 private String description; 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,18 +8,25 @@ import java.util.stream.Collectors;
8 import java.util.stream.Stream; 8 import java.util.stream.Stream;
9 import cn.hutool.core.bean.BeanUtil; 9 import cn.hutool.core.bean.BeanUtil;
10 import cn.hutool.core.collection.CollectionUtil; 10 import cn.hutool.core.collection.CollectionUtil;
  11 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  12 +import com.ruoyi.common.exception.ServiceException;
11 import com.ruoyi.common.utils.DateUtils; 13 import com.ruoyi.common.utils.DateUtils;
12 import com.ruoyi.common.utils.SecurityUtils; 14 import com.ruoyi.common.utils.SecurityUtils;
  15 +import com.ruoyi.domain.RuleNumSetting;
13 import com.ruoyi.pojo.dto.RuleNumDto; 16 import com.ruoyi.pojo.dto.RuleNumDto;
14 import com.ruoyi.pojo.vo.RuleNumTemplateVo; 17 import com.ruoyi.pojo.vo.RuleNumTemplateVo;
15 import com.ruoyi.pojo.vo.RuleNumVo; 18 import com.ruoyi.pojo.vo.RuleNumVo;
16 import com.ruoyi.pojo.vo.SchedulingResponseVo; 19 import com.ruoyi.pojo.vo.SchedulingResponseVo;
17 import com.ruoyi.service.RuleNumSettingService; 20 import com.ruoyi.service.RuleNumSettingService;
  21 +import com.ruoyi.utils.ToolUtils;
18 import org.springframework.beans.factory.annotation.Autowired; 22 import org.springframework.beans.factory.annotation.Autowired;
19 import org.springframework.stereotype.Service; 23 import org.springframework.stereotype.Service;
20 import com.ruoyi.num.mapper.RuleNumMapper; 24 import com.ruoyi.num.mapper.RuleNumMapper;
21 import com.ruoyi.num.domain.RuleNum; 25 import com.ruoyi.num.domain.RuleNum;
22 import com.ruoyi.num.service.IRuleNumService; 26 import com.ruoyi.num.service.IRuleNumService;
  27 +import org.springframework.validation.BindException;
  28 +import org.springframework.web.bind.MethodArgumentNotValidException;
  29 +
23 import static com.ruoyi.common.RuleSchedulingProperties.*; 30 import static com.ruoyi.common.RuleSchedulingProperties.*;
24 31
25 /** 32 /**
@@ -75,6 +82,7 @@ public class RuleNumServiceImpl implements IRuleNumService @@ -75,6 +82,7 @@ public class RuleNumServiceImpl implements IRuleNumService
75 ruleNum.setUpdateBy(username); 82 ruleNum.setUpdateBy(username);
76 ruleNum.setCreateTime(DateUtils.getNowDate()); 83 ruleNum.setCreateTime(DateUtils.getNowDate());
77 ruleNum.setUpdateTime(DateUtils.getNowDate()); 84 ruleNum.setUpdateTime(DateUtils.getNowDate());
  85 + ToolUtils.handlerRuleNum(ruleNum);
78 return ruleNumMapper.insertRuleNum(ruleNum); 86 return ruleNumMapper.insertRuleNum(ruleNum);
79 } 87 }
80 88
@@ -87,6 +95,14 @@ public class RuleNumServiceImpl implements IRuleNumService @@ -87,6 +95,14 @@ public class RuleNumServiceImpl implements IRuleNumService
87 @Override 95 @Override
88 public int updateRuleNum(RuleNum ruleNum) 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 ruleNum.setUpdateTime(DateUtils.getNowDate()); 106 ruleNum.setUpdateTime(DateUtils.getNowDate());
91 ruleNum.setUpdateBy(ruleNum.getUpdateBy()); 107 ruleNum.setUpdateBy(ruleNum.getUpdateBy());
92 return ruleNumMapper.updateRuleNum(ruleNum); 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,6 +9,7 @@ import java.util.stream.Collectors;
9 9
10 import cn.hutool.core.collection.CollectionUtil; 10 import cn.hutool.core.collection.CollectionUtil;
11 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 11 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  12 +import com.ruoyi.common.exception.ServiceException;
12 import com.ruoyi.common.utils.DateUtils; 13 import com.ruoyi.common.utils.DateUtils;
13 import com.ruoyi.common.utils.SecurityUtils; 14 import com.ruoyi.common.utils.SecurityUtils;
14 import com.ruoyi.domain.RuleNumSetting; 15 import com.ruoyi.domain.RuleNumSetting;
@@ -19,6 +20,7 @@ import com.ruoyi.pojo.vo.RuleSchedulingResponseVo; @@ -19,6 +20,7 @@ import com.ruoyi.pojo.vo.RuleSchedulingResponseVo;
19 import com.ruoyi.pojo.vo.RuleSchedulingVo; 20 import com.ruoyi.pojo.vo.RuleSchedulingVo;
20 import com.ruoyi.service.RuleNumSettingService; 21 import com.ruoyi.service.RuleNumSettingService;
21 import com.ruoyi.service.RuleSettingSchedulingService; 22 import com.ruoyi.service.RuleSettingSchedulingService;
  23 +import com.ruoyi.utils.ToolUtils;
22 import org.springframework.beans.BeanUtils; 24 import org.springframework.beans.BeanUtils;
23 import org.springframework.beans.factory.annotation.Autowired; 25 import org.springframework.beans.factory.annotation.Autowired;
24 import org.springframework.stereotype.Service; 26 import org.springframework.stereotype.Service;
@@ -83,6 +85,7 @@ public class RuleSchedulingServiceImpl implements IRuleSchedulingService { @@ -83,6 +85,7 @@ public class RuleSchedulingServiceImpl implements IRuleSchedulingService {
83 Date date = DateUtils.getNowDate(); 85 Date date = DateUtils.getNowDate();
84 ruleScheduling.setCreateTime(date); 86 ruleScheduling.setCreateTime(date);
85 ruleScheduling.setUpdateTime(date); 87 ruleScheduling.setUpdateTime(date);
  88 + ToolUtils.handleRuleScheduling(ruleScheduling);
86 return ruleSchedulingMapper.insertRuleScheduling(ruleScheduling); 89 return ruleSchedulingMapper.insertRuleScheduling(ruleScheduling);
87 } 90 }
88 91
@@ -106,8 +109,19 @@ public class RuleSchedulingServiceImpl implements IRuleSchedulingService { @@ -106,8 +109,19 @@ public class RuleSchedulingServiceImpl implements IRuleSchedulingService {
106 @Override 109 @Override
107 public int updateRuleScheduling(RuleScheduling ruleScheduling) { 110 public int updateRuleScheduling(RuleScheduling ruleScheduling) {
108 handleNewAddScheduling(ruleScheduling); 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 ruleScheduling.setUpdateTime(DateUtils.getNowDate()); 122 ruleScheduling.setUpdateTime(DateUtils.getNowDate());
110 ruleScheduling.setUpdateBy(SecurityUtils.getUsername()); 123 ruleScheduling.setUpdateBy(SecurityUtils.getUsername());
  124 + ToolUtils.handleRuleScheduling(ruleScheduling);
111 return ruleSchedulingMapper.updateRuleScheduling(ruleScheduling); 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,6 +3,7 @@ package com.ruoyi.utils;
3 import com.ruoyi.common.utils.uuid.UUID; 3 import com.ruoyi.common.utils.uuid.UUID;
4 import com.ruoyi.domain.DriverScheduling; 4 import com.ruoyi.domain.DriverScheduling;
5 import com.ruoyi.domain.RuleAttendanceMain; 5 import com.ruoyi.domain.RuleAttendanceMain;
  6 +import com.ruoyi.num.domain.RuleNum;
6 import com.ruoyi.pojo.dto.RuleSchedulingDto; 7 import com.ruoyi.pojo.dto.RuleSchedulingDto;
7 import com.ruoyi.scheduling.domain.RuleScheduling; 8 import com.ruoyi.scheduling.domain.RuleScheduling;
8 import org.springframework.beans.BeanUtils; 9 import org.springframework.beans.BeanUtils;
@@ -13,7 +14,7 @@ import java.util.Objects; @@ -13,7 +14,7 @@ import java.util.Objects;
13 import static com.ruoyi.common.ConstDriverProperties.BC_TYPE_IN; 14 import static com.ruoyi.common.ConstDriverProperties.BC_TYPE_IN;
14 import static com.ruoyi.common.ConstDriverProperties.BC_TYPE_OUT; 15 import static com.ruoyi.common.ConstDriverProperties.BC_TYPE_OUT;
15 import static com.ruoyi.common.ConstSignInConstSignInProperties.SIGN_TIME_OUT_EX_NUM; 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 import static com.ruoyi.common.SignStatusEnum.SIGN_STATUS_DELAY_ENUM; 18 import static com.ruoyi.common.SignStatusEnum.SIGN_STATUS_DELAY_ENUM;
18 import static com.ruoyi.common.SignStatusEnum.SIGN_STATUS_ZONE_ENUM; 19 import static com.ruoyi.common.SignStatusEnum.SIGN_STATUS_ZONE_ENUM;
19 20
@@ -41,6 +42,7 @@ public class ToolUtils { @@ -41,6 +42,7 @@ public class ToolUtils {
41 42
42 /** 43 /**
43 * 更新报表记录 44 * 更新报表记录
  45 + *
44 * @param scheduling 46 * @param scheduling
45 */ 47 */
46 public static void updateReport(DriverScheduling scheduling) { 48 public static void updateReport(DriverScheduling scheduling) {
@@ -65,12 +67,32 @@ public class ToolUtils { @@ -65,12 +67,32 @@ public class ToolUtils {
65 // 计划签退时间 67 // 计划签退时间
66 Long zdsjT = scheduling.getZdsjT(); 68 Long zdsjT = scheduling.getZdsjT();
67 // 一小时内约束 69 // 一小时内约束
68 - if ( date.getTime() - zdsjT > 60 * 60 * 1000 ) { 70 + if (date.getTime() - zdsjT > 60 * 60 * 1000) {
69 scheduling.setExType(SIGN_TIME_OUT_EX_NUM); 71 scheduling.setExType(SIGN_TIME_OUT_EX_NUM);
70 scheduling.setRemark(SIGN_STATUS_DELAY_ENUM.getDescription(scheduling.getBcType())); 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,11 +187,11 @@
187 <if test="firstSignInQuittingRange != null">first_sign_in_quitting_range = #{firstSignInQuittingRange},</if> 187 <if test="firstSignInQuittingRange != null">first_sign_in_quitting_range = #{firstSignInQuittingRange},</if>
188 <if test="signInTimeOutRange != null">sign_in_time_out_range = #{signInTimeOutRange},</if> 188 <if test="signInTimeOutRange != null">sign_in_time_out_range = #{signInTimeOutRange},</if>
189 <if test="secondFlag != null">second_flag = #{secondFlag},</if> 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 <if test="updateBy != null">update_by = #{updateBy},</if> 195 <if test="updateBy != null">update_by = #{updateBy},</if>
196 <if test="updateTime != null">update_time = #{updateTime},</if> 196 <if test="updateTime != null">update_time = #{updateTime},</if>
197 </trim> 197 </trim>