chen.lin
6 天以前 024504a3933e8f2f86e80383e61fa574524a0d28
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -56,7 +56,83 @@
    private WaveService waveService;
    @Autowired
    private BasStationService basStationService;
    @Autowired
    private MatnrService matnrService;
    /** 入库/出库保存前:若规格或型号为空则从物料带出 */
    private void fillSpecModelFromMatnr(LocItem item) {
        if (item == null || item.getMatnrId() == null) {
            return;
        }
        if (StringUtils.isNotBlank(item.getSpec()) && StringUtils.isNotBlank(item.getModel())) {
            return;
        }
        Matnr matnr = matnrService.getById(item.getMatnrId());
        if (matnr == null) {
            return;
        }
        if (StringUtils.isBlank(item.getSpec())) {
            item.setSpec(matnr.getSpec());
        }
        if (StringUtils.isBlank(item.getModel())) {
            item.setModel(matnr.getModel());
        }
    }
    @Override
    public boolean save(LocItem entity) {
        fillSpecModelFromMatnr(entity);
        return super.save(entity);
    }
    @Override
    public boolean saveBatch(Collection<LocItem> entityList) {
        if (entityList != null) {
            entityList.forEach(this::fillSpecModelFromMatnr);
        }
        return super.saveBatch(entityList);
    }
    @Override
    public boolean saveBatch(Collection<LocItem> entityList, int batchSize) {
        if (entityList != null) {
            entityList.forEach(this::fillSpecModelFromMatnr);
        }
        return super.saveBatch(entityList, batchSize);
    }
    @Override
    public void fillSpecModelFromMatnrForRecords(List<LocItem> records) {
        if (records == null || records.isEmpty()) {
            return;
        }
        Set<Long> matnrIds = new HashSet<>();
        for (LocItem r : records) {
            if (r.getMatnrId() != null && (StringUtils.isBlank(r.getSpec()) || StringUtils.isBlank(r.getModel()))) {
                matnrIds.add(r.getMatnrId());
            }
        }
        if (matnrIds.isEmpty()) {
            return;
        }
        Map<Long, Matnr> matnrMap = matnrService.listByIds(matnrIds).stream()
                .collect(Collectors.toMap(Matnr::getId, m -> m));
        for (LocItem r : records) {
            if (r.getMatnrId() == null) {
                continue;
            }
            Matnr m = matnrMap.get(r.getMatnrId());
            if (m == null) {
                continue;
            }
            if (StringUtils.isBlank(r.getSpec())) {
                r.setSpec(m.getSpec());
            }
            if (StringUtils.isBlank(r.getModel())) {
                r.setModel(m.getModel());
            }
        }
    }
    /**
     * 库存出库生成出库任务