package com.zy.asrs.task.handler; 
 | 
  
 | 
import com.baomidou.mybatisplus.mapper.EntityWrapper; 
 | 
import com.core.common.Cools; 
 | 
import com.core.exception.CoolException; 
 | 
import com.zy.asrs.entity.*; 
 | 
import com.zy.asrs.enums.LocStsType; 
 | 
import com.zy.asrs.service.*; 
 | 
import com.zy.asrs.service.impl.BasStationServiceImpl; 
 | 
import com.zy.asrs.task.AbstractHandler; 
 | 
import com.zy.asrs.task.core.ReturnT; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.beans.BeanUtils; 
 | 
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; 
 | 
import java.util.Objects; 
 | 
import java.util.Set; 
 | 
import java.util.stream.Collectors; 
 | 
  
 | 
/** 
 | 
 * Created by vincent on 2020/7/4 
 | 
 */ 
 | 
@Slf4j 
 | 
@Service 
 | 
@Transactional 
 | 
public class WorkMastHandler extends AbstractHandler<String> { 
 | 
  
 | 
    @Autowired 
 | 
    private WrkMastService wrkMastService; 
 | 
    @Autowired 
 | 
    private WrkDetlService wrkDetlService; 
 | 
    @Autowired 
 | 
    private LocMastService locMastService; 
 | 
    @Autowired 
 | 
    private LocDetlService locDetlService; 
 | 
    @Autowired 
 | 
    private WaitPakinService waitPakinService; 
 | 
    @Autowired 
 | 
    private OrderDetlService orderDetlService; 
 | 
    @Autowired 
 | 
    private OrderDetlPakinService orderDetlPakinService; 
 | 
    @Autowired 
 | 
    private OrderDetlPakoutService orderDetlPakoutService; 
 | 
    @Autowired 
 | 
    private LocCacheService locCacheService; 
 | 
    @Autowired 
 | 
    private OrderPakinService orderPakinService; 
 | 
    @Autowired 
 | 
    private TaskService taskService; 
 | 
    @Autowired 
 | 
    private TaskDetlService taskDetlService; 
 | 
    @Autowired 
 | 
    private BasStationServiceImpl basStationService; 
 | 
  
 | 
    public ReturnT<String> start(WrkMast wrkMast) { 
 | 
        // 4.入库完成 
 | 
        if (wrkMast.getWrkSts() == 4) { 
 | 
            return doIn(wrkMast); 
 | 
            // 14.出库完成 
 | 
        } else if (wrkMast.getWrkSts() == 14) { 
 | 
            return doOut(wrkMast); 
 | 
        } 
 | 
        return SUCCESS; 
 | 
    } 
 | 
  
 | 
  
 | 
    public ReturnT<String> doIn(WrkMast wrkMast) { 
 | 
        Date now = new Date(); 
 | 
        LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); 
 | 
        try { 
 | 
            if (null == locMast) { 
 | 
//                exceptionHandle("工作档[workNo={0}]库位号错误[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); 
 | 
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                return FAIL.setMsg("工作档[workNo=" + wrkMast.getWrkNo() + "]库位号错误[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
            } 
 | 
            assert locMast != null; 
 | 
            switch (wrkMast.getIoType()) { 
 | 
                // 空板入库 
 | 
                case 10: 
 | 
                    // 修改库位状态=D 
 | 
                    if (locMast.getLocSts().equals("S") || locMast.getLocSts().equals("Q")) { 
 | 
                        if (!Cools.isEmpty(wrkMast.getBarcode())) { 
 | 
                            locMast.setBarcode(wrkMast.getBarcode()); 
 | 
                        } 
 | 
                        locMast.setLocSts("D"); 
 | 
                        locMast.setIoTime(now); 
 | 
                        locMast.setModiTime(now); 
 | 
                        if (!locMastService.updateById(locMast)) { 
 | 
//                            exceptionHandle("空板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); 
 | 
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                            return FAIL.setMsg("空板入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                        } 
 | 
                    } 
 | 
                    break; 
 | 
                // 全板入库 
 | 
                case 1: 
 | 
                    // 清除所属库位之前的库存明细 
 | 
                    List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo())); 
 | 
                    if (!locDetls.isEmpty()) { 
 | 
                        locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo())); 
 | 
                    } 
 | 
                    // 根据工作号,查询工作明细档 
 | 
                    List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); 
 | 
                    if (wrkDetls.isEmpty()) { 
 | 
//                        exceptionHandle("全板入库 ===>> 工作明细档不存在;[workNo={0}]", wrkMast.getWrkNo()); 
 | 
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                        return FAIL.setMsg("全板入库 ===>> 工作明细档不存在; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                    } 
 | 
                    // 遍历工作明细,更新库存明细和入库通知档 
 | 
                    for (WrkDetl wrkDetl : wrkDetls) { 
 | 
  
 | 
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand() 
 | 
                                , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                        if (null != locDetl) { 
 | 
                            if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3() 
 | 
                                    , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) { 
 | 
//                                exceptionHandle("全板入库 ===>> 更新库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); 
 | 
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                                return FAIL.setMsg("全板入库 ===>> 更新库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                            } 
 | 
                        } else { 
 | 
                            locDetl = new LocDetl(); 
 | 
                            locDetl.sync(wrkDetl); 
 | 
                            locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 
 | 
                            locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 
 | 
                            locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 
 | 
                            locDetl.setModiTime(now); 
 | 
                            locDetl.setAppeTime(now); 
 | 
                            if (!locDetlService.insert(locDetl)) { 
 | 
//                                exceptionHandle("全板入库 ===>> 添加库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); 
 | 
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                                return FAIL.setMsg("全板入库 ===>> 添加库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                            } 
 | 
                        } 
 | 
  
 | 
                        // 更新订单完成数量 
 | 
                        OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem 
 | 
                                (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                        if (orderDetlPakin == null) { 
 | 
                            orderDetlPakin = orderDetlPakinService.selectItem 
 | 
                                    (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), 
 | 
                                            wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                        } 
 | 
                        try { 
 | 
                            if (!Cools.isEmpty(orderDetlPakin)) { 
 | 
                                if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), 
 | 
                                        orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), 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) { 
 | 
                        } 
 | 
  
 | 
                    } 
 | 
                    // 修改库位状态 S ====>> F 
 | 
                    if (locMast.getLocSts().equals("S")) { 
 | 
                        locMast.setLocSts("F"); 
 | 
                        locMast.setBarcode(wrkMast.getBarcode()); 
 | 
                        locMast.setIoTime(now); 
 | 
                        locMast.setModiTime(now); 
 | 
                        if (!locMastService.updateById(locMast)) { 
 | 
//                            exceptionHandle("全板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); 
 | 
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                            return FAIL.setMsg("全板入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                        } 
 | 
                    } 
 | 
                    break; 
 | 
                // 拣料途中并板 
 | 
                case 8: 
 | 
                    // 根据工作号,查询工作明细档 
 | 
                    List<WrkDetl> wrkDetls8 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); 
 | 
                    if (wrkDetls8.isEmpty()) { 
 | 
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                        return FAIL.setMsg("拣料途中并板 ===>> 工作明细档不存在; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                    } 
 | 
                    // 遍历工作明细,更新库存明细和入库通知档 
 | 
                    for (WrkDetl wrkDetl : wrkDetls8) { 
 | 
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand() 
 | 
                                , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                        if (null != locDetl) { 
 | 
                            if (!locDetlService.updateAnfme(wrkDetl.getAnfme() + locDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3() 
 | 
                                    , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) { 
 | 
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                                return FAIL.setMsg("拣料途中并板 ===>> 更新库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                            } 
 | 
                        } else { 
 | 
                            locDetl = new LocDetl(); 
 | 
                            locDetl.sync(wrkDetl); 
 | 
                            locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 
 | 
                            locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 
 | 
                            locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 
 | 
                            locDetl.setModiTime(now); 
 | 
                            locDetl.setAppeTime(now); 
 | 
                            if (!locDetlService.insert(locDetl)) { 
 | 
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                                return FAIL.setMsg("拣料途中并板 ===>> 添加库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                            } 
 | 
                        } 
 | 
  
 | 
                        if (!Cools.isEmpty(wrkDetl.getOrderNo())) { 
 | 
                            // 更新订单完成数量 
 | 
                            if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), 
 | 
                                    wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                    wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { 
 | 
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                                return FAIL.setMsg("拣料途中并板 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                    break; 
 | 
                // 拣料入库 
 | 
                case 53: 
 | 
                    // 根据工作号,查询工作明细档 
 | 
                    List<WrkDetl> wrkDetls53 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); 
 | 
                    if (wrkDetls53.isEmpty()) { 
 | 
//                        exceptionHandle("拣料入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); 
 | 
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                        return FAIL.setMsg("拣料入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                    } 
 | 
                    for (WrkDetl wrkDetl : wrkDetls53) { 
 | 
  
 | 
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand() 
 | 
                                , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                        if (null != locDetl) { 
 | 
                            if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3() 
 | 
                                    , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) { 
 | 
//                                exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); 
 | 
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                                return FAIL.setMsg("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                            } 
 | 
                        } 
 | 
  
 | 
                        // 更新订单完成数量 
 | 
                        OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem 
 | 
                                (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), 
 | 
                                        wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                        if (orderDetlPakin == null) { 
 | 
                            orderDetlPakin = orderDetlPakinService.selectItem 
 | 
                                    (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                        } 
 | 
                        try { 
 | 
                            if (!Cools.isEmpty(orderDetlPakin)) { 
 | 
                                if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), 
 | 
                                        orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), 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) { 
 | 
                        } 
 | 
  
 | 
                    } 
 | 
                    // 修改库位状态 Q ====>> F 
 | 
                    if (locMast.getLocSts().equals("Q")) { 
 | 
                        locMast.setLocSts("F"); 
 | 
                        locMast.setBarcode(wrkMast.getBarcode()); 
 | 
                        locMast.setIoTime(now); 
 | 
                        locMast.setModiTime(now); 
 | 
                        if (!locMastService.updateById(locMast)) { 
 | 
//                            exceptionHandle("拣料入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); 
 | 
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                            return FAIL.setMsg("拣料入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                        } 
 | 
                    } 
 | 
                    break; 
 | 
                // 并板入库 
 | 
                case 54: 
 | 
                    // 根据工作号,查询工作明细档 
 | 
                    List<WrkDetl> wrkDetls54 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); 
 | 
                    if (wrkDetls54.isEmpty()) { 
 | 
//                        exceptionHandle("并板入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); 
 | 
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                        return FAIL.setMsg("并板入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                    } 
 | 
                    // 修改库存明细数量,如无库存,曾新增 
 | 
                    for (WrkDetl wrkDetl : wrkDetls54) { 
 | 
  
 | 
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand() 
 | 
                                , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                        if (null != locDetl) { 
 | 
                            if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3() 
 | 
                                    , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) { 
 | 
//                                exceptionHandle("并板入库 ===>> 修改库存明细数量失败;[workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr()); 
 | 
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                                return FAIL.setMsg("并板入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                            } 
 | 
                        } else { 
 | 
                            locDetl = new LocDetl(); 
 | 
                            locDetl.sync(wrkDetl); 
 | 
                            locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 
 | 
                            locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 
 | 
                            locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 
 | 
                            locDetl.setModiTime(now); 
 | 
                            locDetl.setAppeTime(now); 
 | 
                            if (!locDetlService.insert(locDetl)) { 
 | 
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                                return FAIL.setMsg("并板入库 ===>> 新增库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                            } 
 | 
                        } 
 | 
  
 | 
                        // 更新订单完成数量 
 | 
                        OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                        try { 
 | 
                            if (!Cools.isEmpty(orderDetlPakin)) { 
 | 
                                if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), 
 | 
                                        orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { 
 | 
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                                    return FAIL.setMsg("并板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                                } 
 | 
                            } 
 | 
                        } catch (Exception ignore) { 
 | 
  
 | 
                        } 
 | 
  
 | 
                    } 
 | 
                    // 修改库位状态 Q ====>> F 
 | 
                    if (locMast.getLocSts().equals("Q")) { 
 | 
                        locMast.setLocSts("F"); 
 | 
                        locMast.setBarcode(wrkMast.getBarcode()); 
 | 
                        locMast.setIoTime(now); 
 | 
                        locMast.setModiTime(now); 
 | 
                        if (!locMastService.updateById(locMast)) { 
 | 
//                            exceptionHandle("并板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); 
 | 
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                            return FAIL.setMsg("并板入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                        } 
 | 
                    } 
 | 
                    break; 
 | 
                // 盘点入库 
 | 
                case 57: 
 | 
                    // 根据工作号,查询工作明细档 
 | 
                    List<WrkDetl> wrkDetls57 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); 
 | 
                    if (wrkDetls57.isEmpty()) { 
 | 
//                        exceptionHandle("盘点入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); 
 | 
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                        return FAIL.setMsg("盘点入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                    } 
 | 
                    for (WrkDetl wrkDetl : wrkDetls57) { 
 | 
                        if (!Cools.isEmpty(wrkDetl.getOrderNo())) { 
 | 
                            // 更新订单完成数量 
 | 
                            OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                    wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                            if (!Cools.isEmpty(orderDetlPakout)) { 
 | 
                                if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), 
 | 
                                        orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { 
 | 
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                                    return FAIL.setMsg("盘点入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); 
 | 
                                } 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                    // 修改库位状态 Q ====>> F 
 | 
                    if (locMast.getLocSts().equals("Q")) { 
 | 
                        locMast.setLocSts(wrkMast.getFullPlt().equals("Y") ? "F" : "D"); 
 | 
                        locMast.setBarcode(wrkMast.getBarcode()); 
 | 
                        locMast.setIoTime(now); 
 | 
                        locMast.setModiTime(now); 
 | 
                        if (!locMastService.updateById(locMast)) { 
 | 
//                            exceptionHandle("盘点入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); 
 | 
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                            return FAIL.setMsg("盘点入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                        } 
 | 
                    } 
 | 
                    break; 
 | 
                // 库位移转 
 | 
                case 11: 
 | 
                    // 默认目标库位是空板 
 | 
                    String locSts = "D"; 
 | 
                    // 库位移转判断是否为空板移转 
 | 
                    if (wrkMast.getEmptyMk().equals("N")) { 
 | 
                        locSts = "F"; 
 | 
                        // 转移库存明细数据: 库存号 由工作档源库位变为目标库位 
 | 
                        if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) { 
 | 
//                            exceptionHandle("库位移转 ===>> 转移库存明细数据失败;[源库位={0}],[目标库位={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo()); 
 | 
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                            return FAIL.setMsg("库位移转 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                        } 
 | 
                    } 
 | 
                    // 修改源库位状态 ==> O 
 | 
                    LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo()); 
 | 
                    if (null != sourceLoc) { 
 | 
                        sourceLoc.setBarcode(""); 
 | 
                        sourceLoc.setLocSts("O"); 
 | 
                        sourceLoc.setModiTime(now); 
 | 
                        sourceLoc.setIoTime(now); 
 | 
                        if (!locMastService.updateById(sourceLoc)) { 
 | 
//                            exceptionHandle("库位移转 ===>> 修改源库位状态失败;[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); 
 | 
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                            return FAIL.setMsg("库位移转 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                        } 
 | 
                    } 
 | 
                    // 修改目标库位状态 ==> .locSts 
 | 
                    locMast.setLocSts(locSts); 
 | 
                    locMast.setBarcode(wrkMast.getBarcode()); 
 | 
                    locMast.setIoTime(now); 
 | 
                    locMast.setModiTime(now); 
 | 
                    if (!locMastService.updateById(locMast)) { 
 | 
//                        exceptionHandle("库位移转 ===>> 修改目标库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); 
 | 
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                        return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                    } 
 | 
                    break; 
 | 
                default: 
 | 
                    break; 
 | 
            } 
 | 
            // 修改工作主档状态 
 | 
            wrkMast.setWrkSts(5L); 
 | 
            wrkMast.setModiTime(now); 
 | 
            if (!wrkMastService.updateById(wrkMast)) { 
 | 
//                exceptionHandle("更新入库完成状态失败;[workNo={0}]", wrkMast.getWrkNo()); 
 | 
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                return FAIL.setMsg("更新入库完成状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
            } 
 | 
        } catch (Exception e) { 
 | 
            log.error("fail", e); 
 | 
            e.printStackTrace(); 
 | 
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
            return FAIL.setMsg(e.getMessage()); 
 | 
        } 
 | 
  
 | 
        return SUCCESS; 
 | 
    } 
 | 
  
 | 
    private ReturnT<String> doOut(WrkMast wrkMast) { 
 | 
        Date now = new Date(); 
 | 
        LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); 
 | 
        try { 
 | 
            if (null == locMast) { 
 | 
//                exceptionHandle("工作档[workNo={0}]库位号错误[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); 
 | 
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                return FAIL.setMsg("工作档库位号错误; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
            } 
 | 
            assert locMast != null; 
 | 
            switch (wrkMast.getIoType()) { 
 | 
                // 全板出库 
 | 
                case 101: 
 | 
//                    // 出库确认信号位 
 | 
//                    if (Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) { 
 | 
//                        return SUCCESS; 
 | 
//                    } 
 | 
                    // 根据工作号,查询工作明细档 
 | 
                    List<WrkDetl> wrkDetls101 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); 
 | 
                    if (wrkDetls101.isEmpty()) { 
 | 
//                        exceptionHandle("全板出库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); 
 | 
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                        return FAIL.setMsg("全板出库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); 
 | 
                    } 
 | 
                    for (WrkDetl wrkDetl : wrkDetls101) { 
 | 
                        // 更新订单完成数量 
 | 
                        OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                        if (orderDetlPakout == null) { 
 | 
                            orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                    wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                        } 
 | 
                        try { 
 | 
                            if (!Cools.isEmpty(orderDetlPakout)) { 
 | 
                                if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), 
 | 
                                        orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { 
 | 
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                                    return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); 
 | 
                                } 
 | 
                            } 
 | 
                        } catch (Exception ignore) { 
 | 
  
 | 
                        } 
 | 
                    } 
 | 
                    // 删除工作档源库位的库存明细 
 | 
                    if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()))) { 
 | 
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                        return FAIL.setMsg("全板出库 ===>> 删除库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); 
 | 
                    } 
 | 
                    // 修改源库位状态 R ===>> O 
 | 
                    if (locMast.getLocSts().equals("R")) { 
 | 
                        locMast.setLocSts("O"); 
 | 
                        locMast.setBarcode(""); 
 | 
                        locMast.setModiTime(now); 
 | 
                        locMast.setIoTime(now); 
 | 
                        if (!locMastService.updateById(locMast)) { 
 | 
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                            return FAIL.setMsg("全板出库 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); 
 | 
                        } 
 | 
                    } 
 | 
                    break; 
 | 
                // 并板途中捡料 
 | 
                case 108: 
 | 
                    // 根据工作号,查询工作明细档 
 | 
                    List<WrkDetl> wrkDetls108 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); 
 | 
                    if (wrkDetls108.isEmpty()) { 
 | 
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                        return FAIL.setMsg("并板途中捡料 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); 
 | 
                    } 
 | 
                    for (WrkDetl wrkDetl : wrkDetls108) { 
 | 
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand() 
 | 
                                , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                        if (null != locDetl) { 
 | 
                            if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3() 
 | 
                                    , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) { 
 | 
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                                return FAIL.setMsg("并板途中捡料 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); 
 | 
                            } 
 | 
                        } 
 | 
                        // 更新订单完成数量 
 | 
                        OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                        try { 
 | 
                            if (!Cools.isEmpty(orderDetlPakout)) { 
 | 
                                if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), 
 | 
                                        orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { 
 | 
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                                    return FAIL.setMsg("并板途中捡料 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); 
 | 
                                } 
 | 
                            } 
 | 
                        } catch (Exception ignore) { 
 | 
                        } 
 | 
                    } 
 | 
                    break; 
 | 
                // 空板出库 
 | 
                case 110: 
 | 
                    // 修改库位状态 R ===>> O 
 | 
                    if (locMast.getLocSts().equals("R")) { 
 | 
                        locMast.setLocSts("O"); 
 | 
                        locMast.setBarcode(""); 
 | 
                        locMast.setModiTime(now); 
 | 
                        locMast.setIoTime(now); 
 | 
                        if (!locMastService.updateById(locMast)) { 
 | 
//                            exceptionHandle("空板出库 ===>> 修改源库位状态失败;[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); 
 | 
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                            return FAIL.setMsg("空板出库 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); 
 | 
                        } 
 | 
                    } 
 | 
                    break; 
 | 
                default: 
 | 
                    break; 
 | 
            } 
 | 
            // 修改工作主档状态 
 | 
            wrkMast.setWrkSts(15L); 
 | 
            wrkMast.setModiTime(now); 
 | 
            if (!wrkMastService.updateById(wrkMast)) { 
 | 
//                exceptionHandle("更新出库完成状态失败;[workNo={0}]", wrkMast.getWrkNo()); 
 | 
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                return FAIL.setMsg("更新出库完成状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); 
 | 
            } 
 | 
        } catch (Exception e) { 
 | 
            log.error("fail", e); 
 | 
            e.printStackTrace(); 
 | 
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
            return FAIL.setMsg(e.getMessage()); 
 | 
        } 
 | 
        return SUCCESS; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * @author Ryan 
 | 
     * @date 2025/9/23 
 | 
     * @description: AGV任务完成加入历史档 
 | 
     * @version 1.0 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public ReturnT<String> AgvStart(Task task) { 
 | 
        // 4.入库完成 
 | 
        if (task.getWrkSts() == 4) { 
 | 
            return agvDoIn(task); 
 | 
            // 14.出库完成 
 | 
        } else if (task.getWrkSts() == 14) { 
 | 
            return agvDoOut(task); 
 | 
        } 
 | 
        return SUCCESS; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * @author Ryan 
 | 
     * @date 2025/9/25 
 | 
     * @description: AGV出库任务 
 | 
     * @version 1.0 
 | 
     */ 
 | 
    public ReturnT<String> agvDoOut(Task task) { 
 | 
        if (task.getIoType().equals(101)) { 
 | 
            Date now = new Date(); 
 | 
            LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", task.getSourceLocNo())); 
 | 
            if (Objects.isNull(locMast)) { 
 | 
                throw new RuntimeException("数据错误:库位信息不能为空!!"); 
 | 
            } 
 | 
            List<TaskDetl> wrkDetls101 = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo())); 
 | 
            if (wrkDetls101.isEmpty()) { 
 | 
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                return FAIL.setMsg("全板出库 ===>> 工作明细档为空; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]"); 
 | 
            } 
 | 
            for (TaskDetl wrkDetl : wrkDetls101) { 
 | 
                // 更新订单完成数量 
 | 
                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                if (orderDetlPakout == null) { 
 | 
                    orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); 
 | 
                } 
 | 
                try { 
 | 
                    if (!Cools.isEmpty(orderDetlPakout)) { 
 | 
                        if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), 
 | 
                                orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), 
 | 
                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { 
 | 
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                            return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]"); 
 | 
                        } 
 | 
                    } 
 | 
                } catch (Exception ignore) { 
 | 
                } 
 | 
            } 
 | 
            // 删除工作档源库位的库存明细 
 | 
            if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", task.getSourceLocNo()))) { 
 | 
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                return FAIL.setMsg("全板出库 ===>> 删除库存明细失败; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]"); 
 | 
            } 
 | 
            // 修改源库位状态 R ===>> O 
 | 
            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) { 
 | 
                locMast.setLocSts(LocStsType.LOC_STS_TYPE_O.type); 
 | 
                locMast.setBarcode(""); 
 | 
                locMast.setModiTime(now); 
 | 
                locMast.setIoTime(now); 
 | 
                if (!locCacheService.updateById(locMast)) { 
 | 
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                    return FAIL.setMsg("全板出库 ===>> 修改源库位状态失败; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]"); 
 | 
                } 
 | 
            } else { 
 | 
                throw new CoolException("当前库位状态" + locMast.getLocSts() + ", 无法执行出库操作!!"); 
 | 
            } 
 | 
  
 | 
            BasStation devNo = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getStaNo())); 
 | 
            if (Objects.isNull(devNo)) { 
 | 
                throw new CoolException("站点:" + task.getSourceStaNo() + ", 不存在!!"); 
 | 
            } 
 | 
            devNo.setLocSts(LocStsType.LOC_STS_TYPE_F.type); 
 | 
            devNo.setModiTime(new Date()); 
 | 
            if (!basStationService.updateById(devNo)) { 
 | 
                throw new CoolException("站点信息修改失败!!"); 
 | 
            } 
 | 
            task.setWrkSts(15L); 
 | 
            if (!taskService.updateById(task)) { 
 | 
                throw new CoolException("任务状态修改失败!!"); 
 | 
            } 
 | 
        } else { 
 | 
  
 | 
        } 
 | 
        return SUCCESS; 
 | 
    } 
 | 
  
 | 
  
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public ReturnT<String> agvDoIn(Task wrkMast) { 
 | 
        LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo())); 
 | 
        if (Objects.isNull(locCache)) { 
 | 
            throw new CoolException("数据错误,库位不存在!!"); 
 | 
        } 
 | 
        if (!locCache.getLocSts().equals(LocStsType.LOC_STS_TYPE_S.type)) { 
 | 
            throw new CoolException("当前库位状态为:" + LocStsType.LOC_STS_TYPE_S.type + "." + LocStsType.LOC_STS_TYPE_S.desc + ",不是出库预约状态"); 
 | 
        } 
 | 
        List<WaitPakin> apallet = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode())); 
 | 
        if (Objects.isNull(apallet)) { 
 | 
            throw new CoolException("数据错误:组托数据不存在!!"); 
 | 
        } 
 | 
        apallet.forEach(pakin -> { 
 | 
            LocDetl detl = new LocDetl(); 
 | 
            BeanUtils.copyProperties(pakin, detl); 
 | 
            detl.setBarcode(pakin.getBarcode()) 
 | 
                    .setAnfme(pakin.getAnfme()) 
 | 
                    .setBrand(pakin.getBrand()) 
 | 
                    .setAppeTime(new Date()) 
 | 
                    .setSpecs(pakin.getSpecs()) 
 | 
                    .setColor(pakin.getColor()) 
 | 
                    .setLocNo(locCache.getLocNo()) 
 | 
                    .setAreaId(locCache.getAreaId()) 
 | 
                    .setAreaName(locCache.getAreaName()) 
 | 
                    .setUnit(pakin.getUnit()) 
 | 
                    .setBatch(pakin.getBatch()); 
 | 
            if (!locDetlService.insert(detl)) { 
 | 
                throw new CoolException("库位明细保存失败!!"); 
 | 
            } 
 | 
        }); 
 | 
  
 | 
        locCache.setLocSts(LocStsType.LOC_STS_TYPE_F.type); 
 | 
        locCache.setModiTime(new Date()); 
 | 
        locCache.setBarcode(wrkMast.getBarcode()); 
 | 
        locCache.setModiTime(new Date()); 
 | 
        locCache.setIoTime(new Date()); 
 | 
        if (!locCacheService.updateById(locCache)) { 
 | 
            throw new CoolException("库位状态修改失败!"); 
 | 
        } 
 | 
        wrkMast.setWrkSts(5L); 
 | 
        wrkMast.setModiTime(new Date()); 
 | 
        if (!taskService.updateById(wrkMast)) { 
 | 
            throw new CoolException("任务状态修改失败!!"); 
 | 
        } 
 | 
  
 | 
        Set<Long> list = apallet.stream().map(WaitPakin::getOrderId).collect(Collectors.toSet()); 
 | 
        List<OrderPakin> pakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("id", list)); 
 | 
        if (Objects.isNull(pakins) || pakins.isEmpty()) { 
 | 
            throw new CoolException("单据不存在!!"); 
 | 
        } 
 | 
  
 | 
        return SUCCESS; 
 | 
    } 
 | 
} 
 |