From 60fdc9564c65b90a8911ff10a25f3f3a63d3812c Mon Sep 17 00:00:00 2001 From: pjb <123456> Date: 星期五, 20 六月 2025 11:06:27 +0800 Subject: [PATCH] 出库任务历史档优化 --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java | 77 +++++++++++++++++++++----------------- 1 files changed, 43 insertions(+), 34 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 066aa6b..597148b 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 @@ -9,23 +9,22 @@ 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.slf4j.Logger; +import org.slf4j.LoggerFactory; 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 { + public static Logger logger = LoggerFactory.getLogger(TaskTimer.class); @Autowired private TaskService taskService; @@ -67,6 +66,9 @@ private CacheSiteService cacheSiteService; + /** + * 鍏ュ簱鎵ц浠诲姟 + */ @Scheduled(cron = "0/3 * * * * ? ") @Transactional(rollbackFor = Exception.class) public void inExecute() { @@ -88,6 +90,7 @@ executeTask11(task); break; case 53://鎷f枡鍐嶅叆搴� + case 57: executeTask53(task); break; default: @@ -110,11 +113,12 @@ /** + * // fixme 鑸嶅純 * 1. 瀹氭椂鎷夊彇闇�瑕佹墽琛屽洖搴撲换鍔″垪琛ㄦ暟鎹紝 * 2. 鍒犻櫎鍘熷搴撲綅鏄庣粏锛屽師濮嬪簱浣嶇姸鎬佺疆鎴怬.绌哄簱 * 3. */ - @Scheduled(cron = "0/3 * * * * ? ") +// @Scheduled(cron = "0/3 * * * * ? ") @Transactional(rollbackFor = Exception.class) public void rollbackStock() { //鑾峰彇闇�瑕佹墽琛屽洖搴撶殑浠诲姟锛屾洿鏂板簱瀛樹俊鎭� @@ -147,6 +151,7 @@ executeTask101(task); break; case 103://鎷f枡 + case 107: executeTask103(task); break; default: @@ -323,11 +328,10 @@ * @param task */ //鎷f枡鍐嶅叆搴� - private void executeTask53(Task task) { + @Transactional(rollbackFor = Exception.class) + public void executeTask53(Task task) { Long hostId = task.getHostId(); - //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("搴撲綅涓嶅瓨鍦�"); } @@ -339,6 +343,7 @@ loc.setLocStsId(LocStsType.F.val()); loc.setUpdateTime(new Date()); loc.setBarcode(task.getBarcode()); + if (!locService.updateById(loc)) { throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�"); } @@ -348,37 +353,35 @@ throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�"); } - //娣诲姞搴撳瓨鏄庣粏 + //淇敼搴撳瓨鏄庣粏 for (TaskDetl taskDetl : taskDetls) { double anfme = taskDetl.getStock() - taskDetl.getAnfme(); if (anfme <= 0) { - continue; - } + LocDetl locdetl = locDetlService.getOne(new LambdaQueryWrapper<LocDetl>() + .eq(LocDetl::getLocId, loc.getId()) + .eq(LocDetl::getBatch, taskDetl.getBatch()) + .eq(LocDetl::getMatId, taskDetl.getMatId())); - LocDetl locDetl = new LocDetl(); - locDetl.setLocId(loc.getId()); - locDetl.setLocNo(loc.getLocNo()); - locDetl.setMatId(taskDetl.getMatId()); - locDetl.setMatnr(taskDetl.getMat$().getMatnr()); - locDetl.setOrderNo(taskDetl.getOrderNo()); - locDetl.setBatch(taskDetl.getBatch()); - locDetl.setAnfme(anfme); - locDetl.setHostId(hostId); - if (!locDetlService.save(locDetl)) { - throw new CoolException("鎻掑叆搴撳瓨鏄庣粏澶辫触"); - } + List<LocDetlField> detlFields = locDetlFieldService.list(new LambdaQueryWrapper<LocDetlField>().eq(LocDetlField::getDetlId, locdetl.getId()).eq(LocDetlField::getHostId, hostId)); + if (!detlFields.isEmpty()) { + if (!locDetlFieldService.removeBatchByIds(detlFields)) { + throw new CoolException("鍒犻櫎鏄庣粏鎵╁睍瀛楁澶辫触"); + } + } - //娣诲姞搴撳瓨鏄庣粏鎵╁睍瀛楁 - List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId()).eq(TaskDetlField::getHostId, hostId)); - for (TaskDetlField detlField : detlFields) { - LocDetlField locDetlField = new LocDetlField(); - locDetlField.setDetlId(locDetl.getId()); - locDetlField.setFieldId(detlField.getFieldId()); - locDetlField.setName(detlField.getName()); - locDetlField.setValue(detlField.getValue()); - locDetlField.setHostId(hostId); - if (!locDetlFieldService.save(locDetlField)) { - throw new CoolException("鎻掑叆鏄庣粏鎵╁睍瀛楁澶辫触"); + if (!locDetlService.removeById(locdetl)) { + throw new CoolException("搴撳瓨鏄庣粏鍒犻櫎澶辫触!!"); + } + } else { + LocDetl locdetl = locDetlService.getOne(new LambdaQueryWrapper<LocDetl>() + .eq(LocDetl::getLocId, loc.getId()) + .eq(LocDetl::getBatch, taskDetl.getBatch()) + .eq(LocDetl::getMatId, taskDetl.getMatId())); + locdetl.setWorkQty(0.0); + locdetl.setAnfme(anfme); + + if (!locDetlService.updateById(locdetl)) { + throw new CoolException("搴撳瓨鏄庣粏鏇存柊澶辫触锛侊紒"); } } } @@ -393,6 +396,7 @@ throw new CoolException("搴撲綅涓嶅瓨鍦�"); } if (loc.getLocStsId() != LocStsType.R.val()) { + logger.error("搴撲綅锛�" + loc.getLocNo() + "锛岀姸鎬佷笉澶勪簬R.鍑哄簱棰勭害"); throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬R.鍑哄簱棰勭害"); } List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId()); @@ -420,6 +424,11 @@ } } + /** + * 灏嗗師鏈夊簱瀛樻槑缁嗗垹闄� + * 搴撳瓨鐘舵�佽缃负绌哄簱鐘舵�� + * @param task + */ //鎷f枡鍑哄簱 private void executeTask103(Task task) { Long hostId = task.getHostId(); -- Gitblit v1.9.1