From 8943a4e9f5ee1455c56ac4af60d941fa23731051 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期一, 13 四月 2026 13:20:38 +0800
Subject: [PATCH] 重量

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java |   90 +++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 87 insertions(+), 3 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
index 1932160..0a6add5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
+++ b/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());
+            }
+        }
+    }
 
     /**
      * 搴撳瓨鍑哄簱鐢熸垚鍑哄簱浠诲姟
@@ -131,8 +207,15 @@
             if (barcodeToUse == null && !existTasks.isEmpty()) {
                 barcodeToUse = existTasks.get(0).getBarcode();
                 if (StringUtils.isNotBlank(barcodeToUse)) {
-                    locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getId, loc.getId())
-                            .set(Loc::getBarcode, barcodeToUse).set(Loc::getUpdateBy, loginUserId).set(Loc::getUpdateTime, new Date()));
+                    Task refTask = existTasks.get(0);
+                    LambdaUpdateWrapper<Loc> locUw = new LambdaUpdateWrapper<Loc>().eq(Loc::getId, loc.getId())
+                            .set(Loc::getBarcode, barcodeToUse)
+                            .set(Loc::getUpdateBy, loginUserId)
+                            .set(Loc::getUpdateTime, new Date());
+                    if (refTask.getWeight() != null) {
+                        locUw.set(Loc::getWeight, refTask.getWeight());
+                    }
+                    locService.update(locUw);
                 }
             }
             if (barcodeToUse == null) {
@@ -380,7 +463,8 @@
             throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦紒锛�");
         }
 
-        targetLoc.setUseStatus(LocStsType.LOC_STS_TYPE_S.type);
+        targetLoc.setUseStatus(LocStsType.LOC_STS_TYPE_S.type)
+                .setWeight(orgLoc.getWeight());
 
         if (!locService.updateById(targetLoc)) {
             throw new CoolException("鐩爣搴撲綅棰勭害澶辫触锛侊紒");

--
Gitblit v1.9.1