自动化立体仓库 - WMS系统
#
luxiaotao1123
2020-07-07 f8888ba946f073c8bf47f7ec2da3e79b320d908a
#
4个文件已修改
74 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/task/AbstractHandler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/WorkMastScheduler.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/AbstractHandler.java
@@ -10,7 +10,7 @@
    public final ReturnT<T> SUCCESS = new ReturnT<>(200, null);
    public final ReturnT<T> FAIL = new ReturnT<>(500, null);
    protected abstract ReturnT<T> start();
//    protected abstract ReturnT<T> start();
    protected void exceptionHandle(String errorMsg){
        exceptionHandle(errorMsg, (Object) null);
src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -1,8 +1,12 @@
package com.zy.asrs.task;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.task.handler.WorkMastHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import java.util.List;
/**
 * Created by vincent on 2020/7/7
@@ -11,11 +15,22 @@
public class WorkMastScheduler {
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private WorkMastHandler workMastHandler;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
        workMastHandler.start();
        List<WrkMast> wrkMasts = wrkMastService.selectToBeCompleteData();
        if (wrkMasts.isEmpty()) {
            return;
        }
        for (WrkMast wrkMast : wrkMasts) {
            ReturnT<String> start = workMastHandler.start(wrkMast);
        }
    }
}
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -30,7 +30,7 @@
    @Autowired
    private WrkDetlLogService wrkDetlLogService;
    @Override
//    @Override
    @Transactional
    public ReturnT<Config> start() {
        try {
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -8,6 +8,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.Date;
import java.util.List;
@@ -30,29 +31,23 @@
    @Autowired
    private WaitPakinService waitPakinService;
    public ReturnT<String> start() {
        List<WrkMast> wrkMasts = wrkMastService.selectToBeCompleteData();
        if (wrkMasts.isEmpty()) {
            return SUCCESS;
        }
        for (WrkMast wrkMast : wrkMasts) {
    public ReturnT<String> start(WrkMast wrkMast) {
            // 4.入库完成
            if (wrkMast.getWrkSts() == 4) {
                doIn(wrkMast);
            return doIn(wrkMast);
            // 14.出库完成
            } else  if (wrkMast.getWrkSts() == 14) {
                doOut(wrkMast);
            }
            return doOut(wrkMast);
        }
        return SUCCESS;
    }
    private void doIn(WrkMast wrkMast){
    private ReturnT<String> doIn(WrkMast wrkMast){
        Date now = new Date();
        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
        try {
        if (null == locMast) {
            exceptionHandle(""); // todo
            return;
                exceptionHandle("工作档[workNo={0}]库位号错误[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
        }
        switch (wrkMast.getIoType()) {
            // 空板入库
@@ -63,7 +58,7 @@
                    locMast.setIoTime(now);
                    locMast.setModiTime(now);
                    if (!locMastService.updateById(locMast)) {
                        exceptionHandle(""); // todo
                            exceptionHandle("空板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                    }
                }
                break;
@@ -77,7 +72,7 @@
                // 根据工作号,查询工作明细档
                List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
                if (wrkDetls.isEmpty()) {
                    exceptionHandle(""); // todo
                        exceptionHandle("全板入库 ===>> 工作明细档不存在;[workNo={0}]", wrkMast.getWrkNo());
                }
                // 遍历工作明细,更新库存明细和入库通知档
                for (WrkDetl wrkDetl : wrkDetls) {
@@ -85,7 +80,7 @@
                    if (null != locDetl) {
                        boolean res = locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr());
                        if (!res) {
                            exceptionHandle(""); // todo
                                exceptionHandle("全板入库 ===>> 更新库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                        }
                    } else {
                        locDetl = new LocDetl(
@@ -108,7 +103,7 @@
                                now    // 添加时间
                        );
                        if (!locDetlService.insert(locDetl)) {
                            exceptionHandle(""); // todo
                                exceptionHandle("全板入库 ===>> 添加库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                        }
                    }
                    // 更新入库通知档 status ===>> Y
@@ -119,7 +114,7 @@
                                    .eq("matnr", wrkDetl.getMatnr())
                                    .eq("anfme", wrkDetl.getAnfme()));
                    if (!updateRes) {
                        exceptionHandle(""); // todo
                            exceptionHandle("全板入库 ===>> 更新入库通知档失败;[workNo={0}]", wrkMast.getWrkNo());
                    }
                }
                // 修改库位状态 S ====>> F
@@ -129,7 +124,7 @@
                    locMast.setIoTime(now);
                    locMast.setModiTime(now);
                    if (!locMastService.updateById(locMast)) {
                        exceptionHandle(""); // todo
                            exceptionHandle("全板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                    }
                }
                break;
@@ -138,14 +133,14 @@
                // 根据工作号,查询工作明细档
                List<WrkDetl> wrkDetls53 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
                if (wrkDetls53.isEmpty()) {
                    exceptionHandle(""); // todo
                        exceptionHandle("拣料入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo());
                }
                for (WrkDetl wrkDetl:wrkDetls53) {
                    // 修改库存明细数量,如果工作明细数量为0时,删除库存明细
                    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()).eq("matnr", wrkDetl.getMatnr()));
                    if (null != locDetl) {
                        if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr())) {
                            exceptionHandle(""); // todo
                                exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                        }
                        // todo:luxiaotao 3)修改出库通知档 status ==> Y
                    }
@@ -157,7 +152,7 @@
                    locMast.setIoTime(now);
                    locMast.setModiTime(now);
                    if (!locMastService.updateById(locMast)) {
                        exceptionHandle(""); // todo
                            exceptionHandle("拣料入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                    }
                }
                break;
@@ -166,14 +161,14 @@
                // 根据工作号,查询工作明细档
                List<WrkDetl> wrkDetls54 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
                if (wrkDetls54.isEmpty()) {
                    exceptionHandle(""); // todo
                        exceptionHandle("并板入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo());
                }
                // 修改库存明细数量,如无库存,曾新增
                for (WrkDetl wrkDetl:wrkDetls54) {
                    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()).eq("matnr", wrkDetl.getMatnr()));
                    if (null != locDetl) {
                        if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr())) {
                            exceptionHandle(""); // todo
                                exceptionHandle("并板入库 ===>> 修改库存明细数量失败;[workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr());
                        }
                    } else {
                        locDetl = new LocDetl(
@@ -196,7 +191,7 @@
                                now    // 添加时间
                        );
                        if (!locDetlService.insert(locDetl)) {
                            exceptionHandle(""); // todo
                                exceptionHandle("并板入库 ===>> 新增库存明细失败;[workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr());
                        }
                    }
                    // todo:luxiaotao 3)修改出库通知档 status ==> Y
@@ -208,7 +203,7 @@
                    locMast.setIoTime(now);
                    locMast.setModiTime(now);
                    if (!locMastService.updateById(locMast)) {
                        exceptionHandle(""); // todo
                            exceptionHandle("并板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                    }
                }
                break;
@@ -273,9 +268,15 @@
        if (!wrkMastService.updateById(wrkMast)) {
            exceptionHandle(""); // todo
        }
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        }
        return SUCCESS;
    }
    private void doOut(WrkMast wrkMast){
    private ReturnT<String> doOut(WrkMast wrkMast){
        Date now = new Date();
        LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
        if (null == locMast) {