zjj
2024-05-30 f53706e7e8a7b4e0278917e9d3cdfbc877de177d
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java
@@ -19,6 +19,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
@@ -280,6 +281,9 @@
                if (!orderDetlService.increase(order.getId(), hostId, waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme())) {
                    throw new CoolException("修改单据明细数量失败");
                }
                // 修改订单状态 作业中 ===>> 已完成
                orderService.checkComplete(waitPakin.getOrderNo(), hostId);
            }
        }
        //修改库位状态
@@ -311,14 +315,71 @@
            return R.error("该库位状态为:"+locMast.getLocSts()+",禁止出库");
        }
        //查询库存数据
        List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getZpallet, combParam.getBarcode()).eq(LocDetl::getLocNo, combParam.getLocno()).eq(LocDetl::getHostId, hostId));
        if (Cools.isEmpty(locDetls)){
            return R.error("未查询到库存数据");
        }
        for (LocDetl locDetl: locDetls){
        for (CombParam.CombMat combMat :combParam.getCombMats()){
            LocDetl locDetl = locDetlService.getOne(new LambdaQueryWrapper<LocDetl>()
                    .eq(LocDetl::getLocNo, combParam.getLocno())
                    .eq(LocDetl::getHostId, hostId)
                    .eq(LocDetl::getZpallet, combMat.getZpallet())
                    .eq(LocDetl::getMatnr, combMat.getMatnr())
                    .eq(LocDetl::getBatch, combMat.getBatch())
            );
            if (Cools.isEmpty(locDetl)){
                return R.error("未查询到库存数据");
            }
            if (combMat.getAnfme() > locDetl.getAnfme()){
                return R.error("下架数量错误,超出库存数量");
            }
            try {
                //处理库存信息
                if (combMat.getAnfme().equals(locDetl.getAnfme())){
                    //库存相等删除数据
                    locDetlService.removeById(locDetl);
                    int count = locDetlService.count(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo,combParam.getLocno()).eq(LocDetl::getHostId, hostId));
                    if (count == 0){
                        LocMast locMast1 = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, combParam.getLocno()).eq(LocMast::getHostId, hostId));
                        locMast1.setLocSts("O");
                        locMastService.updateById(locMast1);
                    }
                }else {
                    BigDecimal subtract = BigDecimal.valueOf(locDetl.getAnfme()).subtract(BigDecimal.valueOf(combMat.getAnfme()));
                    locDetl.setAnfme(subtract.doubleValue());
                    locDetlService.updateById(locDetl);
                }
            }catch (Exception e){
                throw new CoolException("更新库存数据出错"+e.getMessage());
            }
            if (!Cools.isEmpty(combParam.getOrderNo())){
                Order order = orderService.selectByNo(combParam.getOrderNo(), hostId);
                if (Cools.isEmpty(order)){
                    continue;
                }
                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch(),hostId);
                if (Cools.isEmpty(orderDetl)){
                    continue;
                }
                if (orderDetl.getWorkQty() < orderDetl.getWorkQty()+combMat.getAnfme()){
                    throw new CoolException("下架数量出错");
                }
                // 修改订单明细作业数量
                if (!orderDetlService.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), hostId)) {
                    throw new CoolException("修改单据明细工作数量失败");
                }
                // 修改订单明细完成数量
                if (!orderDetlService.increase(order.getId(), hostId, combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) {
                    throw new CoolException("修改单据明细完成数量失败");
                }
                // 修改订单状态 作业中 ===>> 已完成
                orderService.checkComplete(combParam.getOrderNo(), hostId);
            }
        }
        return R.ok();
    }
}