|  |  | 
 |  |  |             agvTaskDtos.add(taskDto); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  | //        //寻找空站点位置 | 
 |  |  | //        AgvBasDevp agvBasDevp = agvBasDevpService.selectEmptyDevpByStation(locDto.getAgvStaNo()); | 
 |  |  | //        if(Cools.isEmpty(agvBasDevp)){ | 
 |  |  | //            //如果没有找到空站点,则生成准备任务 | 
 |  |  | //            //TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getAgvStaNo(), locDto); | 
 |  |  | //            //agvTaskDtos.add(taskDto); | 
 |  |  | //            //如果库位存在混载 | 
 |  |  | // | 
 |  |  | //            return; | 
 |  |  | //        } | 
 |  |  | ////        agvBasDevp.setLocSts("S"); | 
 |  |  | ////        agvBasDevpService.updateById(agvBasDevp); | 
 |  |  | //        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(),"S",null); | 
 |  |  | //        //TaskDto taskDto = new TaskDto(locDto.getLocNo(), agvBasDevp.getDevNo(), locDto); | 
 |  |  | //        taskDto.setAgvStaNo(agvBasDevp.getDevNo()); | 
 |  |  |  | 
 |  |  |         //agvTaskDtos.add(taskDto); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /* | 
 
 |  |  | 
 |  |  |             AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,false); | 
 |  |  |             //生成工作档明细 | 
 |  |  |             taskDto.getLocDtos().forEach(locDto -> { | 
 |  |  |                 //明细档所需参数 | 
 |  |  |                 createWrkDetlReWrite(locDto.getMatnr(), | 
 |  |  |                         wrkMast.getWrkNo(), | 
 |  |  |                         locDto.getOrderNo(), | 
 |  |  |                         locDto.getBatch(), | 
 |  |  |                         locDto.getAnfme(), | 
 |  |  |                         locDto.getContainerCode(), | 
 |  |  |                         now, | 
 |  |  |                         userId, | 
 |  |  |                         locDto.getCsocode(), | 
 |  |  |                         locDto.getIsoseq()); | 
 |  |  |                 if (!BaseController.isJSON(locDto.getOrderNo())) { | 
 |  |  |                     //明细档所需参数 | 
 |  |  |                     createWrkDetlReWrite(locDto.getMatnr(), | 
 |  |  |                             wrkMast.getWrkNo(), | 
 |  |  |                             locDto.getOrderNo(), | 
 |  |  |                             locDto.getBatch(), | 
 |  |  |                             locDto.getAnfme(), | 
 |  |  |                             locDto.getContainerCode(), | 
 |  |  |                             now, | 
 |  |  |                             userId, | 
 |  |  |                             locDto.getCsocode(), | 
 |  |  |                             locDto.getIsoseq()); | 
 |  |  |                 }else { | 
 |  |  |                     List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class); | 
 |  |  |                     orderDtoList.forEach(orderDto -> { | 
 |  |  |                         //明细档所需参数 | 
 |  |  |                         createWrkDetlReWrite(locDto.getMatnr(), | 
 |  |  |                                 wrkMast.getWrkNo(), | 
 |  |  |                                 orderDto.getOrderNo(), | 
 |  |  |                                 locDto.getBatch(), | 
 |  |  |                                 orderDto.getAnfme(), | 
 |  |  |                                 locDto.getContainerCode(), | 
 |  |  |                                 now, | 
 |  |  |                                 userId, | 
 |  |  |                                 locDto.getCsocode(), | 
 |  |  |                                 locDto.getIsoseq()); | 
 |  |  |                     }); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 //修改订单信息 | 
 |  |  |                 modifyOrderDetl(locDto, userId); | 
 |  |  | 
 |  |  |     @Transactional | 
 |  |  |     public void locCheckOut(StockOutParam param, Long userId) { | 
 |  |  |         String station = param.getStation(); | 
 |  |  | //        List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>() | 
 |  |  | //                .eq("station_code", station) | 
 |  |  | //                .eq("loc_sts","O")); | 
 |  |  | // | 
 |  |  | //        if(param.getLocDetls().size() > agvBasDevpList.size()){ | 
 |  |  | //            throw new CoolException("当前站点可用缓存货架数量为" + agvBasDevpList.size() + ",少于需要盘点出库库位数量,请重新选择盘点库位"); | 
 |  |  | //        } | 
 |  |  |  | 
 |  |  |         List<TaskDto> taskDtos = new ArrayList<>(); | 
 |  |  |         param.getLocDetls().forEach(locDetl -> { | 
 |  |  | 
 |  |  |             //locSts = ioType == 101 ? "S" : "Q"; | 
 |  |  |             updateAgvBasDevp(agvBasDevpService.selectById(wrkMast.getLocNo()),"S"); | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |  | 
 |  |  | //        param.getLocDetls().forEach(locDetl -> { | 
 |  |  | //            AgvLocMast agvLocMast = agvLocMastService.selectById(locDetl.getLocNo()); | 
 |  |  | //            AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locDetl.getLocNo())); | 
 |  |  | //            AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() | 
 |  |  | //                    .eq("station_code", station) | 
 |  |  | //                    .eq("loc_sts","O")); | 
 |  |  | //            Date now = new Date(); | 
 |  |  | // | 
 |  |  | //            //生成工作党 | 
 |  |  | //            AgvWrkMast wrkMast = createWrkMast(107, 21L, locDetl.getLocNo(), agvBasDevp.getDevNo(), agvLocDetl.getSuppCode(), now, userId,false); | 
 |  |  | //            //生成工作明细档 | 
 |  |  | //            createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId,agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); | 
 |  |  | //            //修改库位信息 | 
 |  |  | //            updateAgvLocMast(agvLocMast,"P"); | 
 |  |  | //            //修改站点信息 | 
 |  |  | //            updateAgvBasDevp(agvBasDevp,"S"); | 
 |  |  | // | 
 |  |  | //        }); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |                     orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq()); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 if(locAnfme > orderDetl.getAnfme()){ | 
 |  |  |                     orderAnfme = orderDetl.getAnfme(); | 
 |  |  |                 orderAnfme = orderDetl.getAnfme() - orderDetl.getQty(); | 
 |  |  |  | 
 |  |  |                 if(locAnfme > orderAnfme){ | 
 |  |  |                     locAnfme -= orderAnfme; | 
 |  |  |                 }else { | 
 |  |  |                     orderAnfme = locAnfme; | 
 
 |  |  | 
 |  |  |                 double anfme = locDetl.getAnfme(); | 
 |  |  |                 int ioType = anfme > issued ? 103 : 101; | 
 |  |  |                 anfme = anfme > issued ? issued : anfme; | 
 |  |  |                 LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderNo, anfme); | 
 |  |  |  | 
 |  |  |                 //用于显示工作明细档的订单号 | 
 |  |  |                 String orderNoWrkDtel = Utils.getOrderNo(orderNo,anfme); | 
 |  |  |                 //更新订单数量 | 
 |  |  |                 orderNo = Utils.orderMergeUpdate(orderNo,anfme); | 
 |  |  |  | 
 |  |  |                 LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderNoWrkDtel, anfme); | 
 |  |  |  | 
 |  |  |                 List<Integer> outSite = basDevpService.getAvailableOutSite(101); | 
 |  |  |                 List<Integer> pickOutSite = basDevpService.getAvailableOutSite(103); | 
 
 |  |  | 
 |  |  |             } | 
 |  |  |             Mat mat = matService.selectByMatnr(locDto.getMatnr()); | 
 |  |  |             assert mat != null; | 
 |  |  |             WrkDetl wrkDetl = new WrkDetl(); | 
 |  |  |             wrkDetl.sync(mat); | 
 |  |  |             wrkDetl.setZpallet(wrkMast.getBarcode()); | 
 |  |  |             wrkDetl.setIoTime(now); | 
 |  |  |             wrkDetl.setWrkNo(workNo); | 
 |  |  |             wrkDetl.setBatch(locDto.getBatch()); | 
 |  |  |             wrkDetl.setOrderNo(locDto.getOrderNo()); | 
 |  |  |             wrkDetl.setAnfme(locDto.getAnfme()); // 数量 | 
 |  |  |             wrkDetl.setAppeTime(now); | 
 |  |  |             wrkDetl.setAppeUser(userId); | 
 |  |  |             wrkDetl.setModiTime(now); | 
 |  |  |             wrkDetl.setModiUser(userId); | 
 |  |  |             wrkDetl.setSuppCode(locDto.getContainerCode()); | 
 |  |  |             wrkDetl.setThreeCode(locDto.getCsocode()); | 
 |  |  |             wrkDetl.setDeadTime(locDto.getIsoseq()); | 
 |  |  |             if (!wrkDetlService.insert(wrkDetl)) { | 
 |  |  |                 throw new CoolException("保存工作档明细失败"); | 
 |  |  |  | 
 |  |  |             if (!BaseController.isJSON(locDto.getOrderNo())) { | 
 |  |  |                 WrkDetl wrkDetl = new WrkDetl(); | 
 |  |  |                 wrkDetl.sync(mat); | 
 |  |  |                 wrkDetl.setZpallet(wrkMast.getBarcode()); | 
 |  |  |                 wrkDetl.setIoTime(now); | 
 |  |  |                 wrkDetl.setWrkNo(workNo); | 
 |  |  |                 wrkDetl.setBatch(locDto.getBatch()); | 
 |  |  |                 wrkDetl.setOrderNo(locDto.getOrderNo()); | 
 |  |  |                 wrkDetl.setAnfme(locDto.getAnfme()); // 数量 | 
 |  |  |                 wrkDetl.setAppeTime(now); | 
 |  |  |                 wrkDetl.setAppeUser(userId); | 
 |  |  |                 wrkDetl.setModiTime(now); | 
 |  |  |                 wrkDetl.setModiUser(userId); | 
 |  |  |                 wrkDetl.setSuppCode(locDto.getContainerCode()); | 
 |  |  |                 wrkDetl.setThreeCode(locDto.getCsocode()); | 
 |  |  |                 wrkDetl.setDeadTime(locDto.getIsoseq()); | 
 |  |  |                 if (!wrkDetlService.insert(wrkDetl)) { | 
 |  |  |                     throw new CoolException("保存工作档明细失败"); | 
 |  |  |                 } | 
 |  |  |                 //补货单则生成AGV入库通知档 | 
 |  |  |                 generateAgvWaitpakin(wrkDetl); | 
 |  |  |             }else { | 
 |  |  |                 List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class); | 
 |  |  |                 orderDtoList.forEach(orderDto -> { | 
 |  |  |                     WrkDetl wrkDetl = new WrkDetl(); | 
 |  |  |                     wrkDetl.sync(mat); | 
 |  |  |                     wrkDetl.setZpallet(wrkMast.getBarcode()); | 
 |  |  |                     wrkDetl.setIoTime(now); | 
 |  |  |                     wrkDetl.setWrkNo(workNo); | 
 |  |  |                     wrkDetl.setBatch(locDto.getBatch()); | 
 |  |  |                     wrkDetl.setOrderNo(orderDto.getOrderNo()); | 
 |  |  |                     wrkDetl.setAnfme(orderDto.getAnfme()); // 数量 | 
 |  |  |                     wrkDetl.setAppeTime(now); | 
 |  |  |                     wrkDetl.setAppeUser(userId); | 
 |  |  |                     wrkDetl.setModiTime(now); | 
 |  |  |                     wrkDetl.setModiUser(userId); | 
 |  |  |                     wrkDetl.setSuppCode(locDto.getContainerCode()); | 
 |  |  |                     wrkDetl.setThreeCode(locDto.getCsocode()); | 
 |  |  |                     wrkDetl.setDeadTime(locDto.getIsoseq()); | 
 |  |  |                     if (!wrkDetlService.insert(wrkDetl)) { | 
 |  |  |                         throw new CoolException("保存工作档明细失败"); | 
 |  |  |                     } | 
 |  |  |                     //补货单则生成AGV入库通知档 | 
 |  |  |                     generateAgvWaitpakin(wrkDetl); | 
 |  |  |                 }); | 
 |  |  |             } | 
 |  |  |             //补货单则生成AGV入库通知档 | 
 |  |  |             generateAgvWaitpakin(wrkDetl); | 
 |  |  |  | 
 |  |  |             // 修改订单明细 | 
 |  |  |             if (!BaseController.isJSON(locDto.getOrderNo())) { | 
 |  |  | 
 |  |  |                         orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq()); | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |                     if(locAnfme > orderDetl.getAnfme()){ | 
 |  |  |                         orderAnfme = orderDetl.getAnfme(); | 
 |  |  |                     orderAnfme = orderDetl.getAnfme() - orderDetl.getQty(); | 
 |  |  |  | 
 |  |  |                     if(locAnfme > orderAnfme){ | 
 |  |  |                         locAnfme -= orderAnfme; | 
 |  |  |                     }else { | 
 |  |  |                         orderAnfme = locAnfme; |