From c635d78b479510ebe2556a420948effcd30a0731 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期六, 21 十二月 2024 18:40:43 +0800
Subject: [PATCH] 新建德森项目分支

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java |  846 ++++++++++++++++++++++++++++----------------------------
 1 files changed, 423 insertions(+), 423 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 7f0389f..fb9cc2e 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,423 +1,423 @@
-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.entity.enums.TaskStsType;
-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, 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枡鍐嶅叆搴�
-                        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();
-        }
-    }
-
-    @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, TaskStsType.COMPLETE_OUT.id));
-            if (list.isEmpty()) {
-                return;
-            }
-            for (Task task : list) {
-                //鍚屾鏁版嵁
-                switch (task.getTaskType().intValue()) {
-                    case 101://鍑哄簱
-                        executeTask101(task);
-                        break;
-                    case 103://鎷f枡
-                        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);
-            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枡鍐嶅叆搴�
-    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));
-        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) {
-                continue;
-            }
-
-            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<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("鎻掑叆鏄庣粏鎵╁睍瀛楁澶辫触");
-                }
-            }
-        }
-    }
-
-    //鍑哄簱
-    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));
-        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("鍒犻櫎鏄庣粏鎵╁睍瀛楁澶辫触");
-                }
-            }
-        }
-    }
-
-    //鎷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));
-        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("鍒犻櫎鏄庣粏鎵╁睍瀛楁澶辫触");
-                }
-            }
-        }
-    }
-
-}
+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.entity.enums.TaskStsType;
+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, 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枡鍐嶅叆搴�
+                        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();
+        }
+    }
+
+//    @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, TaskStsType.COMPLETE_OUT.id));
+            if (list.isEmpty()) {
+                return;
+            }
+            for (Task task : list) {
+                //鍚屾鏁版嵁
+                switch (task.getTaskType().intValue()) {
+                    case 101://鍑哄簱
+                        executeTask101(task);
+                        break;
+                    case 103://鎷f枡
+                        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);
+            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枡鍐嶅叆搴�
+    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));
+        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) {
+                continue;
+            }
+
+            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<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("鎻掑叆鏄庣粏鎵╁睍瀛楁澶辫触");
+                }
+            }
+        }
+    }
+
+    //鍑哄簱
+    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));
+        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("鍒犻櫎鏄庣粏鎵╁睍瀛楁澶辫触");
+                }
+            }
+        }
+    }
+
+    //鎷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));
+        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