Commit d34506017851de56367e02fae73691fb26bcf4ff
1 parent
5e0a6bbc
feat: 班次修改和规则修改设置。
Showing
5 changed files
with
62 additions
and
7 deletions
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> |