From c6c9b7d3baa822765768c110304d27623f946286 Mon Sep 17 00:00:00 2001
From: pjb <123456>
Date: 星期二, 15 七月 2025 14:29:09 +0800
Subject: [PATCH] `1`
---
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java | 703 ++++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 480 insertions(+), 223 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 4b78bed..daf22cf 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,223 +1,480 @@
-package com.zy.asrs.wms.asrs.timer;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy;
-import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
-import com.zy.asrs.framework.exception.CoolException;
-import com.zy.asrs.wms.asrs.entity.*;
-import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
-import com.zy.asrs.wms.asrs.service.*;
-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.Date;
-import java.util.List;
-
-@Component
-public class TaskTimer {
-
- @Autowired
- private TaskService taskService;
-
- @Autowired
- private TaskDetlService taskDetlService;
-
- @Autowired
- private TaskDetlFieldService taskDetlFieldService;
-
- @Autowired
- private LocService locService;
-
- @Autowired
- private LocDetlService locDetlService;
-
- @Autowired
- private LocDetlFieldService locDetlFieldService;
-
- @Autowired
- private WaitPakinService waitPakinService;
-
- @Autowired
- private WaitPakinLogService waitPakinLogService;
-
- @Autowired
- private TaskDetlLogService taskDetlLogService;
-
- @Autowired
- private TaskDetlFieldLogService taskDetlFieldLogService;
-
- @Autowired
- private OrderService orderService;
-
- @Autowired
- private OrderDetlService orderDetlService;
-
-
- @Scheduled(cron = "0/3 * * * * ? ")
- @Transactional
- public void inExecute() {
- InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
- try {
- //鑾峰彇鍏ュ簱瀹屾垚浠诲姟
- List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, 99));
- if (list.isEmpty()) {
- return;
- }
-
- for (Task task : list) {
- //鍚屾鏁版嵁
- Long hostId = task.getHostId();
- switch (task.getTaskType().intValue()) {
- case 1://鍏ュ簱
- Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()).eq(Loc::getHostId, hostId));
- if (loc == null) {
- throw new CoolException("搴撲綅涓嶅瓨鍦�");
- }
-
- if (loc.getLocStsId() != LocStsType.S.val()) {
- throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬S.鍏ュ簱棰勭害");
- }
-
- loc.setLocStsId(LocStsType.F.val());
- loc.setUpdateTime(new Date());
- loc.setBarcode(task.getBarcode());
- if (!locService.updateById(loc)) {
- throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
- }
-
-
- List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
- if (taskDetls.isEmpty()) {
- throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
- }
-
- //娣诲姞搴撳瓨鏄庣粏
- for (TaskDetl taskDetl : taskDetls) {
- 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(taskDetl.getAnfme());
- locDetl.setHostId(hostId);
- if (!locDetlService.save(locDetl)) {
- 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("鎻掑叆鏄庣粏鎵╁睍瀛楁澶辫触");
- }
- }
- }
-
- //缁勬墭閫氱煡妗h浆鍘嗗彶妗�
- List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, task.getBarcode()).eq(WaitPakin::getHostId, hostId));
- if (waitPakins.isEmpty()) {
- throw new CoolException("缁勬墭閫氱煡妗d笉瀛樺湪");
- }
- for (WaitPakin waitPakin : waitPakins) {
- WaitPakinLog waitPakinLog = new WaitPakinLog();
- waitPakinLog.sync(waitPakin);
- if (!waitPakinLogService.save(waitPakinLog)) {
- throw new CoolException("缁勬墭閫氱煡妗h浆鍘嗗彶妗eけ璐�");
- }
-
- //鍒犻櫎缁勬墭閫氱煡妗�
- waitPakinService.removeById(waitPakin.getId());
- }
-
- break;
- }
-
- task.setTaskSts(100L);//100.搴撳瓨鏇存柊瀹屾垚
- task.setUpdateTime(new Date());
- if (!taskService.updateById(task)) {
- throw new CoolException("搴撳瓨鏇存柊澶辫触");
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- } finally {
- InterceptorIgnoreHelper.clearIgnoreStrategy();
- }
- }
-
- @Scheduled(cron = "0/3 * * * * ? ")
- @Transactional
- public void outExecute() {
- InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
- try {
- //鑾峰彇鍑哄簱瀹屾垚浠诲姟
- List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, 199));
- if (list.isEmpty()) {
- return;
- }
- for (Task task : list) {
- //鍚屾鏁版嵁
- Long hostId = task.getHostId();
- Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc()).eq(Loc::getHostId, hostId));
- if (loc == null) {
- throw new CoolException("搴撲綅涓嶅瓨鍦�");
- }
- if (loc.getLocStsId() != LocStsType.R.val()) {
- throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬R.鍑哄簱棰勭害");
- }
- List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
- if (taskDetls.isEmpty()) {
- throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
- }
- switch (task.getTaskType().intValue()) {
- //鍑哄簱
- case 101:
- loc.setLocStsId(LocStsType.O.val());
- loc.setBarcode("");
- if (!locService.updateById(loc)) {
- throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
- }
- List<LocDetl> detlList = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo, loc.getId()).eq(LocDetl::getHostId, hostId));
- //鍒犻櫎搴撳瓨鏄庣粏
- for (LocDetl locDetl : detlList) {
- if (!locDetlService.removeById(locDetl)) {
- throw new CoolException("鍒犻櫎搴撳瓨鏄庣粏澶辫触");
- }
- List<LocDetlField> detlFields = locDetlFieldService.list(new LambdaQueryWrapper<LocDetlField>().eq(LocDetlField::getDetlId, locDetl.getId()).eq(LocDetlField::getHostId, hostId));
- for (LocDetlField detlField : detlFields) {
- if (!locDetlFieldService.removeById(detlField)) {
- throw new CoolException("鍒犻櫎鏄庣粏鎵╁睍瀛楁澶辫触");
- }
- }
- }
- break;
-
- }
-
- task.setTaskSts(200L);//200.搴撳瓨鏇存柊瀹屾垚
- if (!taskService.updateById(task)) {
- throw new CoolException("搴撳瓨鏇存柊澶辫触");
- }
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- } finally {
- InterceptorIgnoreHelper.clearIgnoreStrategy();
- }
- }
-
-}
+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;
+import com.zy.asrs.wms.asrs.entity.*;
+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 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.Date;
+import java.util.List;
+
+@Slf4j
+@Component
+public class TaskTimer {
+ public static Logger logger = LoggerFactory.getLogger(TaskTimer.class);
+
+ @Autowired
+ private TaskService taskService;
+
+ @Autowired
+ private TaskDetlService taskDetlService;
+
+ @Autowired
+ private TaskDetlFieldService taskDetlFieldService;
+
+ @Autowired
+ private LocService locService;
+
+ @Autowired
+ private LocDetlService locDetlService;
+
+ @Autowired
+ private LocDetlFieldService locDetlFieldService;
+
+ @Autowired
+ private WaitPakinService waitPakinService;
+
+ @Autowired
+ private WaitPakinLogService waitPakinLogService;
+
+ @Autowired
+ private TaskDetlLogService taskDetlLogService;
+
+ @Autowired
+ private TaskDetlFieldLogService taskDetlFieldLogService;
+
+ @Autowired
+ private OrderService orderService;
+
+ @Autowired
+ private OrderDetlService orderDetlService;
+
+ @Autowired
+ private CacheSiteService cacheSiteService;
+
+
+ /**
+ * 鍏ュ簱鎵ц浠诲姟
+ */
+ @Scheduled(cron = "0/3 * * * * ? ")
+ @Transactional(rollbackFor = Exception.class)
+ public void inExecute() {
+ InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
+ try {
+ //鑾峰彇鍏ュ簱瀹屾垚浠诲姟
+ List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, TaskStsType.COMPLETE_IN.id));
+ if (list.isEmpty()) {
+ return;
+ }
+
+ for (Task task : list) {
+ //鍚屾鏁版嵁
+ switch (task.getTaskType().intValue()) {
+ case 1://鍏ュ簱
+ executeTask1(task);
+ break;
+ case 11://搴撲綅绉昏浆
+ executeTask11(task);
+ break;
+ case 53://鎷f枡鍐嶅叆搴�
+ case 57:
+ executeTask53(task);
+ break;
+ default:
+ throw new CoolException("鏈煡浠诲姟绫诲瀷");
+ }
+
+ task.setTaskSts(TaskStsType.UPDATED_IN.id);//100.搴撳瓨鏇存柊瀹屾垚
+ task.setUpdateTime(new Date());
+ if (!taskService.updateById(task)) {
+ throw new CoolException("搴撳瓨鏇存柊澶辫触");
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ } finally {
+ InterceptorIgnoreHelper.clearIgnoreStrategy();
+ }
+ }
+
+
+ /**
+ * // fixme 鑸嶅純
+ * 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 {
+ //鑾峰彇鍑哄簱瀹屾垚浠诲姟
+ List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, TaskStsType.COMPLETE_OUT.id));
+ if (list.isEmpty()) {
+ return;
+ }
+ for (Task task : list) {
+ //鍚屾鏁版嵁
+ switch (task.getTaskType().intValue()) {
+ case 101://鍑哄簱xx
+ executeTask101(task);
+ break;
+ case 103://鎷f枡
+ case 107:
+ executeTask103(task);
+ break;
+ default:
+ throw new CoolException("鏈煡浠诲姟绫诲瀷");
+ }
+ task.setTaskSts(TaskStsType.UPDATED_OUT.id);//200.搴撳瓨鏇存柊瀹屾垚
+ if (!taskService.updateById(task)) {
+ throw new CoolException("搴撳瓨鏇存柊澶辫触");
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ } finally {
+ InterceptorIgnoreHelper.clearIgnoreStrategy();
+ }
+ }
+
+ //鍏ュ簱
+ 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("搴撲綅涓嶅瓨鍦�");
+ }
+
+ if (loc.getLocStsId() != LocStsType.S.val()) {
+ throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬S.鍏ュ簱棰勭害");
+ }
+
+ loc.setLocStsId(LocStsType.F.val());
+ loc.setUpdateTime(new Date());
+ loc.setBarcode(task.getBarcode());
+ if (!locService.updateById(loc)) {
+ throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
+ }
+
+ List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
+ if (taskDetls.isEmpty()) {
+ throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
+ }
+
+ //娣诲姞搴撳瓨鏄庣粏
+ for (TaskDetl taskDetl : taskDetls) {
+ 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(taskDetl.getAnfme());
+ locDetl.setHostId(hostId);
+ if (!locDetlService.save(locDetl)) {
+ 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("鎻掑叆鏄庣粏鎵╁睍瀛楁澶辫触");
+ }
+ }
+ }
+ //缁勬墭閫氱煡妗h浆鍘嗗彶妗�
+ List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, task.getBarcode()).eq(WaitPakin::getHostId, hostId));
+ 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け璐�");
+ }
+
+ //鍒犻櫎缁勬墭閫氱煡妗�
+ waitPakinService.removeById(waitPakin.getId());
+ }
+ }
+
+ //搴撲綅绉昏浆
+ private void executeTask11(Task task) {
+ Long hostId = task.getHostId();
+
+ Loc originLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc()).eq(Loc::getHostId, hostId));
+ if (originLoc == null) {
+ throw new CoolException("婧愬簱浣嶄笉瀛樺湪");
+ }
+
+ if (originLoc.getLocStsId() != LocStsType.R.val()) {
+ throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬R.鍑哄簱棰勭害");
+ }
+
+ Loc targetLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()).eq(Loc::getHostId, hostId));
+ if (targetLoc == null) {
+ throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦�");
+ }
+
+ if (targetLoc.getLocStsId() != LocStsType.S.val()) {
+ throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬S.鍏ュ簱棰勭害");
+ }
+
+ originLoc.setLocStsId(LocStsType.O.val());
+ originLoc.setUpdateTime(new Date());
+ originLoc.setBarcode("");
+ if (!locService.updateById(originLoc)) {
+ throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
+ }
+
+ targetLoc.setLocStsId(LocStsType.F.val());
+ targetLoc.setUpdateTime(new Date());
+ targetLoc.setBarcode(task.getBarcode());
+ if (!locService.updateById(targetLoc)) {
+ throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
+ }
+
+ List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
+ if (taskDetls.isEmpty()) {
+ throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
+ }
+
+ //娣诲姞搴撳瓨鏄庣粏
+ for (TaskDetl taskDetl : taskDetls) {
+ LocDetl locDetl = new LocDetl();
+ locDetl.setLocId(targetLoc.getId());
+ locDetl.setLocNo(targetLoc.getLocNo());
+ locDetl.setMatId(taskDetl.getMatId());
+ locDetl.setMatnr(taskDetl.getMat$().getMatnr());
+ locDetl.setOrderNo(taskDetl.getOrderNo());
+ locDetl.setBatch(taskDetl.getBatch());
+ locDetl.setAnfme(taskDetl.getAnfme());
+ locDetl.setHostId(hostId);
+ if (!locDetlService.save(locDetl)) {
+ 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("鎻掑叆鏄庣粏鎵╁睍瀛楁澶辫触");
+ }
+ }
+ }
+
+ List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocId, originLoc.getId()));
+ for (LocDetl locDetl : locDetls) {
+ boolean remove = locDetlFieldService.remove(new LambdaQueryWrapper<LocDetlField>().eq(LocDetlField::getDetlId, locDetl.getId()));
+ boolean result = locDetlService.removeById(locDetl.getId());
+ if (!result) {
+ throw new CoolException("娓呴櫎鏄庣粏澶辫触");
+ }
+ }
+
+ }
+
+ /**
+ * 鎷f枡鍐嶅叆搴擄紝鏍规嵁浠诲姟鐩爣搴撲綅锛岀敓鎴愭柊搴撳瓨淇℃伅
+ * @param task
+ */
+ //鎷f枡鍐嶅叆搴�
+ @Transactional(rollbackFor = Exception.class)
+ public void executeTask53(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("搴撲綅涓嶅瓨鍦�");
+ }
+
+ if (loc.getLocStsId() != LocStsType.S.val()) {
+ throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬S.鍏ュ簱棰勭害");
+ }
+
+ loc.setLocStsId(LocStsType.F.val());
+ loc.setUpdateTime(new Date());
+ loc.setBarcode(task.getBarcode());
+
+ if (!locService.updateById(loc)) {
+ throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
+ }
+
+ List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
+ if (taskDetls.isEmpty()) {
+ throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
+ }
+
+ //淇敼搴撳瓨鏄庣粏
+ for (TaskDetl taskDetl : taskDetls) {
+ double anfme = taskDetl.getStock() - taskDetl.getAnfme();
+ if (anfme <= 0) {
+ LocDetl locdetl = locDetlService.getOne(new LambdaQueryWrapper<LocDetl>()
+ .eq(LocDetl::getLocId, loc.getId())
+ .eq(LocDetl::getBatch, taskDetl.getBatch())
+ .eq(LocDetl::getMatId, taskDetl.getMatId()));
+
+ 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("鍒犻櫎鏄庣粏鎵╁睍瀛楁澶辫触");
+ }
+ }
+
+ 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("搴撳瓨鏄庣粏鏇存柊澶辫触锛侊紒");
+ }
+ }
+ }
+ }
+
+
+ /**
+ * 鏇存柊浠诲姟鏄庣粏锛屾洿鏂板簱瀛樻槑缁�
+ * @param task
+ */
+ //鍑哄簱
+ 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()));
+ if (loc == null) {
+ 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());
+ if (taskDetls.isEmpty()) {
+ throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
+ }
+
+ loc.setLocStsId(LocStsType.O.val());
+ loc.setBarcode("");
+ 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) {
+ if (!locDetlService.removeById(locDetl)) {
+ throw new CoolException("鍒犻櫎搴撳瓨鏄庣粏澶辫触");
+ }
+ List<LocDetlField> detlFields = locDetlFieldService.list(new LambdaQueryWrapper<LocDetlField>().eq(LocDetlField::getDetlId, locDetl.getId()).eq(LocDetlField::getHostId, hostId));
+ for (LocDetlField detlField : detlFields) {
+ if (!locDetlFieldService.removeById(detlField)) {
+ throw new CoolException("鍒犻櫎鏄庣粏鎵╁睍瀛楁澶辫触");
+ }
+ }
+ }
+
+
+
+
+
+ }
+
+ /**
+ * 灏嗗師鏈夊簱瀛樻槑缁嗗垹闄�
+ * 搴撳瓨鐘舵�佽缃负绌哄簱鐘舵��
+ * @param task
+ */
+ //鎷f枡鍑哄簱
+ private void executeTask103(Task task) {
+ Long hostId = task.getHostId();
+ //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("搴撲綅涓嶅瓨鍦�");
+ }
+ if (loc.getLocStsId() != LocStsType.R.val()) {
+ throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬R.鍑哄簱棰勭害");
+ }
+ List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
+ if (taskDetls.isEmpty()) {
+ throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
+ }
+
+ loc.setLocStsId(LocStsType.O.val());
+ loc.setBarcode("");
+ 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) {
+ if (!locDetlService.removeById(locDetl)) {
+ throw new CoolException("鍒犻櫎搴撳瓨鏄庣粏澶辫触");
+ }
+ List<LocDetlField> detlFields = locDetlFieldService.list(new LambdaQueryWrapper<LocDetlField>().eq(LocDetlField::getDetlId, locDetl.getId()).eq(LocDetlField::getHostId, hostId));
+ for (LocDetlField detlField : detlFields) {
+ if (!locDetlFieldService.removeById(detlField)) {
+ throw new CoolException("鍒犻櫎鏄庣粏鎵╁睍瀛楁澶辫触");
+ }
+ }
+ }
+ }
+
+}
--
Gitblit v1.9.1