Commit e603dc0af1014a9a10ef8633df6622ad7e35e6de

Authored by liujun001
1 parent 71818d8d

新 的打卡日志

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&lt;SignInMapperV1, SignInV1&gt; i @@ -75,6 +76,8 @@ public class SignInServiceV1Impl extends ServiceImpl&lt;SignInMapperV1, SignInV1&gt; 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&lt;SignInMapperV1, SignInV1&gt; i @@ -142,7 +145,7 @@ public class SignInServiceV1Impl extends ServiceImpl&lt;SignInMapperV1, SignInV1&gt; 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&lt;SignInMapperV1, SignInV1&gt; i @@ -153,10 +156,11 @@ public class SignInServiceV1Impl extends ServiceImpl&lt;SignInMapperV1, SignInV1&gt; 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&lt;SignInMapperV1, SignInV1&gt; i @@ -256,16 +260,27 @@ public class SignInServiceV1Impl extends ServiceImpl&lt;SignInMapperV1, SignInV1&gt; 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&lt;SignInMapperV1, SignInV1&gt; i @@ -346,19 +361,26 @@ public class SignInServiceV1Impl extends ServiceImpl&lt;SignInMapperV1, SignInV1&gt; 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&lt;SchedulingMapperV1, Dri @@ -15,9 +18,25 @@ public class SchedulingServiceV1Impl extends ServiceImpl&lt;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&lt;SchedulingMapperV1, Dri @@ -25,7 +44,7 @@ public class SchedulingServiceV1Impl extends ServiceImpl&lt;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型日期