自动化立体仓库 - WMS系统
Junjie
2023-12-23 a0abdbc0b19c855fa53e47a9196dfa2cd41e8e9d
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;
@@ -282,6 +284,7 @@
            }
        }
        ArrayList<String> outerLocs = new ArrayList<>();
        //检测是否为浅库位
        boolean sign=false;
        String th = "";
@@ -299,17 +302,49 @@
                    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;
//                            sign = true;
//                            th = "库位号:" + locNo + " 浅库位有非空库位!";
//                            break;
                            OutLocDto outLocDto = new OutLocDto();
                            outLocDto.setLocNo(locMast.getLocNo());
                            List<LocDetlDto> locDetlDtos1 = new ArrayList<>();
                            for (LocDetl locDetl : locDetlService.selectByLocNo(locMast.getLocNo())) {
                                LocDetlDto locDetlDto = new LocDetlDto();
                                locDetlDto.setLocDetl(locDetl);
                                locDetlDto.setCount(locDetl.getAnfme());
                                locDetlDtos1.add(locDetlDto);
                            }
                            outLocDto.setLocDetlDtos(locDetlDtos1);
                            if (!outerLocs.contains(locMast.getLocNo())) {
                                dtos.add(outLocDto);
                                outerLocs.add(locMast.getLocNo());
                            }
                        }
                    }
                }
            }
        }
        if (sign){
            throw new CoolException("出库失败;"+th);
//        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());
@@ -344,6 +379,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());
@@ -1189,13 +1231,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);
            }
        }
    }
}