自动化立体仓库 - WMS系统
LSH
2023-08-14 1a987c661d60c77b258a3be42c09a3fd2ba3ae06
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -735,6 +735,54 @@
    @Transactional
    public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
        Date now = new Date();
        if (Cools.isEmpty(taskDto.getLocDtos()) || taskDto.getLocDtos().size()==0){
            // 获取库位
            LocMast locMast = locMastService.selectById(taskDto.getLocNo());
            // 获取路径
            int ioType = locMast.getLocSts().equals("D") ? 110 : 101;
            StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
            // 生成工作号
            int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
            // 生成工作档
            WrkMast wrkMast = new WrkMast();
            wrkMast.setWrkNo(workNo);
            wrkMast.setIoTime(now);
            wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID
            wrkMast.setIoType(ioType); // 入出库状态
            Double ioPri = wrkMastService.getIoPri(ioType, taskDto.getLocNo());
            wrkMast.setIoPri(ioPri); // 优先级:13
            wrkMast.setOutMost(locMastService.isOutMost(taskDto.getLocNo(), false) ? 1 : 0);
            wrkMast.setCrnNo(locMast.getCrnNo());
            wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站
            wrkMast.setStaNo(staDesc.getStnNo()); // 目标站
            wrkMast.setSourceLocNo(taskDto.getLocNo()); // 源库位
            wrkMast.setFullPlt(ioType==110? "N":"Y"); // 满板:Y
            wrkMast.setPicking("N"); // 拣料
            wrkMast.setExitMk("N"); // 退出
            wrkMast.setEmptyMk(ioType==110? "Y":"N"); // 空板
            wrkMast.setLinkMis("N");
            wrkMast.setBarcode(locMast.getBarcode());
            wrkMast.setAppeUser(userId); // 操作人员数据
            wrkMast.setAppeTime(now);
            wrkMast.setModiUser(userId);
            wrkMast.setModiTime(now);
            if (!wrkMastService.insert(wrkMast)) {
                throw new CoolException("保存工作档失败,出库库位号:" + taskDto.getLocNo());
            }
            // 修改库位状态:   F、D.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中
            locMast = locMastService.selectById(taskDto.getLocNo());
            if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") ) {
                locMast.setLocSts("R");
                locMast.setModiUser(userId);
                locMast.setModiTime(now);
                if (!locMastService.updateById(locMast)) {
                    throw new CoolException("预约库位状态失败,库位号:" + taskDto.getLocNo());
                }
            } else {
                throw new CoolException(taskDto.getLocNo() + "库位不是在库状态");
            }
            return;
        }
        List<LocDto> locDtos = taskDto.getLocDtos();
        for (LocDto locDto : locDtos) {
            if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
@@ -801,10 +849,11 @@
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作档明细失败");
            }
            if (!wrkDetl.getOrderNo().equals("伴生出库")){
            // 修改订单明细
            if (!BaseController.isJSON(locDto.getOrderNo())) {
                String[] orderNos = GetOrderNo(locDto.getOrderNo());
                if (!Cools.isEmpty(orderNos)){
                    if (!Cools.isEmpty(orderNos) && orderNos.length!=0){
                    Double anfme = locDto.getAnfme();
                    for (String orderNo : orderNos) {
                        OrderDetl orderDetl = orderDetlService.selectItem(orderNo, locDto.getMatnr(), locDto.getBatch());
@@ -849,6 +898,7 @@
                }
            }
        }
        }
        // 修改库位状态:   F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中
        locMast = locMastService.selectById(taskDto.getLocNo());
        if (locMast.getLocSts().equals("F")) {