Commit e603dc0af1014a9a10ef8633df6622ad7e35e6de
1 parent
71818d8d
新 的打卡日志
Showing
10 changed files
with
167 additions
and
100 deletions
Bsth-admin/src/main/java/com/ruoyi/common/cache/NowSchedulingCache.java
| @@ -68,7 +68,7 @@ public class NowSchedulingCache { | @@ -68,7 +68,7 @@ public class NowSchedulingCache { | ||
| 68 | * @param date | 68 | * @param date |
| 69 | * @return int 0 为刷新成功、1为传入对象值为空或工号为空或传入的DriverScheduling的ID为空 | 69 | * @return int 0 为刷新成功、1为传入对象值为空或工号为空或传入的DriverScheduling的ID为空 |
| 70 | */ | 70 | */ |
| 71 | - public int refreshDriveScheDulingCacheByDateAndJobCode(DriverScheduling driverScheduling, Date date) { | 71 | + public int refreshDriveScheDulingCacheByDateAndJobCode(DriverScheduling driverScheduling, Date date) { |
| 72 | if (Objects.isNull(driverScheduling) || Objects.isNull(date) || StringUtils.isEmpty(driverScheduling.getJobCode()) | 72 | if (Objects.isNull(driverScheduling) || Objects.isNull(date) || StringUtils.isEmpty(driverScheduling.getJobCode()) |
| 73 | || Objects.isNull(driverScheduling.getId())) { | 73 | || Objects.isNull(driverScheduling.getId())) { |
| 74 | log.warn("刷新本地打卡缓存信息失败,传入的对象为空。传入的时间:{},传入的数据对象:{}", date, driverScheduling); | 74 | log.warn("刷新本地打卡缓存信息失败,传入的对象为空。传入的时间:{},传入的数据对象:{}", date, driverScheduling); |
| @@ -154,33 +154,36 @@ public class NowSchedulingCache { | @@ -154,33 +154,36 @@ public class NowSchedulingCache { | ||
| 154 | * @param index | 154 | * @param index |
| 155 | * @param signIn | 155 | * @param signIn |
| 156 | */ | 156 | */ |
| 157 | - public void updateCacheByJobCode(String remark, String key, Integer index, SignIn signIn,boolean isNew,DriverScheduling sourceScheduling) { | ||
| 158 | - if(isNew && Objects.nonNull(sourceScheduling)){ | ||
| 159 | - if(Objects.isNull(cacheNowDayScheduling.get(key))){ | 157 | + public void updateCacheByJobCode(String remark, String key, Integer index, SignIn signIn, boolean isNew, DriverScheduling sourceScheduling) { |
| 158 | + if (isNew && Objects.nonNull(sourceScheduling)) { | ||
| 159 | + if (Objects.isNull(cacheNowDayScheduling.get(key))) { | ||
| 160 | return; | 160 | return; |
| 161 | } | 161 | } |
| 162 | 162 | ||
| 163 | int size = CollectionUtils.size(cacheNowDayScheduling.get(key).get(signIn.getJobCode())); | 163 | int size = CollectionUtils.size(cacheNowDayScheduling.get(key).get(signIn.getJobCode())); |
| 164 | for (int i = 0; i < size; i++) { | 164 | for (int i = 0; i < size; i++) { |
| 165 | - if(Objects.equals(cacheNowDayScheduling.get(key).get(signIn.getJobCode()).get(i).getId(),sourceScheduling.getId())){ | 165 | + if (Objects.equals(cacheNowDayScheduling.get(key).get(signIn.getJobCode()).get(i).getId(), sourceScheduling.getId())) { |
| 166 | index = i; | 166 | index = i; |
| 167 | break; | 167 | break; |
| 168 | } | 168 | } |
| 169 | } | 169 | } |
| 170 | - | ||
| 171 | - | ||
| 172 | - | ||
| 173 | - | ||
| 174 | } | 170 | } |
| 175 | if (key.equals(ConstDateUtil.formatDate(ConstDateUtil.getTheSpecifiedNumberOfDaysOfTime(0))) | 171 | if (key.equals(ConstDateUtil.formatDate(ConstDateUtil.getTheSpecifiedNumberOfDaysOfTime(0))) |
| 176 | || key.equals(ConstDateUtil.formatDate(ConstDateUtil.getTheSpecifiedNumberOfDaysOfTime(-1)))) { | 172 | || key.equals(ConstDateUtil.formatDate(ConstDateUtil.getTheSpecifiedNumberOfDaysOfTime(-1)))) { |
| 173 | + if (Objects.isNull(cacheNowDayScheduling.get(key)) || Objects.isNull(cacheNowDayScheduling.get(key).get(signIn.getJobCode()))) { | ||
| 174 | + return; | ||
| 175 | + } | ||
| 176 | + int size = CollectionUtils.size(cacheNowDayScheduling.get(key).get(signIn.getJobCode())); | ||
| 177 | + if (size <= index) { | ||
| 178 | + return; | ||
| 179 | + } | ||
| 177 | DriverScheduling scheduling = cacheNowDayScheduling.get(key).get(signIn.getJobCode()).get(index); | 180 | DriverScheduling scheduling = cacheNowDayScheduling.get(key).get(signIn.getJobCode()).get(index); |
| 178 | scheduling.setSignInId(signIn.getId()); | 181 | scheduling.setSignInId(signIn.getId()); |
| 179 | scheduling.setRemark(remark); | 182 | scheduling.setRemark(remark); |
| 180 | 183 | ||
| 181 | Integer exType = signIn.getExType(); | 184 | Integer exType = signIn.getExType(); |
| 182 | - if(isNew){ | ||
| 183 | - exType = bigViewServiceV1.isSignStatusWineEnum(signIn)?3:bigViewServiceV1.isSignStatusDelayEnum(signIn)?1:Objects.equals(2,signIn.getExType())?2:0; | 185 | + if (isNew) { |
| 186 | + exType = bigViewServiceV1.isSignStatusWineEnum(signIn) ? 3 : bigViewServiceV1.isSignStatusDelayEnum(signIn) ? 1 : Objects.equals(2, signIn.getExType()) ? 2 : 0; | ||
| 184 | } | 187 | } |
| 185 | scheduling.setExType(exType); | 188 | scheduling.setExType(exType); |
| 186 | scheduling.setSignTime(signIn.getCreateTime()); | 189 | scheduling.setSignTime(signIn.getCreateTime()); |
| @@ -189,7 +192,7 @@ public class NowSchedulingCache { | @@ -189,7 +192,7 @@ public class NowSchedulingCache { | ||
| 189 | scheduling.setAlcoholIntake(signIn.getAlcoholIntake()); | 192 | scheduling.setAlcoholIntake(signIn.getAlcoholIntake()); |
| 190 | 193 | ||
| 191 | 194 | ||
| 192 | - cacheNowDayScheduling.get(key).get(signIn.getJobCode()).set(index,scheduling); | 195 | + cacheNowDayScheduling.get(key).get(signIn.getJobCode()).set(index, scheduling); |
| 193 | } | 196 | } |
| 194 | } | 197 | } |
| 195 | 198 |
Bsth-admin/src/main/java/com/ruoyi/common/cache/SchedulingCache.java
| @@ -36,7 +36,7 @@ public class SchedulingCache { | @@ -36,7 +36,7 @@ public class SchedulingCache { | ||
| 36 | 36 | ||
| 37 | public SchedulingCache(SchedulerProperty property) { | 37 | public SchedulingCache(SchedulerProperty property) { |
| 38 | log.info("项目启动加载中获取实时班次并存入缓存-----"); | 38 | log.info("项目启动加载中获取实时班次并存入缓存-----"); |
| 39 | - schedulingInit(property); | 39 | +// schedulingInit(property); |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | 42 |
Bsth-admin/src/main/java/com/ruoyi/in/controller/SignInController.java
| @@ -7,18 +7,15 @@ import com.ruoyi.common.core.page.TableDataInfo; | @@ -7,18 +7,15 @@ import com.ruoyi.common.core.page.TableDataInfo; | ||
| 7 | import com.ruoyi.common.core.redis.RedisCache; | 7 | import com.ruoyi.common.core.redis.RedisCache; |
| 8 | import com.ruoyi.common.enums.BusinessType; | 8 | import com.ruoyi.common.enums.BusinessType; |
| 9 | import com.ruoyi.common.exception.file.FileUploadException; | 9 | import com.ruoyi.common.exception.file.FileUploadException; |
| 10 | -import com.ruoyi.common.utils.StringUtils; | ||
| 11 | import com.ruoyi.common.utils.poi.ExcelUtil; | 10 | import com.ruoyi.common.utils.poi.ExcelUtil; |
| 12 | import com.ruoyi.in.domain.SignIn; | 11 | import com.ruoyi.in.domain.SignIn; |
| 13 | import com.ruoyi.in.service.ISignInService; | 12 | import com.ruoyi.in.service.ISignInService; |
| 14 | import com.ruoyi.in.service.SignInServiceV1; | 13 | import com.ruoyi.in.service.SignInServiceV1; |
| 15 | import com.ruoyi.pojo.response.SignInResponseVo; | 14 | import com.ruoyi.pojo.response.SignInResponseVo; |
| 16 | -import com.ruoyi.utils.ConstDateUtil; | ||
| 17 | import io.swagger.annotations.Api; | 15 | import io.swagger.annotations.Api; |
| 18 | import io.swagger.annotations.ApiOperation; | 16 | import io.swagger.annotations.ApiOperation; |
| 19 | import io.swagger.annotations.ApiParam; | 17 | import io.swagger.annotations.ApiParam; |
| 20 | import lombok.extern.slf4j.Slf4j; | 18 | import lombok.extern.slf4j.Slf4j; |
| 21 | -import org.apache.commons.lang3.RandomUtils; | ||
| 22 | import org.springframework.beans.factory.annotation.Autowired; | 19 | import org.springframework.beans.factory.annotation.Autowired; |
| 23 | import org.springframework.validation.annotation.Validated; | 20 | import org.springframework.validation.annotation.Validated; |
| 24 | import org.springframework.web.bind.annotation.*; | 21 | import org.springframework.web.bind.annotation.*; |
| @@ -26,13 +23,7 @@ import org.springframework.web.bind.annotation.*; | @@ -26,13 +23,7 @@ import org.springframework.web.bind.annotation.*; | ||
| 26 | import javax.servlet.http.HttpServletRequest; | 23 | import javax.servlet.http.HttpServletRequest; |
| 27 | import javax.servlet.http.HttpServletResponse; | 24 | import javax.servlet.http.HttpServletResponse; |
| 28 | import java.io.IOException; | 25 | import java.io.IOException; |
| 29 | -import java.text.MessageFormat; | ||
| 30 | -import java.util.Date; | ||
| 31 | import java.util.List; | 26 | import java.util.List; |
| 32 | -import java.util.Objects; | ||
| 33 | -import java.util.concurrent.TimeUnit; | ||
| 34 | - | ||
| 35 | -import static com.ruoyi.common.redispre.GlobalRedisPreName.REDIS_SIGN_IN_DRIVER_ALCOHOL_OVERFLOW; | ||
| 36 | 27 | ||
| 37 | /** | 28 | /** |
| 38 | * 签到Controller | 29 | * 签到Controller |
| @@ -110,36 +101,37 @@ public class SignInController extends BaseController { | @@ -110,36 +101,37 @@ public class SignInController extends BaseController { | ||
| 110 | @PostMapping("/newAdd") | 101 | @PostMapping("/newAdd") |
| 111 | @ApiOperation("新增签到(设备传入)") | 102 | @ApiOperation("新增签到(设备传入)") |
| 112 | public AjaxResult addSignIn(@ApiParam @RequestBody @Validated SignIn signIn) throws FileUploadException, IOException { | 103 | public AjaxResult addSignIn(@ApiParam @RequestBody @Validated SignIn signIn) throws FileUploadException, IOException { |
| 113 | - String key = MessageFormat.format("sign:assignment:{0}", signIn.getJobCode()); | ||
| 114 | - if (redisCache.hasKey(key)) { | ||
| 115 | - log.info(" sing method old sign :[{}]", signIn); | ||
| 116 | - return signInService.addSignIn(signIn); | ||
| 117 | - } | ||
| 118 | - | ||
| 119 | - Integer num = RandomUtils.nextInt(0, 10); | ||
| 120 | - if (num < 6) { | ||
| 121 | - redisCache.setCacheObject(key, num, 5, TimeUnit.MINUTES); | ||
| 122 | - log.info("[{}] sing method 走新的签到方式 :[{}] ", num, signIn); | ||
| 123 | - key = StringUtils.join(REDIS_SIGN_IN_DRIVER_ALCOHOL_OVERFLOW, ConstDateUtil.FAST_YYYY_MM_DD.format(new Date()), ":", signIn.getJobCode()); | ||
| 124 | - Integer count = redisCache.getCacheObject(key); | ||
| 125 | - try { | ||
| 126 | - return signInServiceV1.addsignInV1(signIn); | ||
| 127 | - } catch (Exception e) { | ||
| 128 | - if (Objects.isNull(count) || count < 1) { | ||
| 129 | - count = 0; | ||
| 130 | - } else { | ||
| 131 | - count = count - 1; | ||
| 132 | - } | ||
| 133 | - if (redisCache.hasKey(key)) { | ||
| 134 | - redisCache.setCacheObject(key, count, 1, TimeUnit.DAYS); | ||
| 135 | - } | ||
| 136 | - log.error("[{}] sing method 走新的签到方式,签到失败 :[{}]", num, signIn, e); | ||
| 137 | - } | ||
| 138 | - | ||
| 139 | - } | ||
| 140 | - | ||
| 141 | - log.info("[{}] sing method old sign :[{}]", num, signIn); | ||
| 142 | - return signInService.addSignIn(signIn); | 104 | +// String key = MessageFormat.format("sign:assignment:{0}", signIn.getJobCode()); |
| 105 | +// if (redisCache.hasKey(key)) { | ||
| 106 | +// log.info(" sing method old sign :[{}]", signIn); | ||
| 107 | +// return signInService.addSignIn(signIn); | ||
| 108 | +// } | ||
| 109 | +// | ||
| 110 | +// Integer num = RandomUtils.nextInt(0, 10); | ||
| 111 | +// if (num < 6) { | ||
| 112 | +// redisCache.setCacheObject(key, num, 5, TimeUnit.MINUTES); | ||
| 113 | +// log.info("[{}] sing method 走新的签到方式 :[{}] ", num, signIn); | ||
| 114 | +// key = StringUtils.join(REDIS_SIGN_IN_DRIVER_ALCOHOL_OVERFLOW, ConstDateUtil.FAST_YYYY_MM_DD.format(new Date()), ":", signIn.getJobCode()); | ||
| 115 | +// Integer count = redisCache.getCacheObject(key); | ||
| 116 | +// try { | ||
| 117 | +// return signInServiceV1.addsignInV1(signIn); | ||
| 118 | +// } catch (Exception e) { | ||
| 119 | +// if (Objects.isNull(count) || count < 1) { | ||
| 120 | +// count = 0; | ||
| 121 | +// } else { | ||
| 122 | +// count = count - 1; | ||
| 123 | +// } | ||
| 124 | +// if (redisCache.hasKey(key)) { | ||
| 125 | +// redisCache.setCacheObject(key, count, 1, TimeUnit.DAYS); | ||
| 126 | +// } | ||
| 127 | +// log.error("[{}] sing method 走新的签到方式,签到失败 :[{}]", num, signIn, e); | ||
| 128 | +// } | ||
| 129 | +// | ||
| 130 | +// } | ||
| 131 | +// | ||
| 132 | +// log.info("[{}] sing method old sign :[{}]", num, signIn); | ||
| 133 | +// return signInService.addSignIn(signIn); | ||
| 134 | + return signInServiceV1.addsignInV1(signIn); | ||
| 143 | } | 135 | } |
| 144 | 136 | ||
| 145 | // /** | 137 | // /** |
Bsth-admin/src/main/java/com/ruoyi/in/service/impl/SignInServiceV1Impl.java
| @@ -27,6 +27,7 @@ import com.ruoyi.in.domain.SignIn; | @@ -27,6 +27,7 @@ import com.ruoyi.in.domain.SignIn; | ||
| 27 | import com.ruoyi.in.domain.SignInV1; | 27 | import com.ruoyi.in.domain.SignInV1; |
| 28 | import com.ruoyi.in.mapper.SignInMapper; | 28 | import com.ruoyi.in.mapper.SignInMapper; |
| 29 | import com.ruoyi.in.mapper.SignInMapperV1; | 29 | import com.ruoyi.in.mapper.SignInMapperV1; |
| 30 | +import com.ruoyi.in.service.ISignInService; | ||
| 30 | import com.ruoyi.in.service.SignInServiceV1; | 31 | import com.ruoyi.in.service.SignInServiceV1; |
| 31 | import com.ruoyi.scheduling.service.SchedulingServiceV1; | 32 | import com.ruoyi.scheduling.service.SchedulingServiceV1; |
| 32 | import com.ruoyi.service.BigViewServiceV1; | 33 | import com.ruoyi.service.BigViewServiceV1; |
| @@ -75,6 +76,8 @@ public class SignInServiceV1Impl extends ServiceImpl<SignInMapperV1, SignInV1> i | @@ -75,6 +76,8 @@ public class SignInServiceV1Impl extends ServiceImpl<SignInMapperV1, SignInV1> i | ||
| 75 | 76 | ||
| 76 | @Autowired | 77 | @Autowired |
| 77 | private RedisCache redisCache; | 78 | private RedisCache redisCache; |
| 79 | + @Autowired | ||
| 80 | + private ISignInService signInService; | ||
| 78 | 81 | ||
| 79 | private static final FastDateFormat HHMM = FastDateFormat.getInstance("HH:mm"); | 82 | private static final FastDateFormat HHMM = FastDateFormat.getInstance("HH:mm"); |
| 80 | 83 | ||
| @@ -142,7 +145,7 @@ public class SignInServiceV1Impl extends ServiceImpl<SignInMapperV1, SignInV1> i | @@ -142,7 +145,7 @@ public class SignInServiceV1Impl extends ServiceImpl<SignInMapperV1, SignInV1> i | ||
| 142 | switchAndChooseAlcohol(signIn, driver, scheduling); | 145 | switchAndChooseAlcohol(signIn, driver, scheduling); |
| 143 | 146 | ||
| 144 | } else { | 147 | } else { |
| 145 | - log.info("签到的数据为:[{}]",scheduling); | 148 | + log.info("签到的数据为:[{}]", scheduling); |
| 146 | SignInV1 sourceSign = getById(scheduling.getSignInId()); | 149 | SignInV1 sourceSign = getById(scheduling.getSignInId()); |
| 147 | if (Objects.nonNull(sourceSign)) { | 150 | if (Objects.nonNull(sourceSign)) { |
| 148 | switchAndChooseTime(signIn, scheduling, dateTime); | 151 | switchAndChooseTime(signIn, scheduling, dateTime); |
| @@ -153,10 +156,11 @@ public class SignInServiceV1Impl extends ServiceImpl<SignInMapperV1, SignInV1> i | @@ -153,10 +156,11 @@ public class SignInServiceV1Impl extends ServiceImpl<SignInMapperV1, SignInV1> i | ||
| 153 | } | 156 | } |
| 154 | 157 | ||
| 155 | private AjaxResult saveData(SignIn signIn, DriverScheduling scheduling, CalDriverScheduling calDriverScheduling, Driver driver, SignInV1 signInV1) { | 158 | private AjaxResult saveData(SignIn signIn, DriverScheduling scheduling, CalDriverScheduling calDriverScheduling, Driver driver, SignInV1 signInV1) { |
| 159 | + | ||
| 156 | signInMapper.insertSignIn(signIn); | 160 | signInMapper.insertSignIn(signIn); |
| 157 | // 更新考勤 | 161 | // 更新考勤 |
| 158 | if (Objects.nonNull(calDriverScheduling)) { | 162 | if (Objects.nonNull(calDriverScheduling)) { |
| 159 | - schedulingService.computedSignInBySignIn(scheduling, calDriverScheduling.getIndex(), signIn,true); | 163 | + schedulingService.computedSignInBySignIn(scheduling, calDriverScheduling.getIndex(), signIn, true, signInService); |
| 160 | } | 164 | } |
| 161 | 165 | ||
| 162 | if (TempCache.checkJobCodeExist(signIn.getJobCode())) { | 166 | if (TempCache.checkJobCodeExist(signIn.getJobCode())) { |
| @@ -256,16 +260,27 @@ public class SignInServiceV1Impl extends ServiceImpl<SignInMapperV1, SignInV1> i | @@ -256,16 +260,27 @@ public class SignInServiceV1Impl extends ServiceImpl<SignInMapperV1, SignInV1> i | ||
| 256 | String fcsjHHMM = HHMM.format(zdsj); | 260 | String fcsjHHMM = HHMM.format(zdsj); |
| 257 | String dzsjHHMM = HHMM.format(date1); | 261 | String dzsjHHMM = HHMM.format(date1); |
| 258 | 262 | ||
| 263 | + Calendar calendar = new GregorianCalendar(); | ||
| 264 | + calendar.setTime(org.apache.commons.lang3.time.DateUtils.addMinutes(zdsj, 1)); | ||
| 265 | + calendar.set(Calendar.SECOND, 0); | ||
| 266 | + calendar.set(Calendar.MILLISECOND, 0); | ||
| 267 | + | ||
| 268 | + Date date = Math.abs(calendar.getTime().getTime()-dateTime)>Math.abs(zdsj.getTime()-dateTime)?zdsj:calendar.getTime(); | ||
| 269 | + | ||
| 259 | String remark = org.apache.commons.lang3.StringUtils.join(ErrorTypeProperties.SIGN_OUT_TIMEOUT, "请在", fcsjHHMM, "到", dzsjHHMM, "之间打卡"); | 270 | String remark = org.apache.commons.lang3.StringUtils.join(ErrorTypeProperties.SIGN_OUT_TIMEOUT, "请在", fcsjHHMM, "到", dzsjHHMM, "之间打卡"); |
| 260 | - return switchAndChooseTime(signIn, dateTime, zdsj, 80, remark); | 271 | + return switchAndChooseTime(signIn, dateTime, date, 80, remark); |
| 261 | } else { | 272 | } else { |
| 262 | Date fcsj = new Date(scheduling.getFcsjT()); | 273 | Date fcsj = new Date(scheduling.getFcsjT()); |
| 263 | 274 | ||
| 264 | String fcsjHHMM = HHMM.format(org.apache.commons.lang3.time.DateUtils.addMinutes(fcsj, -60)); | 275 | String fcsjHHMM = HHMM.format(org.apache.commons.lang3.time.DateUtils.addMinutes(fcsj, -60)); |
| 265 | String dzsjHHMM = HHMM.format(fcsj); | 276 | String dzsjHHMM = HHMM.format(fcsj); |
| 277 | + Calendar calendar = new GregorianCalendar(); | ||
| 278 | + calendar.setTime(org.apache.commons.lang3.time.DateUtils.addMinutes(fcsj, 1)); | ||
| 279 | + calendar.set(Calendar.SECOND, 0); | ||
| 280 | + calendar.set(Calendar.MILLISECOND, 0); | ||
| 266 | 281 | ||
| 267 | String remark = org.apache.commons.lang3.StringUtils.join(ErrorTypeProperties.SIGN_IN_TIMEOUT, "请在", fcsjHHMM, "到", dzsjHHMM, "之间打卡"); | 282 | String remark = org.apache.commons.lang3.StringUtils.join(ErrorTypeProperties.SIGN_IN_TIMEOUT, "请在", fcsjHHMM, "到", dzsjHHMM, "之间打卡"); |
| 268 | - return switchAndChooseTime(signIn, dateTime, fcsj, -60, remark); | 283 | + return switchAndChooseTime(signIn, dateTime, calendar.getTime(), -60, remark); |
| 269 | } | 284 | } |
| 270 | } | 285 | } |
| 271 | 286 | ||
| @@ -346,19 +361,26 @@ public class SignInServiceV1Impl extends ServiceImpl<SignInMapperV1, SignInV1> i | @@ -346,19 +361,26 @@ public class SignInServiceV1Impl extends ServiceImpl<SignInMapperV1, SignInV1> i | ||
| 346 | */ | 361 | */ |
| 347 | private CalDriverScheduling findSchedulingByDateTime(List<DriverSchedulingV1> schedulings, long dateTime, String type) { | 362 | private CalDriverScheduling findSchedulingByDateTime(List<DriverSchedulingV1> schedulings, long dateTime, String type) { |
| 348 | int size = CollectionUtils.size(schedulings); | 363 | int size = CollectionUtils.size(schedulings); |
| 364 | + Set<Long> values = new LinkedHashSet<>(); | ||
| 349 | for (int i = 0; i < size; i++) { | 365 | for (int i = 0; i < size; i++) { |
| 350 | DriverSchedulingV1 s = schedulings.get(i); | 366 | DriverSchedulingV1 s = schedulings.get(i); |
| 351 | s.setIndex(i); | 367 | s.setIndex(i); |
| 352 | 368 | ||
| 353 | if (Objects.nonNull(s.getFcsjT()) && org.apache.commons.lang3.StringUtils.equalsAnyIgnoreCase(org.apache.commons.lang3.StringUtils.trim(s.getBcType()), type)) { | 369 | if (Objects.nonNull(s.getFcsjT()) && org.apache.commons.lang3.StringUtils.equalsAnyIgnoreCase(org.apache.commons.lang3.StringUtils.trim(s.getBcType()), type)) { |
| 354 | s.setMinTime(Math.abs(s.getFcsjT() - dateTime)); | 370 | s.setMinTime(Math.abs(s.getFcsjT() - dateTime)); |
| 371 | + values.add(s.getMinTime()); | ||
| 355 | } else { | 372 | } else { |
| 356 | s.setMinTime(Long.MAX_VALUE); | 373 | s.setMinTime(Long.MAX_VALUE); |
| 357 | } | 374 | } |
| 358 | 375 | ||
| 359 | } | 376 | } |
| 377 | +// Optional<DriverSchedulingV1> optional = schedulings.stream().filter(s -> Objects.isNull(s.getSignInId())).min(Comparator.comparing(DriverScheduling::getMinTime)); | ||
| 378 | +// if (optional.isPresent()) { | ||
| 379 | +// return new CalDriverScheduling(optional.get()); | ||
| 380 | +// } | ||
| 381 | + Optional<DriverSchedulingV1> optional = schedulings.stream().filter(s -> org.apache.commons.lang3.StringUtils.equalsAnyIgnoreCase(type, s.getBcType())).min(Comparator.comparing(DriverScheduling::getMinTime)); | ||
| 382 | + | ||
| 360 | 383 | ||
| 361 | - Optional<DriverSchedulingV1> optional = schedulings.stream().min(Comparator.comparing(DriverScheduling::getMinTime)); | ||
| 362 | return new CalDriverScheduling(optional.orElse(null)); | 384 | return new CalDriverScheduling(optional.orElse(null)); |
| 363 | } | 385 | } |
| 364 | 386 |
Bsth-admin/src/main/java/com/ruoyi/scheduling/service/impl/SchedulingServiceV1Impl.java
| @@ -2,11 +2,14 @@ package com.ruoyi.scheduling.service.impl; | @@ -2,11 +2,14 @@ package com.ruoyi.scheduling.service.impl; | ||
| 2 | 2 | ||
| 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| 5 | +import com.ruoyi.common.utils.DateUtils; | ||
| 5 | import com.ruoyi.domain.DriverSchedulingV1; | 6 | import com.ruoyi.domain.DriverSchedulingV1; |
| 6 | import com.ruoyi.scheduling.mapper.SchedulingMapperV1; | 7 | import com.ruoyi.scheduling.mapper.SchedulingMapperV1; |
| 7 | import com.ruoyi.scheduling.service.SchedulingServiceV1; | 8 | import com.ruoyi.scheduling.service.SchedulingServiceV1; |
| 9 | +import org.apache.commons.lang3.StringUtils; | ||
| 8 | import org.springframework.stereotype.Service; | 10 | import org.springframework.stereotype.Service; |
| 9 | 11 | ||
| 12 | +import java.text.ParseException; | ||
| 10 | import java.util.Date; | 13 | import java.util.Date; |
| 11 | import java.util.List; | 14 | import java.util.List; |
| 12 | 15 | ||
| @@ -15,9 +18,25 @@ public class SchedulingServiceV1Impl extends ServiceImpl<SchedulingMapperV1, Dri | @@ -15,9 +18,25 @@ public class SchedulingServiceV1Impl extends ServiceImpl<SchedulingMapperV1, Dri | ||
| 15 | 18 | ||
| 16 | @Override | 19 | @Override |
| 17 | public List<DriverSchedulingV1> queryByJobCodeAndSchedulingDate(String jobCode, Date date) { | 20 | public List<DriverSchedulingV1> queryByJobCodeAndSchedulingDate(String jobCode, Date date) { |
| 21 | + String dateStr = DateUtils.FAST_YYYY_MM_DD.format(org.apache.commons.lang3.time.DateUtils.addDays(date, 1)); | ||
| 22 | + dateStr = StringUtils.join(dateStr, " 06:30:30"); | ||
| 18 | LambdaQueryWrapper<DriverSchedulingV1> wrapper = new LambdaQueryWrapper<>(); | 23 | LambdaQueryWrapper<DriverSchedulingV1> wrapper = new LambdaQueryWrapper<>(); |
| 19 | - wrapper.eq(DriverSchedulingV1::getJobCode, jobCode).eq(DriverSchedulingV1::getScheduleDate, date); | ||
| 20 | - wrapper.orderByAsc(DriverSchedulingV1::getFcsjT); | 24 | + try { |
| 25 | + Date date1 = DateUtils.FAST_YYYY_MM_DDHHMMSS.parse(dateStr); | ||
| 26 | + | ||
| 27 | +// dateStr = DateUtils.FAST_YYYY_MM_DD.format(org.apache.commons.lang3.time.DateUtils.addDays(date, -1)); | ||
| 28 | + dateStr = DateUtils.FAST_YYYY_MM_DD.format(date); | ||
| 29 | + dateStr = StringUtils.join(dateStr, " 00:00:00"); | ||
| 30 | + Date date2 = DateUtils.FAST_YYYY_MM_DDHHMMSS.parse(dateStr); | ||
| 31 | + | ||
| 32 | + wrapper.eq(DriverSchedulingV1::getJobCode, jobCode); | ||
| 33 | + wrapper.and(wr -> { | ||
| 34 | + wr.eq(DriverSchedulingV1::getScheduleDate, date).or().between(DriverSchedulingV1::getFcsjT, date2.getTime(), date1.getTime()); | ||
| 35 | + }); | ||
| 36 | + wrapper.orderByAsc(DriverSchedulingV1::getFcsjT); | ||
| 37 | + } catch (ParseException e) { | ||
| 38 | + throw new RuntimeException(e); | ||
| 39 | + } | ||
| 21 | return list(wrapper); | 40 | return list(wrapper); |
| 22 | } | 41 | } |
| 23 | 42 | ||
| @@ -25,7 +44,7 @@ public class SchedulingServiceV1Impl extends ServiceImpl<SchedulingMapperV1, Dri | @@ -25,7 +44,7 @@ public class SchedulingServiceV1Impl extends ServiceImpl<SchedulingMapperV1, Dri | ||
| 25 | public List<DriverSchedulingV1> queryByNbbmAndDate(String nbbm, Date date) { | 44 | public List<DriverSchedulingV1> queryByNbbmAndDate(String nbbm, Date date) { |
| 26 | LambdaQueryWrapper<DriverSchedulingV1> wrapper = new LambdaQueryWrapper<>(); | 45 | LambdaQueryWrapper<DriverSchedulingV1> wrapper = new LambdaQueryWrapper<>(); |
| 27 | wrapper.eq(DriverSchedulingV1::getNbbm, nbbm).eq(DriverSchedulingV1::getScheduleDate, date); | 46 | wrapper.eq(DriverSchedulingV1::getNbbm, nbbm).eq(DriverSchedulingV1::getScheduleDate, date); |
| 28 | - | 47 | + |
| 29 | return list(wrapper); | 48 | return list(wrapper); |
| 30 | } | 49 | } |
| 31 | } | 50 | } |
Bsth-admin/src/main/java/com/ruoyi/service/BigViewServiceV1.java
| @@ -11,7 +11,7 @@ import java.util.Date; | @@ -11,7 +11,7 @@ import java.util.Date; | ||
| 11 | 11 | ||
| 12 | public interface BigViewServiceV1 { | 12 | public interface BigViewServiceV1 { |
| 13 | 13 | ||
| 14 | - void asyncRefreshRedisValue(SignIn signIn, Driver driver, DriverScheduling driverScheduling,String dateStr, Date date) throws InterruptedException; | 14 | + void asyncRefreshRedisValue(SignIn signIn, Driver driver, DriverScheduling driverScheduling, String dateStr, Date date) throws InterruptedException; |
| 15 | 15 | ||
| 16 | AjaxResult queryBigViewQueryLineInfo(Date date); | 16 | AjaxResult queryBigViewQueryLineInfo(Date date); |
| 17 | 17 | ||
| @@ -30,6 +30,13 @@ public interface BigViewServiceV1 { | @@ -30,6 +30,13 @@ public interface BigViewServiceV1 { | ||
| 30 | AjaxResult getAjaxResultByDriverSignInfo(SignIn signIn); | 30 | AjaxResult getAjaxResultByDriverSignInfo(SignIn signIn); |
| 31 | 31 | ||
| 32 | /*** | 32 | /*** |
| 33 | + * 是否正常 | ||
| 34 | + * @param signIn | ||
| 35 | + * @return | ||
| 36 | + */ | ||
| 37 | + boolean isNormal(SignIn signIn); | ||
| 38 | + | ||
| 39 | + /*** | ||
| 33 | * 是否是早签 | 40 | * 是否是早签 |
| 34 | * @author liujun | 41 | * @author liujun |
| 35 | * @date 2024/9/25 14:51 | 42 | * @date 2024/9/25 14:51 |
| @@ -69,6 +76,7 @@ public interface BigViewServiceV1 { | @@ -69,6 +76,7 @@ public interface BigViewServiceV1 { | ||
| 69 | * @return boolean | 76 | * @return boolean |
| 70 | */ | 77 | */ |
| 71 | boolean isSignStatusZoneEnum(SignIn signIn); | 78 | boolean isSignStatusZoneEnum(SignIn signIn); |
| 79 | + | ||
| 72 | /*** | 80 | /*** |
| 73 | * 是否是驾驶员 | 81 | * 是否是驾驶员 |
| 74 | * @author liujun | 82 | * @author liujun |
Bsth-admin/src/main/java/com/ruoyi/service/SchedulingService.java
| @@ -7,6 +7,7 @@ import com.ruoyi.domain.DriverScheduling; | @@ -7,6 +7,7 @@ import com.ruoyi.domain.DriverScheduling; | ||
| 7 | import com.ruoyi.driver.mapper.DriverSchedulingMapper; | 7 | import com.ruoyi.driver.mapper.DriverSchedulingMapper; |
| 8 | import com.ruoyi.in.domain.SignIn; | 8 | import com.ruoyi.in.domain.SignIn; |
| 9 | import com.ruoyi.in.mapper.SignInMapper; | 9 | import com.ruoyi.in.mapper.SignInMapper; |
| 10 | +import com.ruoyi.in.service.ISignInService; | ||
| 10 | import com.ruoyi.in.service.impl.SignInServiceImpl; | 11 | import com.ruoyi.in.service.impl.SignInServiceImpl; |
| 11 | import com.ruoyi.pojo.DriverSignInRecommendation; | 12 | import com.ruoyi.pojo.DriverSignInRecommendation; |
| 12 | import com.ruoyi.pojo.GlobalIndex; | 13 | import com.ruoyi.pojo.GlobalIndex; |
| @@ -115,7 +116,7 @@ public class SchedulingService { | @@ -115,7 +116,7 @@ public class SchedulingService { | ||
| 115 | * @param signIn | 116 | * @param signIn |
| 116 | * @param globalIndex | 117 | * @param globalIndex |
| 117 | */ | 118 | */ |
| 118 | - public void computedSignInBySignIn(List<DriverScheduling> dto, SignIn signIn, GlobalIndex globalIndex, boolean isNew,DriverScheduling sourceScheduling) { | 119 | + public void computedSignInBySignIn(List<DriverScheduling> dto, SignIn signIn, GlobalIndex globalIndex, boolean isNew, DriverScheduling sourceScheduling) { |
| 119 | // 无排班不记录不在考勤表不更新 | 120 | // 无排班不记录不在考勤表不更新 |
| 120 | if (CollectionUtil.isEmpty(dto)) { | 121 | if (CollectionUtil.isEmpty(dto)) { |
| 121 | return; | 122 | return; |
| @@ -126,13 +127,13 @@ public class SchedulingService { | @@ -126,13 +127,13 @@ public class SchedulingService { | ||
| 126 | if (Objects.isNull(dto.get(globalIndex.getIndex()).getSignInId()) || dto.size() == 1) { | 127 | if (Objects.isNull(dto.get(globalIndex.getIndex()).getSignInId()) || dto.size() == 1) { |
| 127 | schedulingMapper.updateRoster(dto.get(globalIndex.getIndex()), signIn.getId(), signIn.getExType(), signIn.getCreateTime(), remark, signIn.getType(), signIn.getAlcoholFlag(), signIn.getAlcoholIntake()); | 128 | schedulingMapper.updateRoster(dto.get(globalIndex.getIndex()), signIn.getId(), signIn.getExType(), signIn.getCreateTime(), remark, signIn.getType(), signIn.getAlcoholFlag(), signIn.getAlcoholIntake()); |
| 128 | // 更新缓存 | 129 | // 更新缓存 |
| 129 | - nowSchedulingCache.updateCacheByJobCode(remark, ConstDateUtil.formatDate(dto.get(0).getScheduleDate()), globalIndex.getIndex(), signIn, isNew,sourceScheduling); | 130 | + nowSchedulingCache.updateCacheByJobCode(remark, ConstDateUtil.formatDate(dto.get(0).getScheduleDate()), globalIndex.getIndex(), signIn, isNew, sourceScheduling); |
| 130 | 131 | ||
| 131 | } | 132 | } |
| 132 | // 之前的无效 | 133 | // 之前的无效 |
| 133 | else if (!SIGN_NO_EX_NUM.equals(dto.get(globalIndex.getIndex()).getExType())) { | 134 | else if (!SIGN_NO_EX_NUM.equals(dto.get(globalIndex.getIndex()).getExType())) { |
| 134 | schedulingMapper.updateRoster(dto.get(globalIndex.getIndex()), signIn.getId(), signIn.getExType(), signIn.getCreateTime(), remark, signIn.getType(), signIn.getAlcoholFlag(), signIn.getAlcoholIntake()); | 135 | schedulingMapper.updateRoster(dto.get(globalIndex.getIndex()), signIn.getId(), signIn.getExType(), signIn.getCreateTime(), remark, signIn.getType(), signIn.getAlcoholFlag(), signIn.getAlcoholIntake()); |
| 135 | - nowSchedulingCache.updateCacheByJobCode(remark, ConstDateUtil.formatDate(dto.get(0).getScheduleDate()), globalIndex.getIndex(), signIn, isNew,sourceScheduling); | 136 | + nowSchedulingCache.updateCacheByJobCode(remark, ConstDateUtil.formatDate(dto.get(0).getScheduleDate()), globalIndex.getIndex(), signIn, isNew, sourceScheduling); |
| 136 | 137 | ||
| 137 | } | 138 | } |
| 138 | // 之前的有效 | 139 | // 之前的有效 |
| @@ -147,7 +148,7 @@ public class SchedulingService { | @@ -147,7 +148,7 @@ public class SchedulingService { | ||
| 147 | * | 148 | * |
| 148 | * @param signIn | 149 | * @param signIn |
| 149 | */ | 150 | */ |
| 150 | - public void computedSignInBySignIn(DriverScheduling driverScheduling, int index, SignIn signIn,boolean isNew) { | 151 | + public void computedSignInBySignIn(DriverScheduling driverScheduling, int index, SignIn signIn, boolean isNew, ISignInService signInService) { |
| 151 | // 无排班不记录不在考勤表不更新 | 152 | // 无排班不记录不在考勤表不更新 |
| 152 | if (Objects.isNull(driverScheduling)) { | 153 | if (Objects.isNull(driverScheduling)) { |
| 153 | return; | 154 | return; |
| @@ -156,23 +157,42 @@ public class SchedulingService { | @@ -156,23 +157,42 @@ public class SchedulingService { | ||
| 156 | // 更新最新的签到记录判断是否需要更新考勤 | 157 | // 更新最新的签到记录判断是否需要更新考勤 |
| 157 | // 记录为空直接插入记录 | 158 | // 记录为空直接插入记录 |
| 158 | if (Objects.isNull(driverScheduling.getSignInId())) { | 159 | if (Objects.isNull(driverScheduling.getSignInId())) { |
| 159 | - schedulingMapper.updateRoster(driverScheduling, signIn.getId(), signIn.getExType(), signIn.getCreateTime(), remark, signIn.getType(), signIn.getAlcoholFlag(), signIn.getAlcoholIntake()); | ||
| 160 | - // 更新缓存 | ||
| 161 | - nowSchedulingCache.updateCacheByJobCode(remark, ConstDateUtil.formatDate(driverScheduling.getScheduleDate()), index, signIn,isNew,driverScheduling); | ||
| 162 | - } | ||
| 163 | - // 之前的无效 | ||
| 164 | - else if (!SIGN_NO_EX_NUM.equals(driverScheduling.getExType())) { | ||
| 165 | - schedulingMapper.updateRoster(driverScheduling, signIn.getId(), signIn.getExType(), signIn.getCreateTime(), remark, signIn.getType(), signIn.getAlcoholFlag(), signIn.getAlcoholIntake()); | ||
| 166 | - nowSchedulingCache.updateCacheByJobCode(remark, ConstDateUtil.formatDate(driverScheduling.getScheduleDate()), index, signIn,isNew,driverScheduling); | ||
| 167 | - } | ||
| 168 | - // 之前的有效 | ||
| 169 | - else { | ||
| 170 | - handlerRecord(driverScheduling, signIn, index,isNew); | 160 | + changeScheduling(driverScheduling,signIn,remark,index,isNew); |
| 161 | + }else{ | ||
| 162 | + SignIn sourceSign = signInService.selectSignInById(driverScheduling.getSignInId()); | ||
| 163 | + if(Objects.isNull(sourceSign)){ | ||
| 164 | + changeScheduling(driverScheduling,signIn,remark,index,isNew); | ||
| 165 | + }else if(bigViewServiceV1.isEarly(sourceSign) && bigViewServiceV1.isNormal(signIn)){ | ||
| 166 | + //第一次是早签,第二次正常签到,覆盖原来的数据。 | ||
| 167 | + changeScheduling(driverScheduling,signIn,remark,index,isNew); | ||
| 168 | + }else if(bigViewServiceV1.isNormal(sourceSign) && bigViewServiceV1.isSignStatusWineEnum(signIn)){ | ||
| 169 | + //第一次正常签到,第二次酒驾,覆盖原来的数据。 | ||
| 170 | + changeScheduling(driverScheduling,signIn,remark,index,isNew); | ||
| 171 | + }else if(!bigViewServiceV1.isEarly(sourceSign) && !bigViewServiceV1.isSignStatusDelayEnum(sourceSign) && | ||
| 172 | + !bigViewServiceV1.isSignStatusWineEnum(sourceSign) && bigViewServiceV1.isSignStatusWineEnum(signIn)){ | ||
| 173 | + //第一次正常签到,第二次酒驾,覆盖原来的数据。 | ||
| 174 | + changeScheduling(driverScheduling,signIn,remark,index,isNew); | ||
| 175 | + }else if(!bigViewServiceV1.isEarly(sourceSign) && !bigViewServiceV1.isSignStatusDelayEnum(sourceSign) && | ||
| 176 | + bigViewServiceV1.isSignStatusWineEnum(sourceSign) && bigViewServiceV1.isNormal(signIn)){ | ||
| 177 | + //第一次在签到时间范围内签到且酒驾,第二次正常,覆盖原来的数据。 | ||
| 178 | + changeScheduling(driverScheduling,signIn,remark,index,isNew); | ||
| 179 | + }else if(bigViewServiceV1.isSignStatusDelayEnum(sourceSign) && bigViewServiceV1.isSignStatusWineEnum(sourceSign) ){ | ||
| 180 | + //第一次迟到签到且酒驾,第二次测试覆盖原来的数据。 | ||
| 181 | + changeScheduling(driverScheduling,signIn,remark,index,isNew); | ||
| 182 | + }else{ | ||
| 183 | + handlerRecord(driverScheduling, signIn, index, isNew); | ||
| 184 | + } | ||
| 171 | } | 185 | } |
| 172 | 186 | ||
| 173 | } | 187 | } |
| 174 | 188 | ||
| 175 | - private void handlerRecord(DriverScheduling scheduling, SignIn signIn, Integer index,boolean isNew) { | 189 | + private void changeScheduling(DriverScheduling driverScheduling,SignIn signIn,String remark,Integer index,boolean isNew){ |
| 190 | + schedulingMapper.updateRoster(driverScheduling, signIn.getId(), signIn.getExType(), signIn.getCreateTime(), remark, signIn.getType(), signIn.getAlcoholFlag(), signIn.getAlcoholIntake()); | ||
| 191 | + // 更新缓存 | ||
| 192 | + nowSchedulingCache.updateCacheByJobCode(remark, ConstDateUtil.formatDate(driverScheduling.getScheduleDate()), index, signIn, isNew, driverScheduling); | ||
| 193 | + } | ||
| 194 | + | ||
| 195 | + private void handlerRecord(DriverScheduling scheduling, SignIn signIn, int index, boolean isNew) { | ||
| 176 | if (Objects.isNull(scheduling)) { | 196 | if (Objects.isNull(scheduling)) { |
| 177 | return; | 197 | return; |
| 178 | } | 198 | } |
| @@ -193,10 +213,10 @@ public class SchedulingService { | @@ -193,10 +213,10 @@ public class SchedulingService { | ||
| 193 | } | 213 | } |
| 194 | 214 | ||
| 195 | 215 | ||
| 196 | - String remark = getRemark(scheduling, signIn); | 216 | +// String remark = getRemark(scheduling, signIn); |
| 197 | signInMapper.updateSignIn(signIn); | 217 | signInMapper.updateSignIn(signIn); |
| 198 | - schedulingMapper.updateRoster(scheduling, signIn.getId(), signIn.getExType(), signIn.getCreateTime(), remark, signIn.getType(), signIn.getAlcoholFlag(), signIn.getAlcoholIntake()); | ||
| 199 | - nowSchedulingCache.updateCacheByJobCode(remark, ConstDateUtil.formatDate(scheduling.getScheduleDate()), index, signIn,isNew,scheduling); | 218 | + // schedulingMapper.updateRoster(scheduling, signIn.getId(), signIn.getExType(), signIn.getCreateTime(), remark, signIn.getType(), signIn.getAlcoholFlag(), signIn.getAlcoholIntake()); |
| 219 | + // nowSchedulingCache.updateCacheByJobCode(remark, ConstDateUtil.formatDate(scheduling.getScheduleDate()), index, signIn, isNew, scheduling); | ||
| 200 | } | 220 | } |
| 201 | 221 | ||
| 202 | 222 | ||
| @@ -221,7 +241,7 @@ public class SchedulingService { | @@ -221,7 +241,7 @@ public class SchedulingService { | ||
| 221 | sb.append("," + signIn.getRemark().substring(index)); | 241 | sb.append("," + signIn.getRemark().substring(index)); |
| 222 | } | 242 | } |
| 223 | } | 243 | } |
| 224 | - return sb.toString(); | 244 | + return StringUtils.isEmpty(sb.toString()) ? "正常" : sb.toString(); |
| 225 | } | 245 | } |
| 226 | 246 | ||
| 227 | private String getRemark(DriverScheduling scheduling, SignIn signIn) { | 247 | private String getRemark(DriverScheduling scheduling, SignIn signIn) { |
| @@ -230,16 +250,15 @@ public class SchedulingService { | @@ -230,16 +250,15 @@ public class SchedulingService { | ||
| 230 | sb.append(EARLY); | 250 | sb.append(EARLY); |
| 231 | } else if (bigViewServiceV1.isSignStatusDelayEnum(signIn)) { | 251 | } else if (bigViewServiceV1.isSignStatusDelayEnum(signIn)) { |
| 232 | sb.append(SIGN_STATUS_DELAY_ENUM.getDescription(scheduling.getBcType())); | 252 | sb.append(SIGN_STATUS_DELAY_ENUM.getDescription(scheduling.getBcType())); |
| 233 | - } else { | 253 | + } else if (StringUtils.isNotEmpty(signIn.getRemark())) { |
| 234 | sb.append(signIn.getRemark()); | 254 | sb.append(signIn.getRemark()); |
| 235 | } | 255 | } |
| 236 | - | ||
| 237 | if (bigViewServiceV1.isSignStatusWineEnum(signIn) && StringUtils.isNotEmpty(signIn.getRemark())) { | 256 | if (bigViewServiceV1.isSignStatusWineEnum(signIn) && StringUtils.isNotEmpty(signIn.getRemark())) { |
| 238 | - if(StringUtils.indexOf(scheduling.getRemark(),signIn.getRemark()) > -1){ | 257 | + if (StringUtils.indexOf(scheduling.getRemark(), signIn.getRemark()) > -1) { |
| 239 | return scheduling.getRemark(); | 258 | return scheduling.getRemark(); |
| 240 | } | 259 | } |
| 241 | 260 | ||
| 242 | - if(StringUtils.indexOf(sb.toString(),signIn.getRemark()) > -1){ | 261 | + if (StringUtils.indexOf(sb.toString(), signIn.getRemark()) > -1) { |
| 243 | return sb.toString(); | 262 | return sb.toString(); |
| 244 | } | 263 | } |
| 245 | int index = signIn.getRemark().indexOf(ALCOHOL_SIGN_IN_ERROR); | 264 | int index = signIn.getRemark().indexOf(ALCOHOL_SIGN_IN_ERROR); |
| @@ -247,7 +266,7 @@ public class SchedulingService { | @@ -247,7 +266,7 @@ public class SchedulingService { | ||
| 247 | sb.append("," + signIn.getRemark().substring(index)); | 266 | sb.append("," + signIn.getRemark().substring(index)); |
| 248 | } | 267 | } |
| 249 | } | 268 | } |
| 250 | - return sb.toString(); | 269 | + return StringUtils.isEmpty(sb.toString()) ? "正常" : sb.toString(); |
| 251 | } | 270 | } |
| 252 | 271 | ||
| 253 | 272 | ||
| @@ -288,7 +307,7 @@ public class SchedulingService { | @@ -288,7 +307,7 @@ public class SchedulingService { | ||
| 288 | String remark = getRemark(dto, signIn, index); | 307 | String remark = getRemark(dto, signIn, index); |
| 289 | signInMapper.updateSignIn(signIn); | 308 | signInMapper.updateSignIn(signIn); |
| 290 | schedulingMapper.updateRoster(scheduling, signIn.getId(), signIn.getExType(), signIn.getCreateTime(), remark, signIn.getType(), signIn.getAlcoholFlag(), signIn.getAlcoholIntake()); | 309 | schedulingMapper.updateRoster(scheduling, signIn.getId(), signIn.getExType(), signIn.getCreateTime(), remark, signIn.getType(), signIn.getAlcoholFlag(), signIn.getAlcoholIntake()); |
| 291 | - nowSchedulingCache.updateCacheByJobCode(remark, ConstDateUtil.formatDate(dto.get(0).getScheduleDate()), globalIndex.getIndex() + 1, signIn,false,scheduling); | 310 | + nowSchedulingCache.updateCacheByJobCode(remark, ConstDateUtil.formatDate(dto.get(0).getScheduleDate()), globalIndex.getIndex() + 1, signIn, false, scheduling); |
| 292 | } | 311 | } |
| 293 | 312 | ||
| 294 | private Integer bcTypeTransform(String bcType) { | 313 | private Integer bcTypeTransform(String bcType) { |
Bsth-admin/src/main/java/com/ruoyi/service/impl/BigViewServiceV1Impl.java
| @@ -186,6 +186,11 @@ public class BigViewServiceV1Impl implements BigViewServiceV1 { | @@ -186,6 +186,11 @@ public class BigViewServiceV1Impl implements BigViewServiceV1 { | ||
| 186 | return null; | 186 | return null; |
| 187 | } | 187 | } |
| 188 | 188 | ||
| 189 | + @Override | ||
| 190 | + public boolean isNormal(SignIn signIn) { | ||
| 191 | + return Objects.nonNull(signIn) && Objects.equals(signIn.getExType(), 0); | ||
| 192 | + } | ||
| 193 | + | ||
| 189 | 194 | ||
| 190 | @Override | 195 | @Override |
| 191 | public boolean isEarly(SignIn signIn) { | 196 | public boolean isEarly(SignIn signIn) { |
| @@ -195,7 +200,7 @@ public class BigViewServiceV1Impl implements BigViewServiceV1 { | @@ -195,7 +200,7 @@ public class BigViewServiceV1Impl implements BigViewServiceV1 { | ||
| 195 | 200 | ||
| 196 | @Override | 201 | @Override |
| 197 | public boolean isSignStatusWineEnum(SignIn signIn) { | 202 | public boolean isSignStatusWineEnum(SignIn signIn) { |
| 198 | - return Objects.nonNull(signIn) && (Objects.equals(3, signIn.getExType()) || Objects.equals(23, signIn.getExType()) || Objects.equals(33, signIn.getExType())); | 203 | + return Objects.nonNull(signIn) && Objects.nonNull(signIn.getExType()) && signIn.getExType() % 10 == 3; |
| 199 | } | 204 | } |
| 200 | 205 | ||
| 201 | 206 | ||
| @@ -206,7 +211,7 @@ public class BigViewServiceV1Impl implements BigViewServiceV1 { | @@ -206,7 +211,7 @@ public class BigViewServiceV1Impl implements BigViewServiceV1 { | ||
| 206 | 211 | ||
| 207 | @Override | 212 | @Override |
| 208 | public boolean isSignStatusZoneEnum(SignIn signIn) { | 213 | public boolean isSignStatusZoneEnum(SignIn signIn) { |
| 209 | - return Objects.nonNull(signIn) && Objects.equals(0, signIn.getExType()); | 214 | + return !isSignStatusWineEnum(signIn); |
| 210 | } | 215 | } |
| 211 | 216 | ||
| 212 | @Override | 217 | @Override |
Bsth-admin/src/main/resources/mapper/in/SignInMapper.xml
| @@ -36,6 +36,7 @@ | @@ -36,6 +36,7 @@ | ||
| 36 | <result property="updateTime" column="update_time"/> | 36 | <result property="updateTime" column="update_time"/> |
| 37 | <result property="alcoholIntake" column="alcohol_intake"/> | 37 | <result property="alcoholIntake" column="alcohol_intake"/> |
| 38 | <result property="remark" column="remark"/> | 38 | <result property="remark" column="remark"/> |
| 39 | + <result property="exType" column="ex_type"/> | ||
| 39 | </resultMap> | 40 | </resultMap> |
| 40 | 41 | ||
| 41 | <sql id="selectSignInVo"> | 42 | <sql id="selectSignInVo"> |
| @@ -52,7 +53,8 @@ | @@ -52,7 +53,8 @@ | ||
| 52 | type, | 53 | type, |
| 53 | update_time, | 54 | update_time, |
| 54 | alcohol_intake, | 55 | alcohol_intake, |
| 55 | - remark | 56 | + remark, |
| 57 | + ex_type | ||
| 56 | from sign_in | 58 | from sign_in |
| 57 | </sql> | 59 | </sql> |
| 58 | 60 |
Bsth-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
| 1 | package com.ruoyi.common.utils; | 1 | package com.ruoyi.common.utils; |
| 2 | 2 | ||
| 3 | +import org.apache.commons.lang3.time.DateFormatUtils; | ||
| 4 | +import org.apache.commons.lang3.time.FastDateFormat; | ||
| 5 | + | ||
| 3 | import java.lang.management.ManagementFactory; | 6 | import java.lang.management.ManagementFactory; |
| 4 | import java.text.ParseException; | 7 | import java.text.ParseException; |
| 5 | import java.text.SimpleDateFormat; | 8 | import java.text.SimpleDateFormat; |
| 6 | -import java.time.LocalDate; | ||
| 7 | -import java.time.LocalDateTime; | ||
| 8 | -import java.time.LocalTime; | ||
| 9 | -import java.time.ZoneId; | ||
| 10 | -import java.time.ZonedDateTime; | 9 | +import java.time.*; |
| 11 | import java.util.Date; | 10 | import java.util.Date; |
| 12 | import java.util.Objects; | 11 | import java.util.Objects; |
| 13 | 12 | ||
| 14 | -import org.apache.commons.lang3.time.DateFormatUtils; | ||
| 15 | -import org.apache.commons.lang3.time.FastDateFormat; | ||
| 16 | - | ||
| 17 | /** | 13 | /** |
| 18 | * 时间工具类 | 14 | * 时间工具类 |
| 19 | * | 15 | * |
| @@ -36,7 +32,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { | @@ -36,7 +32,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { | ||
| 36 | "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", | 32 | "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", |
| 37 | "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; | 33 | "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; |
| 38 | 34 | ||
| 39 | - public static FastDateFormat FAST_YYYY_MM_DD = FastDateFormat.getInstance("yyyy-MM-DD"); | 35 | + public static FastDateFormat FAST_YYYY_MM_DD = FastDateFormat.getInstance("yyyy-MM-dd"); |
| 36 | + public static FastDateFormat FAST_YYYY_MM_DDHHMMSS = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss"); | ||
| 40 | 37 | ||
| 41 | /** | 38 | /** |
| 42 | * 获取当前Date型日期 | 39 | * 获取当前Date型日期 |