cp
2025-01-04 8bfe3cdd48ca3f47d054deb5aebc48154ffb4c88
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java
@@ -72,7 +72,7 @@
        Date now = new Date();
        // 无单组托
        if (Cools.isEmpty(param.getOrderNo())) {
        if (Cools.isEmpty(param.getCombMats().get(0).getOrderNo())) {
            // 生成入库通知档
            List<DetlDto> detlDtos = new ArrayList<>();
@@ -112,14 +112,13 @@
            }
            // 关联组托
        }  else {
            Order order = orderService.selectByNo(param.getOrderNo(), hostId);
            if (order.getSettle() > 2) {
                throw new CoolException("单据编号已过期");
            }
            // 生成入库通知档
            List<DetlDto> detlDtos = new ArrayList<>();
            param.getCombMats().forEach(elem -> {
                Order order = orderService.selectByNo(elem.getOrderNo(), hostId);
                if (order.getSettle() > 2) {
                    throw new CoolException("单据编号已过期");
                }
                // 订单明细数量校验
                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch(),hostId);
                if (elem.getAnfme() > orderDetl.getEnableQty()) {
@@ -139,6 +138,7 @@
                    assert one != null;
                    one.setAnfme(one.getAnfme() + detlDto.getAnfme());
                } else {
                    detlDto.setOrderNo(order.getOrderNo());
                    detlDtos.add(detlDto);
                }
            });
@@ -147,6 +147,9 @@
                if (Cools.isEmpty(mat)) {
                    throw new CoolException(detlDto.getMatnr() + "商品档案不存在");
                }
                Order order = orderService.selectByNo(detlDto.getOrderNo(), hostId);
                WaitPakin waitPakin = new WaitPakin();
                waitPakin.sync(mat);
                waitPakin.setOrderNo(order.getOrderNo());   // 单据编号
@@ -166,8 +169,9 @@
                if (!waitPakinService.save(waitPakin)) {
                    throw new CoolException("保存入库通知档失败");
                }
                orderService.updateSettle(order.getId(), 2L, userId, hostId);
            }
            orderService.updateSettle(order.getId(), 2L, userId, hostId);
        }
    }
@@ -251,45 +255,85 @@
    @Override
    @Transactional
    public R WarehouseIn(String locNo, String barcode,Long hostId) {
    public R WarehouseIn(String locNo, String barcode,Long hostId,Long userId) {
        //判断库位状态
        LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, locNo).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,1L));
        if (Cools.isEmpty(locMast)){
            return R.error("该库位不存在");
        }
        if (!locMast.getLocSts().equals("O")){
            return R.error("该库位状态为:"+locMast.getLocSts()+",禁止入库");
        }
//        if (!locMast.getLocSts().equals("O")){
//            return R.error("该库位状态为:"+locMast.getLocSts()+",禁止入库");
//        }
        //查询组托数据
        List<WaitPakin> list = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getZpallet, barcode).eq(WaitPakin::getHostId, hostId));
        if (Cools.isEmpty(list)){
            return R.error("未找到组托信息");
        }
        Date now = new Date();
        //插入库存数据
        for (WaitPakin waitPakin: list){
            Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, waitPakin.getMatnr()).eq(Mat::getHostId, hostId));
            LocDetl locDetl = new LocDetl();
            locDetl.sync(mat);
            locDetl.setLocNo(locNo);
            //处理库存信息
            AdjDetl adjDetl = new AdjDetl();
            Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>()
                    .eq(Mat::getMatnr, waitPakin.getMatnr()).eq(Mat::getHostId, hostId));
            LocDetl locDetl1=locDetlService.getOne(new LambdaQueryWrapper<LocDetl>()
                    .eq(LocDetl::getMatnr,waitPakin.getMatnr())
                    .eq(LocDetl::getHostId,hostId)
                    .eq(LocDetl::getLocNo,locNo));
            double i=0.0;
            if(!Cools.isEmpty(locDetl1)){
                i=locDetl1.getAnfme();
                locDetl1.setAnfme(locDetl1.getAnfme()+waitPakin.getAnfme());
                locDetlService.updateById(locDetl1);
                adjDetl.setMatnr(locDetl1.getMatnr());
                adjDetl.setBatch(locDetl1.getBatch());
                adjDetl.setAdjQty(locDetl1.getAnfme());
            }else{
                LocDetl locDetl = new LocDetl();
                locDetl.sync(mat);
                locDetl.setLocNo(locNo);
//            locDetl.setBarcode(waitPakin.getBarcode());
            locDetl.setZpallet(waitPakin.getZpallet());
            locDetl.setAnfme(waitPakin.getAnfme());
            locDetl.setBatch(waitPakin.getBatch());
                locDetl.setZpallet(waitPakin.getZpallet());
                locDetl.setAnfme(waitPakin.getAnfme());
                locDetl.setBatch(waitPakin.getBatch());
//            locDetl.setWeight(waitPakin.getWeight());
            locDetl.setHostId(hostId);
            locDetl.setModiTime(now);
            locDetl.setAppeTime(now);
            locDetlService.save(locDetl);
                locDetl.setHostId(hostId);
                locDetl.setModiTime(now);
                locDetl.setAppeTime(now);
                locDetlService.save(locDetl);
                adjDetl.setMatnr(locDetl.getMatnr());
                adjDetl.setBatch(locDetl.getBatch());
                adjDetl.setAdjQty(locDetl.getAnfme());
            }
            try {
                adjDetl.setLocNo(locNo);
                adjDetl.setOriQty(i);
                adjDetl.setMemo("平庫上架");
                adjDetl.setModiUser(userId);
                adjDetl.setAppeUser(userId);
                adjDetl.setAppeTime(new Date());
                adjDetl.setModiTime(new Date());
                adjDetl.setOrderNo(waitPakin.getOrderNo());
                if (!adjDetlService.save(adjDetl)) {
                    throw new CoolException("保存库存调整记录失败");
                }
            }catch (Exception e){
                e.printStackTrace();
                throw new CoolException("更新库存数据出错" + e.getMessage());
            }
            //是否属于订单数据
            if (!Cools.isEmpty(waitPakin.getOrderNo())){
                Order order = orderService.selectByNo(waitPakin.getOrderNo(), hostId);
                if (Cools.isEmpty(order)){
                    continue;
                    throw new CoolException("平库上架查询订单失败");
                }
                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), waitPakin.getBatch(),hostId);
                if (Cools.isEmpty(orderDetl)){
                    continue;
                    throw new CoolException("平库上架查询订单明细失败");
                }
                // 修改订单明细完成数量
                if (!orderDetlService.increase(order.getId(), hostId, waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme())) {
@@ -320,7 +364,7 @@
    @Override
    @Transactional
    public R WarehouseOut(CombParam combParam, Long hostId) {
    public R WarehouseOut(CombParam combParam, Long hostId , Long userId) {
        //判断库位状态
        LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, combParam.getLocno()).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,1L));
        if (Cools.isEmpty(locMast)){
@@ -336,7 +380,7 @@
                    .eq(LocDetl::getHostId, hostId)
                    .eq(LocDetl::getZpallet, combMat.getZpallet())
                    .eq(LocDetl::getMatnr, combMat.getMatnr())
                    .eq(LocDetl::getBatch, combMat.getBatch())
//                    .eq(LocDetl::getBatch, combMat.getBatch())
            );
            if (Cools.isEmpty(locDetl)){
                return R.error("未查询到库存数据");
@@ -357,7 +401,7 @@
                    continue;
                }
                if (orderDetl.getAnfme() < orderDetl.getWorkQty()+combMat.getAnfme()){
                    throw new CoolException("下架数量出错");
                    combMat.setAnfme(orderDetl.getAnfme()-orderDetl.getWorkQty());
                }
                // 修改订单明细作业数量
                if (!orderDetlService.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), hostId)) {
@@ -371,6 +415,8 @@
                orderService.checkComplete(combParam.getOrderNo(), hostId);
            }
            try {
                double i=0.0;
                double j=locDetl.getAnfme();
                //处理库存信息
                if (combMat.getAnfme().equals(locDetl.getAnfme())){
                    //库存相等删除数据
@@ -383,8 +429,32 @@
                    }
                }else {
                    BigDecimal subtract = BigDecimal.valueOf(locDetl.getAnfme()).subtract(BigDecimal.valueOf(combMat.getAnfme()));
                    i=subtract.byteValue();
                    locDetl.setAnfme(subtract.doubleValue());
                    locDetlService.updateById(locDetl);
                }
                try {
                    //处理库存信息
                    AdjDetl adjDetl = new AdjDetl();
                    adjDetl.setLocNo(locDetl.getLocNo());
                    adjDetl.setMatnr(locDetl.getMatnr());
                    adjDetl.setBatch(locDetl.getBatch());
                    adjDetl.setOriQty(j);
                    adjDetl.setAdjQty(i);
                    adjDetl.setMemo("平庫下架");
                    adjDetl.setModiUser(userId);
                    adjDetl.setAppeUser(userId);
                    adjDetl.setAppeTime(new Date());
                    adjDetl.setModiTime(new Date());
                    adjDetl.setOrderNo(combParam.getOrderNo());
                    adjDetl.setHostId(hostId);
                    if (!adjDetlService.save(adjDetl)) {
                        throw new CoolException("保存库存调整记录失败");
                    }
                }catch (Exception e){
                    e.printStackTrace();
                    throw new CoolException("更新库存数据出错" + e.getMessage());
                }
            }catch (Exception e){
                throw new CoolException("更新库存数据出错"+e.getMessage());
@@ -461,7 +531,7 @@
                adjDetl.setMatnr(locDetl.getMatnr());
                adjDetl.setBatch(locDetl.getBatch());
                adjDetl.setOriQty(locDetl.getAnfme());
                adjDetl.setMemo("WarehouseOutV1-pick");
                adjDetl.setMemo("并板途中拣料");
                adjDetl.setModiUser(userId);
                adjDetl.setAppeUser(userId);
                adjDetl.setAppeTime(new Date());
@@ -637,7 +707,7 @@
                        adjDetl.setBatch(locDetl.getBatch());
                        adjDetl.setOriQty(originAnfme);
                        adjDetl.setAdjQty(locDetl.getAnfme());
                        adjDetl.setMemo("WarehouseOutV1-pick");
                        adjDetl.setMemo("拣料途中并板");
                        adjDetl.setModiUser(userId);
                        adjDetl.setAppeUser(userId);
                        adjDetl.setAppeTime(new Date());
@@ -785,4 +855,5 @@
        return R.ok();
    }
}