Commit 8ca0bcc3df4709073ed4100670eb4a88ef670b32

Authored by liujun001
1 parent e12f6a7c

优化导入数据

Bsth-admin/src/main/java/com/ruoyi/domain/key/location/LinggangKeyWorkLocation.java
... ... @@ -122,6 +122,15 @@ public class LinggangKeyWorkLocation {
122 122 @TableField(exist = false)
123 123 private Collection<Integer> keyInfoIds;
124 124  
  125 + public boolean importEquals(LinggangKeyWorkLocation location) {
  126 + if (Objects.isNull(location)) {
  127 + return false;
  128 + }
  129 +
  130 + return Objects.equals(this.yardId, location.getYardId()) && Objects.equals(this.device, location.getDevice()) && Objects.equals(this.keyInfoId, location.getKeyInfoId())
  131 + && Objects.equals(this.scheduleDate, location.getScheduleDate()) && Objects.equals(this.schedulingId, location.getSchedulingId()) && Objects.equals(this.type, location.getType());
  132 + }
  133 +
125 134  
126 135 public enum LinggangKeyWorkLocationEventTypeEnum {
127 136 TAKE_OUT(0, "取出"),
... ... @@ -167,7 +176,7 @@ public class LinggangKeyWorkLocation {
167 176 TAKE_OUT(0, "取出"),
168 177  
169 178 REPAY(1, "归还"),
170   -
  179 +
171 180 ;
172 181  
173 182 private String label;
... ...
Bsth-admin/src/main/java/com/ruoyi/domain/scheduling/LinggangScheduling.java
... ... @@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j;
12 12 import org.apache.commons.lang3.StringUtils;
13 13  
14 14 import java.util.Date;
  15 +import java.util.Objects;
15 16  
16 17  
17 18 @Data
... ... @@ -163,7 +164,16 @@ public class LinggangScheduling {
163 164 }
164 165  
165 166  
166   -
  167 + public boolean importEqus(LinggangScheduling linggangScheduling){
  168 + if(Objects.isNull(linggangScheduling)){
  169 + return false;
  170 + }
  171 + return Objects.equals(this.getScheduleDate(),linggangScheduling.getScheduleDate()) && Objects.equals(this.lineName,linggangScheduling.getLineName())
  172 + && Objects.equals(this.jobCode,linggangScheduling.getJobCode()) && Objects.equals(this.name,linggangScheduling.getName()) && Objects.equals(this.posts,linggangScheduling.getPosts())
  173 + && Objects.equals(this.lpName,linggangScheduling.getLpName()) && Objects.equals(this.nbbm,linggangScheduling.getNbbm()) && Objects.equals(this.getBcType(),linggangScheduling.getBcType())
  174 + && Objects.equals(this.fcsjT,linggangScheduling.getFcsjT()) && Objects.equals(this.zdsjT,linggangScheduling.getZdsjT()) && Objects.equals(this.qdzcode,linggangScheduling.getQdzcode())
  175 + && Objects.equals(this.zdzcode,linggangScheduling.getZdzcode());
  176 + }
167 177  
168 178 @Override
169 179 public String toString() {
... ...
Bsth-admin/src/main/java/com/ruoyi/job/DriverJob.java
... ... @@ -8,7 +8,6 @@ import com.ruoyi.common.cache.NowSchedulingCache;
8 8 import com.ruoyi.common.cache.SchedulingCache;
9 9 import com.ruoyi.common.core.redis.RedisCache;
10 10 import com.ruoyi.common.utils.StringUtils;
11   -import com.ruoyi.common.utils.spring.SpringUtils;
12 11 import com.ruoyi.domain.scheduling.LinggangScheduling;
13 12 import com.ruoyi.driver.domain.Driver;
14 13 import com.ruoyi.driver.service.IDriverService;
... ... @@ -282,15 +281,7 @@ public class DriverJob implements InitializingBean {
282 281 idSets = linggangSchedulings.stream().map(LinggangScheduling::getId).collect(Collectors.toSet());
283 282 }
284 283  
285   - scheduling.setType(type);
286   - if(Objects.isNull(schedulingService)){
287   - schedulingService = SpringUtils.getBean(LinggangSchedulingService.class);
288   - }
289   - Integer count = schedulingService.countId(scheduling);
290   - if (Objects.nonNull(count) && count > 0) {
291   - log.info("[{}]排班数据已经存在:[{}]", date,count);
292   - return;
293   - }
  284 +
294 285  
295 286  
296 287  
... ...
Bsth-admin/src/main/java/com/ruoyi/service/ThreadJobService.java
... ... @@ -42,7 +42,6 @@ import com.ruoyi.utils.ConstDateUtil;
42 42 import com.ruoyi.utils.DateUtil;
43 43 import lombok.extern.slf4j.Slf4j;
44 44 import org.apache.commons.collections4.CollectionUtils;
45   -import org.apache.commons.collections4.MapUtils;
46 45 import org.springframework.beans.BeanUtils;
47 46 import org.springframework.beans.factory.annotation.Autowired;
48 47 import org.springframework.beans.factory.annotation.Value;
... ... @@ -417,24 +416,24 @@ public class ThreadJobService {
417 416 */
418 417 @Async
419 418 @Transactional(rollbackFor = {Exception.class})
420   - public synchronized void asyncComputedScheduling(Map<String, List<ResponseSchedulingDto>> originSchedulingMap, String timeOut, Date date, int type,Set<Long> idSets,String requestId) {
421   - JwtAuthenticationTokenFilter.putMDC("job",requestId);
422   - //查询当天是否保存过考情表 如果不存在则保存
  419 + public synchronized void asyncComputedScheduling(Map<String, List<ResponseSchedulingDto>> originSchedulingMap, String timeOut, Date date, int type, Set<Long> idSets, String requestId) {
  420 + JwtAuthenticationTokenFilter.putMDC("job", requestId);
  421 +// //查询当天是否保存过考情表 如果不存在则保存
423 422 List<DriverScheduling> bcList = schedulingMapper.queryToDay(DateUtil.YYYY_MM_DD_LINK.format(date), DateUtil.YYYY_MM_DD_LINK.format(org.apache.commons.lang3.time.DateUtils.addDays(date, 1)), null, null, null);
424   - Map<String, List<DriverScheduling>> dto = nowSchedulingCache.getCacheScheduling(ConstDateUtil.formatDate(date));
425   - if (CollectionUtils.isNotEmpty(bcList) && MapUtils.isEmpty(dto) && Objects.equals(1, type)) {
426   - String dateStr = DateUtil.YYYY_MM_DD.format(date);
427   - Map<String, List<DriverScheduling>> resultMap = new HashMap<>(800);
428   - NowSchedulingCache.handlerResultMap(resultMap, bcList);
429   - // 更新缓存
430   - nowSchedulingCache.setCacheScheduling(dateStr, resultMap);
431   - }
  423 +// Map<String, List<DriverScheduling>> dto = nowSchedulingCache.getCacheScheduling(ConstDateUtil.formatDate(date));
  424 +// if (CollectionUtils.isNotEmpty(bcList) && MapUtils.isEmpty(dto) && Objects.equals(1, type)) {
  425 +// String dateStr = DateUtil.YYYY_MM_DD.format(date);
  426 +// Map<String, List<DriverScheduling>> resultMap = new HashMap<>(800);
  427 +// NowSchedulingCache.handlerResultMap(resultMap, bcList);
  428 +// // 更新缓存
  429 +// nowSchedulingCache.setCacheScheduling(dateStr, resultMap);
  430 +// }
432 431  
433   - // 当天已有记录则不在保存 或者 调度记录为空则不在保存
434   - if ((CollectionUtil.isNotEmpty(dto) && CollectionUtil.isNotEmpty(bcList)) || originSchedulingMap.size() == 0) {
435   - log.info("调度最新数据:{},当天获取数据:{},时间:[{}]", originSchedulingMap.size(), bcList.size(), date);
436   - return;
437   - }
  432 +// // 当天已有记录则不在保存 或者 调度记录为空则不在保存
  433 +// if ((CollectionUtil.isNotEmpty(dto) && CollectionUtil.isNotEmpty(bcList)) || originSchedulingMap.size() == 0) {
  434 +// log.info("调度最新数据:{},当天获取数据:{},时间:[{}]", originSchedulingMap.size(), bcList.size(), date);
  435 +// return;
  436 +// }
438 437  
439 438 if (Objects.equals(1, type)) {
440 439 TempCache.resetMapStatus();
... ... @@ -504,7 +503,23 @@ public class ThreadJobService {
504 503 }
505 504 }
506 505  
507   - schedulingService.saveBatch(schedulings);
  506 + LinggangScheduling scheduling = new LinggangScheduling();
  507 + scheduling.setStartScheduleDate(DateUtil.shortDate(date));
  508 + scheduling.setEndScheduleDate(org.apache.commons.lang3.time.DateUtils.addDays(scheduling.getStartScheduleDate(), 1));
  509 +
  510 + scheduling.setType(type);
  511 +
  512 + List<LinggangScheduling> sourceList = schedulingService.list(scheduling);
  513 + if (CollectionUtils.isNotEmpty(sourceList)) {
  514 + schedulings = schedulings.stream().filter(s -> {
  515 + Optional<LinggangScheduling> opt = sourceList.stream().filter(s1 -> s1.importEqus(s)).findFirst();
  516 + return !opt.isPresent();
  517 + }).filter(s -> Objects.nonNull(s)).collect(Collectors.toList());
  518 + }
  519 +
  520 + if(CollectionUtils.isNotEmpty(schedulings)) {
  521 + schedulingService.saveBatch(schedulings);
  522 + }
508 523 }
509 524 String dateStr1 = DateUtil.YYYY_MM_DD_LINK.format(date);
510 525 // 异常数据过多,不通过自增获取id再次查询获取
... ... @@ -521,11 +536,14 @@ public class ThreadJobService {
521 536 // 插入错误排班
522 537 errorJobcodeService.insertBatchErrorJobcode(errorScheduling);
523 538 }
524   - if(CollectionUtils.isNotEmpty(idSets)) {
  539 + if (CollectionUtils.isNotEmpty(idSets)) {
525 540 keyWorkLocationService.removeBySchedulingId(idSets);
526 541 schedulingService.removeByIds(idSets);
527 542 }
528   - keyWorkLocationService.insertJob(dateStr1,schedulings,null);
  543 +
  544 + if(CollectionUtils.isNotEmpty(schedulings)) {
  545 + keyWorkLocationService.insertJob(dateStr1, schedulings, null);
  546 + }
529 547 log.info("当天排班数据获取完毕,共:{}条", bcList.size());
530 548 }
531 549  
... ...
Bsth-admin/src/main/java/com/ruoyi/service/impl/key/location/LinggangKeyWorkLocationServiceImpl.java
... ... @@ -292,24 +292,33 @@ public class LinggangKeyWorkLocationServiceImpl extends ServiceImpl&lt;LinggangKeyW
292 292  
293 293 @Override
294 294 @Transactional(rollbackFor = Exception.class)
295   - public synchronized boolean insertJob(String timeStr,List<LinggangScheduling> schedulings, Set<Long> schedulingIds) {
  295 + public synchronized boolean insertJob(String timeStr, List<LinggangScheduling> schedulings, Set<Long> schedulingIds) {
296 296 try {
297 297 removeBySchedulingId(schedulingIds);
298 298  
299 299 log.info("分配钥匙所存放的柜子:[{}]", timeStr);
300 300  
301 301 Date date = DateUtil.YYYY_MM_DD_LINK.parse(timeStr);
302   - LinggangKeyWorkLocation workLocation = new LinggangKeyWorkLocation();
303   - workLocation.setStartScheduleDate(date);
304   - workLocation.setEndScheduleDate(DateUtils.addDays(date, 1));
305   - Integer count = countId(workLocation);
306   - if (Objects.nonNull(count) && count > 0) {
307   - log.error("当天的数据已经存在:[{}];[{}]", timeStr, count);
308   - return false;
309   - }
310 302  
311   - List<LinggangKeyWorkLocation> locations = computeKeyLocal(date,schedulings);
  303 +// Integer count = countId(workLocation);
  304 +// if (Objects.nonNull(count) && count > 0) {
  305 +// log.error("当天的数据已经存在:[{}];[{}]", timeStr, count);
  306 +// return false;
  307 +// }
  308 +
  309 + List<LinggangKeyWorkLocation> locations = computeKeyLocal(date, schedulings);
312 310 if (CollectionUtils.isNotEmpty(locations)) {
  311 + LinggangKeyWorkLocation workLocation = new LinggangKeyWorkLocation();
  312 + workLocation.setStartScheduleDate(date);
  313 + workLocation.setEndScheduleDate(DateUtils.addDays(date, 1));
  314 + List<LinggangKeyWorkLocation> source = list(workLocation);
  315 + if (CollectionUtils.isNotEmpty(source)) {
  316 + locations = locations.stream().filter(l -> {
  317 + Optional<LinggangKeyWorkLocation> opt = source.stream().filter(s -> s.importEquals(l)).findFirst();
  318 + return !opt.isPresent();
  319 + }).collect(Collectors.toList());
  320 + }
  321 +
313 322 return saveBatch(locations);
314 323 }
315 324 return true;
... ... @@ -397,7 +406,7 @@ public class LinggangKeyWorkLocationServiceImpl extends ServiceImpl&lt;LinggangKeyW
397 406 if (CollectionUtils.isNotEmpty(workLocations)) {
398 407 Set<Long> ids = workLocations.stream().map(LinggangKeyWorkLocation::getId).collect(Collectors.toSet());
399 408 if (CollectionUtils.isNotEmpty(ids)) {
400   - return removeByIds(ids);
  409 + return removeByIds(ids);
401 410 }
402 411 }
403 412 }
... ... @@ -722,10 +731,10 @@ public class LinggangKeyWorkLocationServiceImpl extends ServiceImpl&lt;LinggangKeyW
722 731 return source;
723 732 }
724 733  
725   - private List<LinggangKeyWorkLocation> computeKeyLocal(Date date,List<LinggangScheduling> sourceSchedulings) {
  734 + private List<LinggangKeyWorkLocation> computeKeyLocal(Date date, List<LinggangScheduling> sourceSchedulings) {
726 735  
727 736  
728   - List<LinggangScheduling> schedulings = querySchedulingByTiime(date,sourceSchedulings);
  737 + List<LinggangScheduling> schedulings = querySchedulingByTiime(date, sourceSchedulings);
729 738 if (schedulings == null) return null;
730 739  
731 740 List<LinggangVenueInfo> venueInfos = queryVenueInfo(schedulings);
... ... @@ -817,10 +826,10 @@ public class LinggangKeyWorkLocationServiceImpl extends ServiceImpl&lt;LinggangKeyW
817 826 }).filter(obj -> Objects.nonNull(obj)).collect(Collectors.toList());
818 827 }
819 828  
820   - private List<LinggangScheduling> querySchedulingByTiime(Date date,List<LinggangScheduling> schedulings) {
821   - if(CollectionUtils.isNotEmpty(schedulings)){
822   - schedulings = schedulings.stream().filter(s->Objects.nonNull(s.getId())).collect(Collectors.toList());
823   - if(CollectionUtils.isNotEmpty(schedulings)) {
  829 + private List<LinggangScheduling> querySchedulingByTiime(Date date, List<LinggangScheduling> schedulings) {
  830 + if (CollectionUtils.isNotEmpty(schedulings)) {
  831 + schedulings = schedulings.stream().filter(s -> Objects.nonNull(s.getId())).collect(Collectors.toList());
  832 + if (CollectionUtils.isNotEmpty(schedulings)) {
824 833 return schedulings;
825 834 }
826 835 }
... ...