自动化立体仓库 - WMS系统
zyx
2023-12-21 4ca7e95c87431a19ac75db388ff408f0b2df9a9c
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;
@@ -281,6 +283,53 @@
                dtos.add(new OutLocDto(locNo, locDetlDto));
            }
        }
        //检测是否为浅库位
        boolean sign=false;
        String th = "";
        for (String locNo : locNos) {
            if (sign) {
                break;
            }
            List<String> groupOuterLoc = Utils.getGroupOuterLoc(locNo);
            if (!Cools.isEmpty(groupOuterLoc)) {
                for (String outerLoc : groupOuterLoc) {
                    if (locNos.contains(outerLoc)) {
                        continue;
                    }
                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", outerLoc));
                    if (locMast != null) {
                        if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")) {
                            sign = true;
                            th = "库位号:" + locNo + " 浅库位有非空库位!";
                            break;
                        }
                    }
                }
            }
        }
        if (sign){
            throw new CoolException("出库失败;"+th);
        }
        //**************325、331、333、339站点额外逻辑代码**************
        HashMap<String, Object> tmpMap = new HashMap<>();
        if (staNo.getDevNo() == 325 || staNo.getDevNo() == 331 || staNo.getDevNo() == 333 || staNo.getDevNo() == 339) {
            int[] data = {325,331,333,339};
            for (String locNo : locNos) {
                List<String> groupOuterLoc = Utils.getGroupDeepLoc(locNo);
                if (groupOuterLoc.isEmpty()) {
                    continue;
                }
                int index = 0;
                for (String loc : groupOuterLoc) {
                    tmpMap.put(loc, data[index++]);
                }
            }
        }
        //**************325、331、333、339站点额外逻辑代码**************
        Integer ioType = null;
        List<String> excludeLocNos = dtos.stream().map(OutLocDto::getLocNo).distinct().collect(Collectors.toList());
        // 生成工作档
@@ -314,6 +363,13 @@
            if (stnNo == 325 || stnNo == 331 || stnNo == 333 || stnNo == 339) {
                stnNo = staDesc.getCrnStn();
                sourceStaNo = staDesc.getStnNo();
                //**************325、331、333、339站点额外逻辑代码**************
                Object autoStnNo = tmpMap.get(dto.getLocNo());//获取系统自动分配站点
                if (autoStnNo != null) {
                    sourceStaNo = Integer.parseInt(autoStnNo.toString());
                }
                //**************325、331、333、339站点额外逻辑代码**************
            }
            int lev = Utils.getLev(dto.getLocNo());
@@ -1159,13 +1215,28 @@
    }
    private void generateAgvWaitpakin(WrkDetl wrkDetl){
        Order order = orderService.selectByNo(wrkDetl.getOrderNo());
        DocType docType = docTypeService.selectById(order.getDocType());
        if("人工补货单".equals(docType.getDocName())){
            AgvWaitPakin agvWaitPakin = new AgvWaitPakin();
            BeanUtils.copyProperties(wrkDetl,agvWaitPakin);
            agvWaitPakinService.insert(agvWaitPakin);
        String orderNo = wrkDetl.getOrderNo();
        if(orderNo.contains("{")){
            JSONArray orderArray = JSON.parseArray(orderNo);
            for (Object o : orderArray){
                JSONObject jsonobject = (JSONObject) o;
                Order order = orderService.selectByNo(jsonobject.get("orderNo").toString());
                DocType docType = docTypeService.selectById(order.getDocType());
                if("人工补货单".equals(docType.getDocName())){
                    throw new CoolException("合并单据中包含人工补货单,单据为: " + jsonobject.get("orderNo"));
                }
            }
        }else {
            Order order = orderService.selectByNo(orderNo);
            DocType docType = docTypeService.selectById(order.getDocType());
            if("人工补货单".equals(docType.getDocName())){
                AgvWaitPakin agvWaitPakin = new AgvWaitPakin();
                BeanUtils.copyProperties(wrkDetl,agvWaitPakin);
                agvWaitPakinService.insert(agvWaitPakin);
            }
        }
    }
}