#
luxiaotao1123
2021-03-10 1c6659a0f946b15bea84bccb206fe11111ac211e
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -154,13 +154,63 @@
                if (!pakoutService.insert(pakout)) {
                    throw new CoolException("生成拣货单失败");
                }
                if (param.getCount() > locDetl.getAnfme()) {
                    throw new CoolException("库存不足");
                } else if (param.getCount()<locDetl.getAnfme()) {
                // 修改库存明细数量
                if (!locDetlService.reduceStock(locDetl.getNodeId(), locDetl.getMatnr(), param.getCount())) {
                    if (!locDetlService.reduceStock(locDetl.getNodeId(), param.getMatnr(), param.getCount())) {
                    throw new CoolException("修改库存明细数量失败");
                    }
                } else {
                    // 删除库存明细
                    if (!locDetlService.removeStock(locDetl.getNodeId(), param.getMatnr())) {
                        throw new CoolException("删除库存明细失败");
                    }
                }
            }
        }
        return R.ok();
    }
    @Override
    public R completePakout(String wrkNo, Long userId) {
        Pakout pakout = pakoutService.selectOne(new EntityWrapper<Pakout>().eq("wrk_no", wrkNo));
        if (null != pakout) {
            if (pakoutService.stockOutComplete(wrkNo, null, userId)) {
                return R.ok("拣货单已完成");
            }
        }
        return R.error();
    }
    @Override
    @Transactional
    public R cancelPakout(String wrkNo, Long userId) {
        Pakout pakout = pakoutService.selectOne(new EntityWrapper<Pakout>().eq("wrk_no", wrkNo));
        if (null != pakout) {
            LocDetl locDetl = locDetlService.getLocDetl(pakout.getNodeId(), pakout.getMatnr());
            if (locDetl == null) {
                LocDetl oldLocDetl = new LocDetl();
                VersionUtils.setLocDetl(oldLocDetl, pakout);
                oldLocDetl.setCreateTime(new Date());
                oldLocDetl.setCreateBy(userId);
                oldLocDetl.setUpdateTime(new Date());
                oldLocDetl.setUpdateBy(userId);
                if (!locDetlService.insert(oldLocDetl)) {
                    throw new CoolException("恢复库存明细失败");
                }
            } else {
                if (!locDetlService.incrementStock(locDetl.getNodeId(), locDetl.getMatnr(), pakout.getAnfme())) {
                   throw new CoolException("恢复库存明细失败");
                }
            }
        } else {
            return R.error("拣货单已失效,取消失败!");
        }
        if (!pakoutService.delete(new EntityWrapper<Pakout>().eq("wrk_no", pakout.getWrkNo()))) {
            throw new CoolException("删除拣货单失败");
        }
        return R.ok("拣货单已取消");
    }
}