yangyang
2025-07-15 ff370ab5aa1f046824e73e1cafab1be6acb13780
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
@@ -532,6 +532,11 @@
        return mergePreviewDtos;
    }
    /**
     * 波次出库预览
     * @param param
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public List<MergePreviewResultDto> orderOutMergeLocPreview(List<MergePreviewDto> param) {
        if (param == null) {
@@ -567,7 +572,7 @@
            //查询平库中符合条件的库存
            List<LocDetl> locs = locDetlService.queryFlatStock(pars.getMatnr(), pars.getBatch(), pars.getFieldParams());
            if (!locs.isEmpty()) {
                double anfme = pars.getAnfme() - pars.getWorkQty();
                Double anfme = pars.getAnfme() - pars.getWorkQty();
                for (LocDetl detl : locs) {
                    Loc loc = locService.getById(detl.getLocId());
                    if (loc == null) {
@@ -591,8 +596,8 @@
                        continue;
                    }
                    //波次数量减去库位可用数量后,盈余数量
                    anfme = anfme - surplusQty;
                    if (anfme > 0) {
                    anfme = Math.round((anfme - surplusQty) * 10000) / 10000.0;
                    if (anfme.compareTo(0.0) > 0) {
                        //当前可使用数量
                        resultDto.setFetchQty(surplusQty);
                        //余下需求数量
@@ -1021,9 +1026,10 @@
     * 根据不同库位类型生成出库拣货单或CTU任务档
     *
     * @param dto
     * @param wave
     * @param
     */
    private void outStockByArea(OrderOutMergeParamDto dto, Wave wave) {
    @Transactional(rollbackFor = Exception.class)
    public void outStockByArea(OrderOutMergeParamDto dto, Wave wave) {
        List<OrderOutMergeParam> params = dto.getList();
        if (params.isEmpty()) {
            throw new CoolException("参数不能为空");
@@ -1137,9 +1143,12 @@
                }
                String matUniqueKey = Utils.getMatUniqueKey(taskDetl.getMatnr(), taskDetl.getBatch(), taskDetl.getUniqueField());
                WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getStockIndex, matUniqueKey).eq(WaveDetl::getWaveId, wave.getId()));
                logger.error("Matnr------>{}", taskDetl.getMatnr());
                WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>()
                        .eq(WaveDetl::getStockIndex, matUniqueKey)
                        .eq(WaveDetl::getWaveId, wave.getId()));
                if (waveDetl == null) {
                    throw new CoolException("波次数据不存在");
                    throw new CoolException("waveId:" + wave.getId()  + "物料:" + taskDetl.getMatnr() + "波次数据不存在");
                }
                waveDetl.setWorkQty(waveDetl.getWorkQty() + taskDetl.getAnfme());
                waveDetl.setUpdateTime(new Date());
@@ -1153,28 +1162,30 @@
                throw new CoolException("当前波次订单不存在!!");
            }
            List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>()
                    .eq(CacheSite::getSiteStatus, CacheSiteStatusType.O.id).eq(CacheSite::getChannel, task.getTargetSite()));
//            List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>()
//                    .eq(CacheSite::getSiteStatus, CacheSiteStatusType.O.id).eq(CacheSite::getChannel, task.getTargetSite()));
//
//            if (cacheSites.isEmpty()) {
//                throw new CoolException("缓存站空间不足,请稍后再试");
//            }
//
//            if (cacheSites.size() < orders.size()) {
//                throw new CoolException("缓存站空间不足,请稍后再试");
//            }
            if (cacheSites.isEmpty()) {
                throw new CoolException("缓存站空间不足,请稍后再试");
            }
            if (cacheSites.size() < orders.size()) {
                throw new CoolException("缓存站空间不足,请稍后再试");
            }
            for (int i = 0; i < orders.size(); i++) {
                CacheSite cacheSite = cacheSites.get(i);
                cacheSite.setOrderId(orders.get(i).getId());
                cacheSite.setOrderNo(orders.get(i).getOrderNo());
                cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
                cacheSite.setBarcode(loc.getBarcode());
                cacheSite.setUpdateTime(new Date());
                if (!cacheSiteService.updateById(cacheSite)) {
                    throw new CoolException("缓存站更新失败");
                }
            }
//            for (int i = 0; i < orders.size(); i++) {
//                CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, orders.get(i).getId()));
//                if (Objects.isNull(cacheSite)) {
//                    cacheSite.setOrderId(orders.get(i).getId());
//                    cacheSite.setOrderNo(orders.get(i).getOrderNo());
//                    cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
//                    cacheSite.setBarcode(loc.getBarcode());
//                    cacheSite.setUpdateTime(new Date());
//                    if (!cacheSiteService.updateById(cacheSite)) {
//                        throw new CoolException("缓存站更新失败");
//                    }
//                }
//            }
            //库位F => R
            loc.setLocStsId(LocStsType.R.val());