自动化立体仓库 - WMS系统
#
luxiaotao1123
2022-10-18 b5130c2e6d60c7f23e37f7c620375bc4e253caa3
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -1,6 +1,7 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SnowflakeIdWorker;
@@ -11,8 +12,9 @@
import com.zy.asrs.mapper.OrderDetlMapper;
import com.zy.asrs.mapper.OrderMapper;
import com.zy.asrs.service.*;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.zy.common.model.DetlDto;
import com.zy.common.model.OrderDto;
import com.zy.common.model.OrderMergeVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -36,6 +38,8 @@
    private DocTypeService docTypeService;
    @Autowired
    private WrkDetlService wrkDetlService;
    @Autowired
    private MatService matService;
    @Override
    public Order selectByNo(String orderNo) {
@@ -70,7 +74,7 @@
                break;
            }
        }
        if (complete) {
        if (complete && wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no", orderNo)) == 0) {
            // 出库订单重新整理明细
            DocType docType = docTypeService.selectById(order.getDocType());
            if (null != docType && docType.getPakout() == 1) {
@@ -141,6 +145,10 @@
                    throw new CoolException("修改单据明细数量失败");
                }
            }
            // 工作档明细更新单据编号
            for (WrkDetl wrkDetl : wrkDetls) {
                wrkDetlService.updateOrderNo(orderNo, wrkDetl.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
            }
        } catch (Exception e) {
            log.error("", e);
            return false;
@@ -161,4 +169,36 @@
        return this.baseMapper.selectComplete();
    }
    @Override
    public List<OrderMergeVo> mergePreview(List<Long> ids) {
        List<OrderMergeVo> result = new ArrayList<>();
        for (Long orderId : ids) {
            Order order = this.selectById(orderId);
            // 获取所有未作业的明细
            List<OrderDetl> orderDetls = orderDetlService.selectRemainder(orderId);
            for (OrderDetl orderDetl : orderDetls) {
                Double leave = orderDetl.getAnfme() - orderDetl.getQty();
                OrderMergeVo vo = new OrderMergeVo(orderDetl.getMatnr(), orderDetl.getBatch(), leave);
                OrderDto orderDto = new OrderDto(orderDetl.getOrderNo(), null, leave);
                if (OrderMergeVo.has(result, vo)) {
                    OrderMergeVo exist = OrderMergeVo.find(result, vo.getMatnr(), vo.getBatch());
                    assert exist != null;
                    exist.setAnfme(exist.getAnfme() + vo.getAnfme());
                    exist.getOrderDtos().add(orderDto);
                } else {
                    vo.getOrderDtos().add(orderDto);
                    result.add(vo);
                }
            }
        }
        for (OrderMergeVo vo : result) {
            Mat mat = matService.selectByMatnr(vo.getMatnr());
            assert mat != null;
            vo.setMaktx(mat.getMaktx());
            vo.setSpecs(mat.getSpecs());
        }
        return result;
    }
}