From 645da5e4e48dd94b760ea4dcbf80e22bf2a3f33c Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期六, 11 一月 2025 17:20:08 +0800 Subject: [PATCH] #添加播种站点功能 --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java | 90 ++++++++++++++++++++++++++++++++++++-------- 1 files changed, 73 insertions(+), 17 deletions(-) diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java index fb9cc2e..0d6e371 100644 --- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java +++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java @@ -1,6 +1,7 @@ package com.zy.asrs.wms.asrs.timer; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy; import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper; import com.zy.asrs.framework.exception.CoolException; @@ -8,15 +9,21 @@ import com.zy.asrs.wms.asrs.entity.enums.LocStsType; import com.zy.asrs.wms.asrs.entity.enums.TaskStsType; import com.zy.asrs.wms.asrs.service.*; +import io.jsonwebtoken.lang.Collections; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import java.util.Collection; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +@Slf4j @Component public class TaskTimer { @@ -56,9 +63,12 @@ @Autowired private OrderDetlService orderDetlService; + @Autowired + private CacheSiteService cacheSiteService; -// @Scheduled(cron = "0/3 * * * * ? ") - @Transactional + + @Scheduled(cron = "0/3 * * * * ? ") + @Transactional(rollbackFor = Exception.class) public void inExecute() { InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build()); try { @@ -98,8 +108,30 @@ } } -// @Scheduled(cron = "0/3 * * * * ? ") - @Transactional + + /** + * 1. 瀹氭椂鎷夊彇闇�瑕佹墽琛屽洖搴撲换鍔″垪琛ㄦ暟鎹紝 + * 2. 鍒犻櫎鍘熷搴撲綅鏄庣粏锛屽師濮嬪簱浣嶇姸鎬佺疆鎴怬.绌哄簱 + * 3. + */ + @Scheduled(cron = "0/3 * * * * ? ") + @Transactional(rollbackFor = Exception.class) + public void rollbackStock() { + //鑾峰彇闇�瑕佹墽琛屽洖搴撶殑浠诲姟锛屾洿鏂板簱瀛樹俊鎭� + List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskType, 53).eq(Task::getTaskSts, TaskStsType.WCS_CONVEYOR_START.id)); + if (tasks.isEmpty()) { + return; + } + tasks.forEach(task -> { + //鍒犻櫎鍘熷搴撲綅鏄庣粏锛岀姸鎬佺疆涓篛.绌哄簱 + executeTask103(task); + }); + //todo 闇�娣诲姞涓�涓换鍔$姸鎬佹垨涓存椂鐘舵�侊紝鍚﹀垯浼氫竴鐩磋疆寰紝绋嬪簭鎶ラ敊锛堝簱浣嶇姸鎬佷笉澶勪簬R.鍑哄簱棰勭害锛� + } + + + @Scheduled(cron = "0/10 * * * * ? ") + @Transactional(rollbackFor = Exception.class) public void outExecute() { InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build()); try { @@ -111,7 +143,7 @@ for (Task task : list) { //鍚屾鏁版嵁 switch (task.getTaskType().intValue()) { - case 101://鍑哄簱 + case 101://鍑哄簱xx executeTask101(task); break; case 103://鎷f枡 @@ -120,13 +152,24 @@ default: throw new CoolException("鏈煡浠诲姟绫诲瀷"); } - task.setTaskSts(TaskStsType.UPDATED_OUT.id);//200.搴撳瓨鏇存柊瀹屾垚 if (!taskService.updateById(task)) { throw new CoolException("搴撳瓨鏇存柊澶辫触"); + } else { + //CacheSite 閲婃斁宸茶鍗犵敤鐨勯�氶亾 //fixme 鎾鍔熻兘瀹屾垚鍚庯紝闇�瑕佸皢杩欓噷娉ㄩ噴鎺� +// List<TaskDetl> detls = taskDetlService.list(new LambdaQueryWrapper<TaskDetl>().eq(TaskDetl::getTaskId, task.getId())); +// if (!Collections.isEmpty(detls)) { +// List<Long> waveIds = detls.stream().map(TaskDetl::getWaveId).collect(Collectors.toList()); +// List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getWaveId, waveIds)); +// List<Long> orderIds = orders.stream().map(Order::getId).collect(Collectors.toList()); +// cacheSiteService.update(new LambdaUpdateWrapper<CacheSite>() +// .in(CacheSite::getOrderId, orderIds) +// .set(CacheSite::getSiteStatus, 0) +// .set(CacheSite::getOrderId, null) +// .set(CacheSite::getOrderNo, null)); +// } } } - } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -138,7 +181,6 @@ //鍏ュ簱 private void executeTask1(Task task) { Long hostId = task.getHostId(); - Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()).eq(Loc::getHostId, hostId)); if (loc == null) { throw new CoolException("搴撲綅涓嶅瓨鍦�"); @@ -174,9 +216,10 @@ if (!locDetlService.save(locDetl)) { throw new CoolException("鎻掑叆搴撳瓨鏄庣粏澶辫触"); } - + //fixme 鏆傛椂鍏抽棴HOSTID,鍚庣画鎵撳紑鏈烘瀯ID //娣诲姞搴撳瓨鏄庣粏鎵╁睍瀛楁 - List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId()).eq(TaskDetlField::getHostId, hostId)); +// List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId()).eq(TaskDetlField::getHostId, hostId)); + List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId())); for (TaskDetlField detlField : detlFields) { LocDetlField locDetlField = new LocDetlField(); locDetlField.setDetlId(locDetl.getId()); @@ -189,15 +232,17 @@ } } } - + //fixme 鏆傛椂鍏抽棴HOSTID,鍚庣画鎵撳紑鏈烘瀯ID //缁勬墭閫氱煡妗h浆鍘嗗彶妗� - List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, task.getBarcode()).eq(WaitPakin::getHostId, hostId)); +// List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, task.getBarcode()).eq(WaitPakin::getHostId, hostId)); + List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, task.getBarcode())); if (waitPakins.isEmpty()) { throw new CoolException("缁勬墭閫氱煡妗d笉瀛樺湪"); } for (WaitPakin waitPakin : waitPakins) { WaitPakinLog waitPakinLog = new WaitPakinLog(); waitPakinLog.sync(waitPakin); + waitPakinLog.setId(null); if (!waitPakinLogService.save(waitPakinLog)) { throw new CoolException("缁勬墭閫氱煡妗h浆鍘嗗彶妗eけ璐�"); } @@ -289,11 +334,16 @@ } + /** + * 鎷f枡鍐嶅叆搴擄紝鏍规嵁浠诲姟鐩爣搴撲綅锛岀敓鎴愭柊搴撳瓨淇℃伅 + * @param task + */ //鎷f枡鍐嶅叆搴� private void executeTask53(Task task) { Long hostId = task.getHostId(); - - Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()).eq(Loc::getHostId, hostId)); + //fixme 灏嗕换鍔″綋鍓� +// Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()).eq(Loc::getHostId, hostId)); + Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc())); if (loc == null) { throw new CoolException("搴撲綅涓嶅瓨鍦�"); } @@ -335,7 +385,9 @@ } //娣诲姞搴撳瓨鏄庣粏鎵╁睍瀛楁 - List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId()).eq(TaskDetlField::getHostId, hostId)); + //fixme 娉ㄩ噴 +// List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId()).eq(TaskDetlField::getHostId, hostId)); + List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId())); for (TaskDetlField detlField : detlFields) { LocDetlField locDetlField = new LocDetlField(); locDetlField.setDetlId(locDetl.getId()); @@ -353,7 +405,8 @@ //鍑哄簱 private void executeTask101(Task task) { Long hostId = task.getHostId(); - Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc()).eq(Loc::getHostId, hostId)); +// Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc()).eq(Loc::getHostId, hostId)); + Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc())); if (loc == null) { throw new CoolException("搴撲綅涓嶅瓨鍦�"); } @@ -388,7 +441,9 @@ //鎷f枡鍑哄簱 private void executeTask103(Task task) { Long hostId = task.getHostId(); - Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc()).eq(Loc::getHostId, hostId)); + //FIXME 鏆傛椂娉ㄩ噴HOSTID绛涢�夋潯浠� +// Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc()).eq(Loc::getHostId, hostId)); + Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc())); if (loc == null) { throw new CoolException("搴撲綅涓嶅瓨鍦�"); } @@ -405,6 +460,7 @@ if (!locService.updateById(loc)) { throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�"); } + List<LocDetl> detlList = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocId, loc.getId()).eq(LocDetl::getHostId, hostId)); //鍒犻櫎搴撳瓨鏄庣粏 for (LocDetl locDetl : detlList) { -- Gitblit v1.9.1