自动化立体仓库 - WMS系统
zwl
2025-06-27 85ef8fe5827bce822c9e74ab0a6a9340a4bae016
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -9,6 +9,8 @@
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -36,6 +38,8 @@
    private LocDetlService locDetlService;
    @Autowired
    private WaitPakinService waitPakinService;
    @Autowired
    private ConfigService configService;
    public ReturnT<String> start(WrkMast wrkMast) {
        // 9.入库完成
@@ -51,6 +55,9 @@
    private ReturnT<String> doIn(WrkMast wrkMast){
        Date now = new Date();
        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
        //判断任务是否有订单号
        Boolean boo=false;
        try {
            if (null == locMast) {
                exceptionHandle("工作档[workNo={0}]库位号错误[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
@@ -84,8 +91,13 @@
                    if (wrkDetls.isEmpty()) {
                        exceptionHandle("全板入库 ===>> 工作明细档不存在;[workNo={0}]", wrkMast.getWrkNo());
                    }
                    //判断是否有订单号
                    if(!Cools.isEmpty(wrkDetls.get(0).getOrderNo())){
                        boo=true;
                    }
                    // 遍历工作明细,更新库存明细和入库通知档
                    for (WrkDetl wrkDetl : wrkDetls) {
                        wrkDetl.setBatch("");
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        if (null != locDetl) {
@@ -143,11 +155,17 @@
                    if (wrkDetls53.isEmpty()) {
                        exceptionHandle("拣料入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo());
                    }
                    //判断是否有订单号
                    if(!Cools.isEmpty(wrkDetls53.get(0).getOrderNo())){
                        boo=true;
                    }
                    for (WrkDetl wrkDetl : wrkDetls53) {
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        if (null != locDetl) {
                            if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
                            if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getManu(),wrkDetl.getMemo())) {
                                exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                            }
                        }
@@ -273,8 +291,15 @@
                default:
                    break;
            }
            // 修改工作主档状态
            wrkMast.setWrkSts(10L);
            //是否需要上报ERP
            Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "newErpReport"));
            if(!Cools.isEmpty(config)&&config.getValue().equals("Y")&&boo){
                wrkMast.setWrkSts(40L);//任务状态转ERP上报中
            }else{
                // 修改工作主档状态
                wrkMast.setWrkSts(10L);
            }
            wrkMast.setModiTime(now);
            if (!wrkMastService.updateById(wrkMast)) {
                exceptionHandle("更新入库完成状态失败;[workNo={0}]", wrkMast.getWrkNo());
@@ -289,8 +314,12 @@
    }
    private ReturnT<String> doOut(WrkMast wrkMast){
        Date now = new Date();
        LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
        //判断任务是否有订单号
        Boolean boo=false;
        try {
            if (null == locMast) {
                exceptionHandle("工作档[workNo={0}]库位号错误[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
@@ -338,6 +367,11 @@
                    if (wrkDetls101.isEmpty()) {
                        exceptionHandle("全板出库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo());
                    }
                    //判断是否有订单号
                    if(!Cools.isEmpty(wrkDetls101.get(0).getOrderNo())){
                        boo=true;
                    }
                    for (WrkDetl wrkDetl : wrkDetls101) {
                        // todo:luxiaotao 3)修改出库通知档 status ==> Y
                    }
@@ -375,8 +409,14 @@
                    break;
            }
            if(wrkMast.getIoType()!=11) {
                // 修改工作主档状态
                wrkMast.setWrkSts(18L);
                //是否需要上报ERP
                Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "newErpReport"));
                if(!Cools.isEmpty(config)&&config.getValue().equals("Y")&&boo){
                    wrkMast.setWrkSts(40L);//任务状态转ERP上报中
                }else{
                    // 修改工作主档状态
                    wrkMast.setWrkSts(18L);
                }
                wrkMast.setModiTime(now);
                if (!wrkMastService.updateById(wrkMast)) {
                    exceptionHandle("更新出库完成状态失败;[workNo={0}]", wrkMast.getWrkNo());