自动化立体仓库 - WMS系统
zwl
2025-10-13 03b5b8a480fb201e288486299eb385a00d2aac66
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -6,6 +6,10 @@
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.third.entity.ExdInstockTarget;
import com.zy.third.entity.ExdvYanbu;
import com.zy.third.mapper.ExdMaterialMapper;
import com.zy.third.service.ExdInstockTargetService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -36,18 +40,25 @@
    @Autowired
    private OrderDetlService orderDetlService;
    @Autowired
    private ExdInstockTargetService exdInstockTargetService;
    @Autowired
    private ExdMaterialMapper exdMaterialMapper;
    @Transactional
    public ReturnT<String> start(WrkMast wrkMast) {
        // 4.入库完成
        if (wrkMast.getWrkSts() == 4) {
            return doIn(wrkMast);
        // 14.出库完成
        } else  if (wrkMast.getWrkSts() == 14) {
            // 14.出库完成
        } else if (wrkMast.getWrkSts() == 14) {
            return doOut(wrkMast);
        }
        return SUCCESS;
    }
    private ReturnT<String> doIn(WrkMast wrkMast){
    private ReturnT<String> doIn(WrkMast wrkMast) {
        Date now = new Date();
        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
        try {
@@ -116,22 +127,25 @@
                        // 更新订单完成数量
                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        if(orderDetl==null){
                            orderDetl=orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
                        if (orderDetl == null) {
                            orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
                        }
                        try {
                            if(!Cools.isEmpty(orderDetl)){
                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        orderDetl.getBatch(),wrkDetl.getAnfme())){
                            if (!Cools.isEmpty(orderDetl)) {
                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        orderDetl.getBatch(), wrkDetl.getAnfme())) {
//                                    exceptionHandle("全板入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("全板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                                }
                            }
                        } catch (Exception ignore){}
                        } catch (Exception ignore) {
                        }
                    }
                    // 写入中间表数据
                    write(wrkMast, wrkDetls);
                    // 修改库位状态 S ====>> F
                    if (locMast.getLocSts().equals("S")) {
                        locMast.setLocSts("F");
@@ -167,20 +181,21 @@
                        // 更新订单完成数量
                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        if(orderDetl==null){
                            orderDetl=orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
                        if (orderDetl == null) {
                            orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
                        }
                        try {
                            if(!Cools.isEmpty(orderDetl)){
                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        orderDetl.getBatch(),wrkDetl.getAnfme())){
                            if (!Cools.isEmpty(orderDetl)) {
                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        orderDetl.getBatch(), wrkDetl.getAnfme())) {
//                                    exceptionHandle("拣料入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("拣料入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                                }
                            }
                        } catch (Exception ignore){}
                        } catch (Exception ignore) {
                        }
                    }
                    // 修改库位状态 Q ====>> F
@@ -206,7 +221,7 @@
                        return FAIL.setMsg("并板入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                    }
                    // 修改库存明细数量,如无库存,曾新增
                    for (WrkDetl wrkDetl:wrkDetls54) {
                    for (WrkDetl wrkDetl : wrkDetls54) {
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        if (null != locDetl) {
@@ -254,7 +269,7 @@
                    }
                    // 修改库位状态 Q ====>> F
                    if (locMast.getLocSts().equals("Q")) {
                        locMast.setLocSts(wrkMast.getFullPlt().equals("Y")?"F":"D");
                        locMast.setLocSts(wrkMast.getFullPlt().equals("Y") ? "F" : "D");
                        locMast.setBarcode(wrkMast.getBarcode());
                        locMast.setIoTime(now);
                        locMast.setModiTime(now);
@@ -323,7 +338,7 @@
        return SUCCESS;
    }
    private ReturnT<String> doOut(WrkMast wrkMast){
    private ReturnT<String> doOut(WrkMast wrkMast) {
        Date now = new Date();
        LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
        try {
@@ -350,20 +365,21 @@
                    for (WrkDetl wrkDetl : wrkDetls101) {
                        // 更新订单完成数量
                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        if(orderDetl==null){
                            orderDetl=orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
                        if (orderDetl == null) {
                            orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
                        }
                        try {
                            if(!Cools.isEmpty(orderDetl)){
                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        orderDetl.getBatch(),wrkDetl.getAnfme())){
                            if (!Cools.isEmpty(orderDetl)) {
                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        orderDetl.getBatch(), wrkDetl.getAnfme())) {
//                                    exceptionHandle("全板出库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                                }
                            }
                        } catch (Exception ignore){}
                        } catch (Exception ignore) {
                        }
                    }
                    // 删除工作档源库位的库存明细
                    if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()))) {
@@ -402,10 +418,10 @@
                default:
                    break;
            }
            if(Cools.isEmpty(wrkMast.getMemo())){
            if (Cools.isEmpty(wrkMast.getMemo())) {
                // 修改工作主档状态
                wrkMast.setWrkSts(15L);
            }else {
            } else {
                wrkMast.setWrkSts(30L);
            }
@@ -424,4 +440,46 @@
        return SUCCESS;
    }
    private void write(WrkMast wrkMast, List<WrkDetl> wrkDetls) {
        ExdInstockTarget exdInstockTarge;
        int i = -1;
        for (WrkDetl wrkDetl : wrkDetls) {
            if (Cools.isEmpty(wrkDetl.getOrderNo()) && !Cools.isEmpty(wrkDetl.getInspect()) && wrkDetl.getInspect() == 1) {
                continue;
            }
            ExdvYanbu bacode = exdMaterialMapper.getBacode(wrkDetl.getBatch());
            exdInstockTarge = new ExdInstockTarget();
            exdInstockTarge.setFtrantype(21);
            exdInstockTarge.setFdate(new Date());
            exdInstockTarge.setFrob(1);
            exdInstockTarge.setFqty(wrkDetl.getAnfme());
            exdInstockTarge.setFbatchno(bacode.getBatchno());
            exdInstockTarge.setFsourcebillno(bacode.getIcmono());
            exdInstockTarge.setFsourcetrantype(85);
            exdInstockTarge.setFentryid(i);
            exdInstockTarge.setFsmanagerid(Integer.valueOf(wrkDetl.getColor()));
            exdInstockTarge.setFfmanagerid(Integer.valueOf(wrkDetl.getColor()));
            exdInstockTarge.setFbillerid(Integer.valueOf(wrkDetl.getColor()));
            exdInstockTarge.setFitemid(Integer.parseInt(wrkDetl.getSku()));
            exdInstockTarge.setFsourceentryid(i);
            exdInstockTarge.setFdcspid(wrkMast.getLocNo());
            exdInstockTarge.setFdcstockid(wrkDetl.getBrand());
            exdInstockTarge.setBarcode(wrkDetl.getBatch());
            exdInstockTarge.setGross(bacode.getGross());
            exdInstockTarge.setWidth(bacode.getWidth());
            exdInstockTarge.setDefects(bacode.getDefects());
            exdInstockTarge.setBackcode(bacode.getBackcode());
            exdInstockTarge.setWritetime(new Date());
            exdInstockTarge.setWritor("WMS");
            exdInstockTarge.setStatus(0);
            exdInstockTargetService.insert(exdInstockTarge);
            i++;
        }
    }
}