wang..123
2022-03-22 46607139e955ca266e24bd8561bca1f93a650178
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -14,6 +14,7 @@
import zy.cloud.wms.common.model.MatnrDto;
import zy.cloud.wms.common.model.OrderStoDto;
import zy.cloud.wms.common.model.ReceiveStoDto;
import zy.cloud.wms.common.model.WaveStoDto;
import zy.cloud.wms.common.service.MainService;
import zy.cloud.wms.common.utils.VersionUtils;
import zy.cloud.wms.manager.entity.*;
@@ -62,6 +63,10 @@
    private ReceiveDetlService receiveDetlService;
    @Autowired
    ReceiveLogService receiveLogService;
    @Autowired
    private WaveService waveService;
    @Autowired
    private WaveDetlService waveDetlService;
    @Override
@@ -295,12 +300,12 @@
    @Override
    public R stockOutPreview(StockOutParam param, Long userId, Long hostId) {
        Wrapper<Receive> wrapper = new EntityWrapper<Receive>()
        Wrapper<Order> wrapper = new EntityWrapper<Order>()
                .eq("order_no", param.getOrderNo());
        if (hostId != null) {
            wrapper.eq("host_id", hostId);
        }
        Receive order_no = receiveService.selectOne(wrapper);
        Order order_no = orderService.selectOne(wrapper);
        if (order_no.getSettle() != 1){
            return R.error("此单据无法生成拣货单");
@@ -309,8 +314,8 @@
//        if (order.getSettle() != 1) {
//            return R.error("此单据无法生成拣货单");
//        }
        List<ReceiveDetl> receiveDetls = receiveDetlService.selectByOrderNo(order_no.getOrderNo(), hostId);
        if (Cools.isEmpty(receiveDetls)) {
        List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(order_no.getOrderNo(), hostId);
        if (Cools.isEmpty(orderDetls)) {
            return R.error("此单据已失效,请联系管理员");
        }
//        List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(order.getOrderNo(), hostId);
@@ -318,27 +323,27 @@
//            return R.error("此单据已失效,请联系管理员");
//        }
        ReceiveStoDto receiveStoDto = new ReceiveStoDto().create(order_no.getOrderNo(), receiveDetls);
        OrderStoDto orderStoDto = new OrderStoDto().create(order_no.getOrderNo(), orderDetls);
//        OrderStoDto dto = new OrderStoDto().create(order.getOrderNo(), orderDetls);
        return R.ok().add(mainService.receiveStockOutPreview(receiveStoDto, hostId));
        return R.ok().add(mainService.orderOutPreview(orderStoDto, hostId));
    }
    @Override
    public R stockOutCreate(StockOutParam param, Long userId, Long hostId) {
        Receive receive = receiveService.selectByOrderNo(param.getOrderNo(), hostId);
//        Order order = orderService.selectByOrderNo(param.getOrderNo(), hostId);
        if (receive.getSettle() != 1) {
//        Receive receive = receiveService.selectByOrderNo(param.getOrderNo(), hostId);
        Order order = orderService.selectByOrderNo(param.getOrderNo(), hostId);
        if (order.getSettle() != 1) {
            return R.error("此单据无法生成拣货单");
        }
        List<ReceiveDetl> receiveDetls = receiveDetlService.selectByOrderNo(param.getOrderNo(), hostId);
        List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(param.getOrderNo(), hostId);
//        List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(param.getOrderNo(), hostId);
        if (Cools.isEmpty(receiveDetls)) {
        if (Cools.isEmpty(orderDetls)) {
            return R.error("此单据已失效,请联系管理员");
        }
        ReceiveStoDto receiveStoDto = new ReceiveStoDto().create(receive.getOrderNo(), receiveDetls);
        OrderStoDto orderStoDto = new OrderStoDto().create(order.getOrderNo(), orderDetls);
//        OrderStoDto dto = new OrderStoDto().create(receive.getOrderNo(), receiveDetls);
        // 开始整理出库数据
        mainService.receiveStockOutProcess(receiveStoDto,hostId);
        mainService.orderStockOutProcess(orderStoDto,hostId,userId);
        return R.ok("生成拣货单成功");
    }
@@ -691,9 +696,9 @@
        order1.setOrderNo(param.getOrderNo());
        order1.setOrderTime(param.getOrderTime());
        order1.setDocType(param.getDocType());
        order1.setItemId(item.getId());
        order1.setItemId(item == null? null : item.getId());
        order1.setItemName(param.getItem());
        order1.setCstmr(cstmr.getId());
        order1.setCstmr(cstmr == null? null : cstmr.getId());
        order1.setCstmrName(param.getCstmr());
        order1.setSettle(1L);
        order1.setStatus(1);
@@ -773,28 +778,28 @@
                log.error("{}商品不存在。", dto.getMatnr());
                continue;
            }
            ReceiveDetl receiveDetl = new ReceiveDetl();
            receiveDetl.setHostId(hostId);
            receiveDetl.setOrderId(order1.getId());
            receiveDetl.setAnfme(dto.getCount());
            receiveDetl.setCreateTime(now);
            receiveDetl.setCreateBy(userId);
            receiveDetl.setUpdateBy(userId);
            receiveDetl.setUpdateTime(now);
            receiveDetl.setStatus(1);
            receiveDetl.setMatnr(mat.getMatnr());
            receiveDetl.setMaktx(mat.getMaktx());
            receiveDetl.setName(mat.getName());
            receiveDetl.setSpecs(mat.getSpecs());
            receiveDetl.setModel(mat.getModel());
            receiveDetl.setBatch(mat.getBatch());
            receiveDetl.setUnit(mat.getUnit());
            receiveDetl.setBarcode(mat.getBarcode());
            receiveDetl.setItemNum(mat.getItemNum());
            receiveDetl.setCount(Double.valueOf(mat.getCount()));
            receiveDetl.setUnitPrice(mat.getPrice());
            receiveDetl.setWeight(mat.getWeight());
            if (!receiveDetlService.insert(receiveDetl)) {
            OrderDetl orderDetl = new OrderDetl();
            orderDetl.setHostId(hostId);
            orderDetl.setOrderId(order1.getId());
            orderDetl.setAnfme(dto.getCount());
            orderDetl.setCreateTime(now);
            orderDetl.setCreateBy(userId);
            orderDetl.setUpdateBy(userId);
            orderDetl.setUpdateTime(now);
            orderDetl.setStatus(1);
            orderDetl.setMatnr(mat.getMatnr());
            orderDetl.setMaktx(mat.getMaktx());
            orderDetl.setName(mat.getName());
            orderDetl.setSpecs(mat.getSpecs());
            orderDetl.setModel(mat.getModel());
            orderDetl.setBatch(mat.getBatch());
            orderDetl.setUnit(mat.getUnit());
            orderDetl.setBarcode(mat.getBarcode());
            orderDetl.setItemNum(mat.getItemNum());
            orderDetl.setCount(mat.getCount() == null ? 0 : mat.getCount());
            orderDetl.setUnitPrice(mat.getPrice());
            orderDetl.setWeight(mat.getWeight());
            if (!orderDetlService.insert(orderDetl)) {
                throw new CoolException("保存订单明细失败");
            }
        }
@@ -1000,4 +1005,130 @@
        return R.ok();
    }
    @Override
//    @Transactional
    public R initOutOrder(InitOrderParam param, Long userId, Long hostId) {
        Order order_no = orderService.selectOne(new EntityWrapper<Order>()
                .eq("order_no", param.getOrderNo()));
//        Order order = orderService.selectByOrderNo(param.getOrderNo(), hostId);
        if (order_no != null) {
            return R.error("抱歉单号已存在,请修改单号");
        }
        Date now = new Date();
        Item item = itemService.selectByName(param.getItem());
        Cstmr cstmr = cstmrService.selectByName(param.getCstmr());
        // 新增订单表头
        order_no = new Order();
        order_no.setHostId(hostId);
        order_no.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
        order_no.setOrderNo(param.getOrderNo());
        order_no.setOrderTime(param.getOrderTime());
        order_no.setDocType(param.getDocType());
        order_no.setItemId(item==null?null:item.getId());
        order_no.setItemName(param.getItem());
        order_no.setCstmr(cstmr==null?null:cstmr.getId());
        order_no.setCstmrName(param.getCstmr());
        order_no.setSettle(1L);
        order_no.setStatus(1);
        order_no.setCreateTime(now);
        order_no.setCreateBy(userId);
        order_no.setUpdateTime(now);
        order_no.setUpdateBy(userId);
//        if (!orderService.insert(order)) {
//            throw new CoolException("保存订单表头失败!");
//        }
        if (!orderService.insert(order_no)) {
            throw new CoolException("保存订单表头失败!");
        }
//        // 遍历商品数量并保存
//        for (MatnrDto dto : param.getList()){
//            Mat mat = matService.selectByMatnr(hostId, dto.getMatnr());
//            if (mat == null) {
//                log.error("{}商品不存在。", dto.getMatnr());
//                continue;
//            }
//            OrderDetl orderDetl = new OrderDetl();
//            orderDetl.setHostId(hostId);
//            orderDetl.setOrderId(order.getId());  // 订单内码
//            orderDetl.setAnfme(dto.getCount());         // 数量
//            orderDetl.setCreateBy(userId);
//            orderDetl.setCreateTime(now);
//            orderDetl.setUpdateBy(userId);
//            orderDetl.setUpdateTime(now);
//            orderDetl.setStatus(1);
//            VersionUtils.setOrderDetl(orderDetl, mat);
//            if (!orderDetlService.insert(orderDetl)) {
//                throw new CoolException("保存订单明细失败");
//            }
//        }
        // 遍历商品数量并保存
        for (MatnrDto dto : param.getList()){
            Mat mat = matService.selectByMatnr(hostId, dto.getMatnr());
            if (mat == null) {
                log.error("{}商品不存在。", dto.getMatnr());
                continue;
            }
            OrderDetl orderDtel = new OrderDetl();
            orderDtel.setHostId(hostId);
            orderDtel.setOrderId(order_no.getId());
            orderDtel.setAnfme(dto.getCount());
            orderDtel.setCreateTime(now);
            orderDtel.setCreateBy(userId);
            orderDtel.setUpdateBy(userId);
            orderDtel.setUpdateTime(now);
            orderDtel.setStatus(1);
            orderDtel.setMatnr(mat.getMatnr());
            orderDtel.setMaktx(mat.getMaktx());
            orderDtel.setName(mat.getName());
            orderDtel.setSpecs(mat.getSpecs());
            orderDtel.setModel(mat.getModel());
            orderDtel.setBatch(mat.getBatch());
            orderDtel.setUnit(mat.getUnit());
            orderDtel.setBarcode(mat.getBarcode());
            orderDtel.setItemNum(mat.getItemNum());
            orderDtel.setCount(mat.getCount() == null ? 0 : mat.getCount());
            orderDtel.setUnitPrice(mat.getPrice());
            orderDtel.setWeight(mat.getWeight());
            if (!orderDetlService.insert(orderDtel)) {
                throw new CoolException("保存订单明细失败");
            }
        }
        return R.ok("创建订单成功");
    }
    @Override
    public R wavePreview(StockOutParam stockOutParam, Long userId, Long hostId) {
        Wrapper<Wave> wrapper = new EntityWrapper<Wave>()
                .eq("id", stockOutParam.getOrderNo());
        if (hostId != null) {
            wrapper.eq("host_id", hostId);
        }
        Wave wave = waveService.selectOne(wrapper);
        if (wave.getStatus() != 0){
            return R.error("此单据无法生成拣货单");
        }
//        Order order = orderService.selectByOrderNo(param.getOrderNo(), hostId);
//        if (order.getSettle() != 1) {
//            return R.error("此单据无法生成拣货单");
//        }
        List<WaveDetl> waveDetls = waveDetlService.selectList(new EntityWrapper<WaveDetl>()
                .eq("wave_id", stockOutParam.getOrderNo()));
        if (Cools.isEmpty(waveDetls)) {
            return R.error("此单据已失效,请联系管理员");
        }
//        List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(order.getOrderNo(), hostId);
//        if (Cools.isEmpty(orderDetls)) {
//            return R.error("此单据已失效,请联系管理员");
//        }
        WaveStoDto waveStoDto = new WaveStoDto().create(stockOutParam.getOrderNo(),waveDetls);
//        OrderStoDto dto = new OrderStoDto().create(order.getOrderNo(), orderDetls);
        return R.ok().add(mainService.waveOutPreview(waveStoDto, hostId));
    }
}