自动化立体仓库 - WMS系统
zhangchao
2024-11-02 f5b7a2eb5125b17d470c9b8e0b9bb6ac1654dbae
合并代码,解决冲突
3个文件已修改
242 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java 107 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java 133 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
@@ -60,7 +60,7 @@
            agvLocDetl.setLocNo(locNo);
            this.insert(agvLocDetl);
            // 流水 -- 新增订单明细
            OrderDetl orderDetl = orderDetlService.selectItem(agvWrkDetl.getOrderNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getThreeCode());
            OrderDetl orderDetl = orderDetlService.selectItem(agvWrkDetl.getOrderNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode());
//            FlowLog flowLog = new FlowLog();
//            flowLog.setFid(String.valueOf(flowId));
//            flowLog.setSpare2(String.valueOf(taskCode));
@@ -91,39 +91,39 @@
    }
    public double queryStockAndSetLocDto(String matnr, String batch, String orderNo, List<LocDto> locDtoList, double issued, String csocode, String isoseq,String type) {
    public double queryStockAndSetLocDto(String matnr, String batch, String orderNo, List<LocDto> locDtoList, double issued, String csocode, String isoseq, String type) {
        //根据物料号和批次找到对应的库存,并且按照修改时间排序
        Wrapper<AgvLocDetl> wrapper = new EntityWrapper<AgvLocDetl>().eq("matnr", matnr).orderBy("modi_time");
        if (type != null) {
            wrapper.notLike("loc_no", "F1");
        }
        wapperSetCondition(wrapper,"batch",batch);
        wapperSetCondition(wrapper,"three_code",csocode);
        wapperSetCondition(wrapper,"dead_time",isoseq);
        wapperSetCondition(wrapper, "batch", batch);
        wapperSetCondition(wrapper, "three_code", csocode);
        wapperSetCondition(wrapper, "dead_time", isoseq);
        if ("JG".equals(orderNo.substring(0,2))) {
            wapperSetCondition(wrapper,"process_sts","1");
        if ("JG".equals(orderNo.substring(0, 2))) {
            wapperSetCondition(wrapper, "process_sts", "1");
        }
        List<AgvLocDetl> agvLocDetls = this.selectList(wrapper);
        for (AgvLocDetl agvLocDetl: agvLocDetls) {
        for (AgvLocDetl agvLocDetl : agvLocDetls) {
            //判断当前库位货物是否F在库
            AgvLocMast agvLocMast = agvLocMastService.selectById(agvLocDetl.getLocNo());
            if(!"F".equals(agvLocMast.getLocSts())){
            if (!"F".equals(agvLocMast.getLocSts())) {
                continue;
            }
            //如果订单剩余出库量大于0
            if(issued > 0) {
            if (issued > 0) {
                //当前库位的库存量
                double anfme = agvLocDetl.getAnfme();
                //int ioType = anfme > issued ? 101 : 103;
                anfme = anfme > issued ? issued : anfme;
                //用于显示工作明细档的订单号
                String orderNoWrkDtel = Utils.getOrderNo(orderNo,anfme);
                String orderNoWrkDtel = Utils.getOrderNo(orderNo, anfme);
                //更新订单数量
                orderNo = Utils.orderMergeUpdate(orderNo,anfme);
                LocDto locDto = new LocDto(agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getMaktx(), agvLocDetl.getBatch(), orderNoWrkDtel, anfme,agvLocDetl.getProcessSts());
                orderNo = Utils.orderMergeUpdate(orderNo, anfme);
                LocDto locDto = new LocDto(agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getMaktx(), agvLocDetl.getBatch(), orderNoWrkDtel, anfme, agvLocDetl.getProcessSts());
                locDto.setCsocode(csocode);
                locDto.setIsoseq(isoseq);
                locDto.setContainerCode(agvLocDetl.getSuppCode());
@@ -131,7 +131,7 @@
                //当前库位所处楼层
                int floor = Integer.parseInt(agvLocDetl.getLocNo().split("F")[1]);
                //locDto.setAgvStaNos(queryAgvStaNosByFloor(floor));
                locDto.setAgvStaNos(agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1(),floor));
                locDto.setAgvStaNos(agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1(), floor));
                locDtoList.add(locDto);
                issued -= anfme;
@@ -146,7 +146,7 @@
    更新库存明细
     */
    public void updateStock(String sourceLoc, String targetLoc) {
        this.baseMapper.updateStock(sourceLoc,targetLoc);
        this.baseMapper.updateStock(sourceLoc, targetLoc);
    }
    public Page<AgvLocDetl> getStockStatis(Page<AgvLocDetl> page) {
@@ -162,7 +162,7 @@
    @Override
    public AgvLocDetl selectItem(String locNo, String matnr, String batch, String csocode, String isoCode) {
        return this.baseMapper.selectItemByOrderNo(locNo, matnr, batch,csocode,isoCode);
        return this.baseMapper.selectItemByOrderNo(locNo, matnr, batch, csocode, isoCode);
    }
    @Override
@@ -176,12 +176,12 @@
    }
    @Override
    public Double getSumAnfmeDb(String matnr, String threeCode,Integer floor) {
    public Double getSumAnfmeDb(String matnr, String threeCode, Integer floor) {
        return this.baseMapper.selectSumAnfmeByMatnr2(matnr, threeCode, floor);
    }
    @Override
    public Double getSumAnfmeback(String matnr, String threeCode,Integer floor) {
    public Double getSumAnfmeback(String matnr, String threeCode, Integer floor) {
        return this.baseMapper.getSumAnfmeback(matnr, threeCode, floor);
    }
@@ -192,7 +192,7 @@
        return this.baseMapper.sum();
    }
    public List<AgvLocDetl> getStockStatisExcel(){
    public List<AgvLocDetl> getStockStatisExcel() {
        return this.baseMapper.getStockStatisExcel();
    }
@@ -201,20 +201,20 @@
            return new ArrayList<AgvLocDetl>();
        }
        EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>();
        if(Cools.isEmpty(orderNo)){
            wrapper.like("order_no",orderNo);
        if (Cools.isEmpty(orderNo)) {
            wrapper.like("order_no", orderNo);
        }
        if(Cools.isEmpty(matnr)){
            wrapper.like("matnr",matnr);
        if (Cools.isEmpty(matnr)) {
            wrapper.like("matnr", matnr);
        }
        if(Cools.isEmpty(maktx)){
            wrapper.like("maktx",maktx);
        if (Cools.isEmpty(maktx)) {
            wrapper.like("maktx", maktx);
        }
        if(Cools.isEmpty(specs)){
            wrapper.like("specs",specs);
        if (Cools.isEmpty(specs)) {
            wrapper.like("specs", specs);
        }
        if(Cools.isEmpty()){
            wrapper.like("loc_no",locNo);
        if (Cools.isEmpty()) {
            wrapper.like("loc_no", locNo);
        }
        return this.selectList(wrapper);
    }
@@ -222,42 +222,42 @@
    public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch, String csocode, String isocode) {
        EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>();
        wrapper.eq("loc_no", locNo);
        Utils.confirmOnlyMat(wrapper,matnr,batch,csocode,isocode);
        Utils.confirmOnlyMat(wrapper, matnr, batch, csocode, isocode);
        if (anfme <= 0) {
            return this.baseMapper.deleteLocDetl(locNo,anfme,matnr,batch,csocode,isocode) > 0;
            return this.baseMapper.deleteLocDetl(locNo, anfme, matnr, batch, csocode, isocode) > 0;
        } else {
            AgvLocDetl agvLocDetl = this.selectOne(wrapper);
            agvLocDetl.setAnfme(anfme);
            agvLocDetl.setModiTime(new Date());
            return this.baseMapper.updateAnfme(locNo,anfme,matnr,batch,csocode,isocode) > 0;
            return this.baseMapper.updateAnfme(locNo, anfme, matnr, batch, csocode, isocode) > 0;
        }
    }
    public boolean updateAnfmeProcess(Double anfme, String locNo, String matnr, String batch, String csocode, String isocode, Integer process) {
        EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>();
        wrapper.eq("loc_no", locNo);
        Utils.confirmOnlyMat(wrapper,matnr,batch,csocode,isocode);
        Utils.confirmOnlyMat(wrapper, matnr, batch, csocode, isocode);
        if (anfme <= 0) {
            return this.baseMapper.deleteLocDetl(locNo,anfme,matnr,batch,csocode,isocode) > 0;
            return this.baseMapper.deleteLocDetl(locNo, anfme, matnr, batch, csocode, isocode) > 0;
        } else {
            AgvLocDetl agvLocDetl = this.selectOne(wrapper);
            agvLocDetl.setAnfme(anfme);
            agvLocDetl.setModiTime(new Date());
            return this.baseMapper.updateAnfmeProcess(locNo,anfme,matnr,batch,csocode,isocode,process) > 0;
            return this.baseMapper.updateAnfmeProcess(locNo, anfme, matnr, batch, csocode, isocode, process) > 0;
        }
    }
    private void wapperSetCondition(Wrapper wrapper,String column, String condition){
        if(Cools.isEmpty(condition)){
            wrapper.andNew().eq(column,"").or().isNull(column);
        }else {
            wrapper.andNew().eq(column,condition);
    private void wapperSetCondition(Wrapper wrapper, String column, String condition) {
        if (Cools.isEmpty(condition)) {
            wrapper.andNew().eq(column, "").or().isNull(column);
        } else {
            wrapper.andNew().eq(column, condition);
        }
    }
    public AgvLocDetl selectByLocNo(String locNo){
        return this.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no",locNo));
    public AgvLocDetl selectByLocNo(String locNo) {
        return this.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
    }
    @Override
@@ -265,7 +265,7 @@
        List<AgvLocDetl> agvLocDetls = new ArrayList<>();
        taskDto.getLocDtos().forEach(locDto -> {
            AgvLocDetl agvLocDetl = this.selectByMatnrAndBatchAndCsocodeAndisoCode(locDto.getLocNo(),locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
            AgvLocDetl agvLocDetl = this.selectByMatnrAndBatchAndCsocodeAndisoCode(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
            agvLocDetls.add(agvLocDetl);
        });
        return agvLocDetls;
@@ -274,16 +274,16 @@
    @Override
    public AgvLocDetl selectByMatnrAndBatchAndCsocodeAndisoCode(String locNo, String matnr, String batch, String csocode, String isocode) {
        EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>();
        wrapper.eq("loc_no",locNo);
        Utils.confirmOnlyMat(wrapper,matnr,batch,csocode,isocode);
        wrapper.eq("loc_no", locNo);
        Utils.confirmOnlyMat(wrapper, matnr, batch, csocode, isocode);
        return this.selectOne(wrapper);
    }
    @Override
    public AgvLocDetl selectByMatnrAndBatchAndCsocodeAndisoCode2(String locNo,String orderNo, String matnr, String batch, String csocode, String isocode) {
    public AgvLocDetl selectByMatnrAndBatchAndCsocodeAndisoCode2(String locNo, String orderNo, String matnr, String batch, String csocode, String isocode) {
        EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>();
        wrapper.eq("loc_no",locNo);
        Utils.confirmOnlyMat2(wrapper,orderNo,matnr,batch,csocode,isocode);
        wrapper.eq("loc_no", locNo);
        Utils.confirmOnlyMat2(wrapper, orderNo, matnr, batch, csocode, isocode);
        return this.selectOne(wrapper);
    }
@@ -299,7 +299,7 @@
    @Override
    public AgvLocDetl selectLocdetl(String locNo, String matnr, String batch, String csocode, String isocode) {
        return this.baseMapper.selectLocdetl(locNo,matnr,batch,csocode,isocode);
        return this.baseMapper.selectLocdetl(locNo, matnr, batch, csocode, isocode);
    }
    @Override
@@ -314,8 +314,7 @@
        try {
            if (excelVersion == 2003) {
                book = new HSSFWorkbook(inStream);
            }
            else {  // 当 excel 是 2007 时
            } else {  // 当 excel 是 2007 时
                book = new XSSFWorkbook(inStream);
            }
        } catch (Exception e) {
@@ -335,10 +334,10 @@
            String containerCode = dataFormatter.formatCellValue(row.getCell(1));
            List<AgvLocDetl> agvLocDetls = this.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo).eq("supp_code", containerCode));
            if(Cools.isEmpty(agvLocDetls)){
            if (Cools.isEmpty(agvLocDetls)) {
                log.info("库位号:" + locNo + ",货架码:" + containerCode + ",不存在明细");
            }
            if(agvLocDetls.size()>1){
            if (agvLocDetls.size() > 1) {
                log.info("库位号:" + locNo + ",货架码:" + containerCode + ",存在1条以上记录");
            }
        }
@@ -346,6 +345,6 @@
    @Override
    public void updateLocNo(String locNo, String sourceLoc, AgvLocDetl agvLocDetl) {
        this.baseMapper.updateLocNo(locNo,sourceLoc,agvLocDetl.getSuppCode());
        this.baseMapper.updateLocNo(locNo, sourceLoc, agvLocDetl.getSuppCode());
    }
}
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -52,6 +52,8 @@
        return this.baseMapper.selectItemByOrderNo2(orderNo, matnr, batch, threeCode);
    }
    @Override
    public OrderDetl selectItemNoneOfBatch(String orderNo, String matnr) {
        return this.baseMapper.selectItemNoneOfBatch(orderNo, matnr);
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -108,8 +108,6 @@
    @Autowired
    private OrderDetlService orderDetlService;
    @Autowired
    private OrderDetlService orderDetlService;
    @Autowired
    private SnowflakeIdWorker snowflakeIdWorker;
    @Autowired
    private FlowLogService flowLogService;
@@ -119,10 +117,9 @@
        //用于上报mes的工作档明细
        List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
        try {
        long flowId = snowflakeIdWorker.nextId();
        Date now = new Date();
        try{
        try {
            int wrkNo = agvWrkMast.getWrkNo();
            String barcode = agvWrkMast.getBarcode();
            String orderNo = getOrderNoByWrkNo(wrkNo);
@@ -208,7 +205,7 @@
//                            if (!flowLogService.insert(flowLog)) {
//                                throw new CoolException("同步半成品调拨单流水记录失败");
//                            }
                            agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime());
                            agvLocDetlService.updateAnfme(updateAnfme, agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getBatch(), agvLocDetl.getThreeCode(), agvLocDetl.getDeadTime());
                        }
                        //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
@@ -230,60 +227,60 @@
                        }
                    });
                    // 更新站点 + 库位状态     源库位是站点
                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue());
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                    break;
                case 58:
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue());
                    break;
                case 108:
                case 114:
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                    //更新库存明细
                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo());
                    //修改源库位状态为O
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
                    break;
                case 109:
                    // 库位 -- 接驳位 / 库位
                    if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) {
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    if (agvWrkMast.getLocNo().substring(0, 2).equals("DB")) {
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                        // 接驳位 -- 库位
                    } else {
                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                    }
                    // 接驳位 -- 库位
                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
                    if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) {
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0);
                        // 库位 -- 接驳位 / 库位
                    } else {
                        //修改源库位状态为O
                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
                    }
                    break;
                case 111:
                    // 库位 -- 接驳位 / 库位
                    if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) {
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    if (agvWrkMast.getLocNo().substring(0, 2).equals("DB")) {
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                        // 接驳位 -- 库位
                    } else {
                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                    }
                    // 接驳位 -- 库位
                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
                    if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) {
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0);
                        // 库位 -- 接驳位 / 库位
                    } else {
                        //修改源库位状态为O
                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
                        //更新目标库位明细 101.出库 删除源库位库存明细
                        agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
                        agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo()));
                    }
                    break;
                case 112:
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                    List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
                    for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
                        AgvLocDetl locDetl = new AgvLocDetl();
@@ -293,27 +290,27 @@
                        agvLocDetlService.insert(locDetl);
                    }
                    // 接驳位 -- 库位
                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
                    if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) {
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0);
                        // 库位 -- 接驳位 / 库位
                    } else {
                        //修改源库位状态为O
                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
                    }
                    break;
                case 113:
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                    // 接驳位 -- 库位
                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
                    if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) {
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0);
                    }
                    break;
                case 121:
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                    //更新库存明细
                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo());
                    //修改源库位状态为O
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
                    break;
                default:
@@ -323,7 +320,7 @@
                //删除AGV工作档
                agvWrkMastService.deleteById(wrkNo);
                //删除AGV工作明细档
                agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
                agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
            }
//            else {
//                agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
@@ -333,7 +330,7 @@
//                agvWrkMastService.updateById(agvWrkMast);
//            }
            if(!isJSON(orderNo)){
            if (!isJSON(orderNo)) {
                //检查订单是否已完成
                orderService.checkComplete(orderNo, agvWrkMast.getPltType());
            } else {
@@ -383,11 +380,11 @@
            agvWrkMastService.updateById(agvWrkMast);
            //修改源库位状态为O
            if (agvWrkMast.getIoType() == 110) {
                agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
                agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null);
            }
            if(agvWrkMast.getIoType() == 101){
            if (agvWrkMast.getIoType() == 101) {
                //更新目标库位明细 101.出库 删除源库位库存明细
                agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
                agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo()));
                //生成空板入库任务
                Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2));
                try {
@@ -427,7 +424,7 @@
                    agvBasDevp.setLocSts("R");
                    agvBasDevp.setLocType2(Short.valueOf(agvWrkMast.getBarcode().substring(0, 2)));
                    agvBasDevpService.updateById(agvBasDevp);
                }catch (Exception e){
                } catch (Exception e) {
                    e.printStackTrace();
                    log.error(e.getMessage());
                }
@@ -440,11 +437,11 @@
            //删除AGV工作档
            agvWrkMastService.deleteById(wrkNo);
            //删除AGV工作明细档
            agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
            if(!isJSON(orderNo)){
            agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
            if (!isJSON(orderNo)) {
                //检查订单是否已完成
                orderService.checkComplete(orderNo);
            }else{
                orderService.checkComplete(orderNo, agvWrkMast.getPltType());
            } else {
                List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
                maps.forEach(map -> {
                    String o = map.get("orderNo").toString();
@@ -485,10 +482,10 @@
            agvWrkMast.setModiTime(new Date());
            agvWrkMastService.updateById(agvWrkMast);
            //修改源库位状态为O
            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
            if(agvWrkMast.getIoType() == 101){
            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null);
            if (agvWrkMast.getIoType() == 101) {
                //更新目标库位明细 101.出库 删除源库位库存明细
                agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
                agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo()));
            }
            //生成AGV工作历史档
@@ -498,15 +495,15 @@
            //删除AGV工作档
            agvWrkMastService.deleteById(wrkNo);
            //删除AGV工作明细档
            agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
            if(!isJSON(orderNo)){
            agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
            if (!isJSON(orderNo)) {
                //检查订单是否已完成
                orderService.checkComplete(orderNo);
            }else{
                orderService.checkComplete(orderNo, agvWrkMast.getPltType());
            } else {
                List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
                maps.forEach(map -> {
                    String o = map.get("orderNo").toString();
                    orderService.checkComplete(o);
                    orderService.checkComplete(o, agvWrkMast.getPltType());
                });
            }
            //上报mes
@@ -528,19 +525,19 @@
    @Synchronized
    public ReturnT<String> startPutWayWrk(AgvWrkMast agvWrkMast) throws IOException {
        try{
        try {
            //下发任务
            int startWrkCode = agvWrkMastService.startWrk(agvWrkMast);
            if(startWrkCode != 0){
            if (startWrkCode != 0) {
                throw new CoolException("任务下发失败");
            }
            agvWrkMast.setWrkSts(202L);
            agvWrkMast.setModiTime(new Date());
            agvWrkMastService.updateById(agvWrkMast);
            if(agvWrkMast.getIoType() == 1){
            if (agvWrkMast.getIoType() == 1) {
                //修改AGV入库通知档状态入出状态为Y
                agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y");
                agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(), "Y");
            }
            return SUCCESS;
        } catch (Exception e) {
@@ -553,16 +550,16 @@
    @Transactional
    @Synchronized
    public ReturnT<String> startAllcationIn(AgvWrkMast agvWrkMast) throws IOException {
        //下发任务
        try{
        try {
            int startWrkCode = agvWrkMastService.startAllcationIn(agvWrkMast);
            if(startWrkCode != 0){
            if (startWrkCode != 0) {
                throw new CoolException("任务下发失败");
            }
            return SUCCESS;
        }catch (Exception e){
            log.error("任务下发失败"+e.getMessage());
        } catch (Exception e) {
            log.error("任务下发失败" + e.getMessage());
        }
        return FAIL;
@@ -601,11 +598,11 @@
            List<Map<String, Object>> devNoMaps = agvBasDevpService.selectDevNoAndNumBystationCode(agvWrkMast.getLocNo());
            //取第一个暂存位,并查询其次数与配置的次数做比较
            Map<String, Object> devNoMap = devNoMaps.get(0);
            if((int)devNoMap.get("num") < maxWrokNum){
            if ((int) devNoMap.get("num") < maxWrokNum) {
                agvWrkMast.setLocNo(devNoMap.get("dev_no").toString());
                agvWrkMast.setModiTime(new Date());
                agvWrkMastService.updateById(agvWrkMast);
                log.info("after:" + devNoMap.toString()  +  ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo());
                log.info("after:" + devNoMap.toString() + ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo());
            }
        });
@@ -644,10 +641,10 @@
        }
    }
    private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList){
    private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList) {
        return agvWrkMastList.stream().filter(agvWrkMast -> {
            AgvWrkMast agvWrkMastWroking = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", agvWrkMast.getLocNo()));
            if(!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts()<=202){
            if (!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts() <= 202) {
                System.out.println("source_loc_no > 1");
                return false;
            }
@@ -660,7 +657,7 @@
    /*
  生成工作档
   */
    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor){
    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor) {
        AgvWrkMast wrkMast = new AgvWrkMast();
        //工作状态
        wrkMast.setWrkSts(wrkSts);
@@ -689,7 +686,7 @@
            throw new CoolException("保存工作档失败");
        }
        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo).eq("barcode",barcode).orderBy("modi_time",false));
        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no", sourceLocNo).eq("barcode", barcode).orderBy("modi_time", false));
        return wrkMast;
    }