luxiaotao1123
2021-03-19 53dbbd7be6a6ed00d65276a8707680955f9912b9
[import]修改库存数量修改顺序
2个文件已修改
131 ■■■■ 已修改文件
src/main/java/zy/cloud/wms/common/service/MainService.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/common/service/MainService.java
@@ -38,48 +38,6 @@
    @Autowired
    private SnowflakeIdWorker snowflakeIdWorker;
//    @Transactional
//    public List<StoPreVo> stockOutPreview0(OrderStoDto dto) {
//        if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getCustOrders())) {
//            throw new CoolException("数据异常,请联系管理员");
//        }
//        // 检查库存是否足够
//        locDetlService.checkLocDetlCount(dto.getNumber());
//        List<StoPreVo> result = new ArrayList<>();
//        for (CustOrder custOrder : dto.getCustOrders()) {
//            // 判断物料是否存在
//            Mat mat = matService.selectByMatnr(custOrder.getUserCode());
//            if (null == mat) {
//                throw new CoolException(custOrder.getUserCode() + "物料尚未更新。" + custOrder.getNumber() +"单据因此中断!");
//            }
//            // 查询存有当前物料的货位
//            List<LocDetl> locDetls = locDetlService.findOfSort(mat.getMatnr());
//            double issued = Optional.ofNullable(custOrder.getQty()).orElse(0.0D) ;
//            // 视图对象
//            StoPreVo vo = new StoPreVo();
//            vo.setMatnr(mat.getMatnr());
//            vo.setMaktx(mat.getMaktx());
//            vo.setAnfme(issued);
//            List<StoPreVo.StoPreLoc> locVos = new ArrayList<>();
//            vo.setLocs(locVos);
//            for (LocDetl locDetl : locDetls) {
//                if (issued > 0) {
//                    StoPreVo.StoPreLoc locVo = new StoPreVo.StoPreLoc();
//                    locVo.setLocNo(locDetl.getLocNo());
//                    locVo.setNodeId(locDetl.getNodeId());
//                    locVo.setTotal(locDetl.getAnfme());
//                    locVo.setReduce(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
//                    locVo.setPrior(locDetlService.isPrior(locDetl.getNodeId(), mat.getMatnr()));
//                    locVos.add(locVo);
//                    // 剩余待出数量递减
//                    issued = issued - locDetl.getAnfme();
//                }
//            }
//            result.add(vo);
//        }
//        return result;
//    }
    @Transactional
    public List<StoPreTab> stockOutPreview(OrderStoDto dto) {
        if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getCustOrders())) {
@@ -161,15 +119,15 @@
                        throw new CoolException("保存出库通知单失败");
                    }
                    if (issued>=locDetl.getAnfme()) {
                        // 删除库存明细
                        if (!locDetlService.removeStock(locDetl.getNodeId(), mat.getMatnr())) {
                            throw new CoolException("删除库存明细失败");
                        }
//                        // 删除库存明细
//                        if (!locDetlService.removeStock(locDetl.getNodeId(), mat.getMatnr())) {
//                            throw new CoolException("删除库存明细失败");
//                        }
                    } else {
                        // 修改库存明细数量
                        if (!locDetlService.reduceStock(locDetl.getNodeId(), mat.getMatnr(), issued)) {
                            throw new CoolException("修改库存明细数量失败");
                        }
//                        // 修改库存明细数量
//                        if (!locDetlService.reduceStock(locDetl.getNodeId(), mat.getMatnr(), issued)) {
//                            throw new CoolException("修改库存明细数量失败");
//                        }
                    }
                    // 剩余待出数量递减
                    issued = issued - locDetl.getAnfme();
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -145,11 +145,28 @@
    @Override
    @Transactional
    public R stockOutComplete(StockConfirmParam param, Long userId) {
        List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>()
                .eq("doc_num", param.getNumber())
                .in("wrk_sts", 1, 2));
        // 修改库存数量
        for (Pakout pakout : pakouts) {
            LocDetl locDetl = locDetlService.getLocDetl(pakout.getNodeId(), pakout.getMatnr());
            if (pakout.getAnfme()>=locDetl.getAnfme()) {
                // 删除库存明细
                if (!locDetlService.removeStock(locDetl.getNodeId(), pakout.getMatnr())) {
                    throw new CoolException("删除库存明细失败");
                }
            } else {
                // 修改库存明细数量
                if (!locDetlService.reduceStock(locDetl.getNodeId(), pakout.getMatnr(), pakout.getAnfme())) {
                    throw new CoolException("修改库存明细数量失败");
                }
            }
        }
        // 修改出库单状态
        if (!pakoutService.stockOutComplete(param.getWrkNo(), param.getNumber(), userId)) {
            return R.error("保存数据失败");
        }
        // todo:修改库存数量
        // 修改单据状态
        if (!custOrderService.updateStatus(param.getNumber(), 4)) {
            throw new CoolException("修改单据状态失败");
@@ -201,6 +218,20 @@
    public R completePakout(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 (pakout.getAnfme()>=locDetl.getAnfme()) {
                // 删除库存明细
                if (!locDetlService.removeStock(locDetl.getNodeId(), pakout.getMatnr())) {
                    throw new CoolException("删除库存明细失败");
                }
            } else {
                // 修改库存明细数量
                if (!locDetlService.reduceStock(locDetl.getNodeId(), pakout.getMatnr(), pakout.getAnfme())) {
                    throw new CoolException("修改库存明细数量失败");
                }
            }
            // 修改拣货单状态
            if (pakoutService.stockOutComplete(wrkNo, null, userId)) {
                boolean complete = true;
@@ -228,26 +259,26 @@
    @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 (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("删除拣货单失败");
        }