自动化立体仓库 - WMS系统
#
LSH
2023-02-14 c46f9c28f8d40d2a4efcc7ef6e528661d97a4be0
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -1,6 +1,8 @@
package com.zy.asrs.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.BaseRes;
@@ -170,8 +172,13 @@
            }
        }
        if (!locDetlDtos.isEmpty()) {
            // 启动出库开始 101.出库
            stockOut(staNo, locDetlDtos, null, userId);
            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
            if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") ){
                // 启动出库开始 101.出库
                stockOut(staNo, locDetlDtos, null, userId);
            }else {
                throw new CoolException("所选库位存在状态不为F、D的库位,库位号:"+locMast.getLocNo()+" 、当前状态:"+locMast.getLocSts()+"-"+locMast.getLocSts$());
            }
        } else {
            throw new CoolException("库存不存在");
        }
@@ -233,7 +240,7 @@
            wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID
            wrkMast.setIoType(ioType); // 入出库状态
            Double ioPri = wrkMastService.getIoPri(ioType, dto.getLocNo());
            wrkMast.setIoPri(13D); // 优先级:13
            wrkMast.setIoPri(15D); // 优先级:13
            wrkMast.setOutMost(locMastService.isOutMost(dto.getLocNo(), false) ? 1 : 0);
            wrkMast.setCrnNo(locMast.getCrnNo());
            wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站
@@ -359,7 +366,7 @@
                throw new CoolException("保存工作档明细失败");
            }
            // 修改订单明细
            if (BaseController.isJSON(locDto.getOrderNo())) {
            if (!BaseController.isJSON(locDto.getOrderNo())) {
                String[] orderNos = GetOrderNo(locDto.getOrderNo());
                if (!Cools.isEmpty(orderNos)){
                    Double anfme = locDto.getAnfme();
@@ -393,6 +400,7 @@
            } else {
                // 订单合并出库
                List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
                for (OrderDto orderDto : orderDtoList) {
                    OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
                    if (orderDetl == null) {
@@ -535,6 +543,9 @@
            if (Cools.isEmpty(locMast)) {
                throw new CoolException(locNo + "库位不存在");
            }
            if (!locMast.getLocSts().equals("D")){
                throw new CoolException("所选库位存在状态不为D的库位,库位号:"+locMast.getLocNo()+" 、当前状态:"+locMast.getLocSts()+"-"+locMast.getLocSts$());
            }
            // 获取源站
            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                    .eq("type_no", 110)
@@ -603,8 +614,14 @@
            }
        }
        if (!locDetlDtos.isEmpty()) {
            // 启动出库开始 107.盘点出库
            stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId);
            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
            if (locMast.getLocSts().equals("F")){
                // 启动出库开始 107.盘点出库
                stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId);
            }else {
                throw new CoolException("所选库位存在状态不为F的库位,库位号:"+locMast.getLocNo()+" 、当前状态:"+locMast.getLocSts()+"-"+locMast.getLocSts$());
            }
        } else {
            throw new CoolException("库位物料不存在");
        }
@@ -621,6 +638,9 @@
        LocMast loc = locMastService.selectById(locNo);
        if (Cools.isEmpty(loc)) {
            throw new CoolException("未找到库位");
        }
        if (!loc.getLocSts().equals("O")||(!sourceLoc.getLocSts().equals("F") && !sourceLoc.getLocSts().equals("D"))){
            throw new CoolException("库位状态已改变");
        }
        if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
//            throw new CoolException("移转库位属于不同堆垛机");   todo:luxiaotao
@@ -707,6 +727,7 @@
            wrkMast.setWrkSts(9L);
            // 出库
        } else if (wrkMast.getWrkSts() > 10) {
            wrkMast.setSteNo(0);
            wrkMast.setWrkSts(17L);
        }
        Date now = new Date();
@@ -883,6 +904,9 @@
                locSts = "D";
                // 库位转移 ===>> D.空桶/空栈板
            } else if (wrkMast.getIoType() == 11) {
                if (wrkMast.getWrkSts() > 11){
                    throw new CoolException("移库任务已在执行中,不能取消");
                }
                locSts = wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F";
                // 库位转移:目标库位
                LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
@@ -909,7 +933,7 @@
                        if (!Cools.isEmpty(orderNo)) {
                            Double anfme = Integer.parseInt(anfmes[i]) + 0.0;
                            i++;
                            if (BaseController.isJSON(wrkDetl.getOrderNo())) {
                            if (!BaseController.isJSON(wrkDetl.getOrderNo())) {
                                if (!orderDetlService.decrease(orderNo, wrkDetl.getMatnr(), wrkDetl.getBatch(), anfme)) {
                                    throw new CoolException("订单数据回滚失败");
                                }
@@ -925,7 +949,7 @@
                        }
                    }
                }else {
                    if (BaseController.isJSON(wrkDetl.getOrderNo())) {
                    if (!BaseController.isJSON(wrkDetl.getOrderNo())) {
                        if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
                            throw new CoolException("订单数据回滚失败");
                        }
@@ -1059,9 +1083,9 @@
        if (Cools.isEmpty(locNos)) {
            return;
        }
        if (true && !Cools.isEmpty(locNos)) {
            throw new CoolException("暂不支持移库任务");    // todo:luxiaotao 移库开关
        }
//        if (true && !Cools.isEmpty(locNos)) {
//            throw new CoolException("暂不支持移库任务");    // todo:luxiaotao 移库开关
//        }
        LocMast one = locMastService.selectById(locNos.get(0));
        List<Integer> rows = Utils.getGroupLoc(Integer.parseInt(locNos.get(0).substring(0, 2)));
        List<LocMast> locMasts = locMastService.queryFreeLocMast(rows, rows.size(), one.getLocType1());