From ba4a73717339424325a8f82d0f10ec22aec1aad3 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期六, 12 四月 2025 10:12:39 +0800
Subject: [PATCH] #新增 1. 修改不良品组拖功能 2. 新装车不良品获取

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/WaitPakinParam.java  |    3 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java                 |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java                  |    6 +
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java           |   20 +++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java |  101 +++++++++++++++----------
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java        |   48 ++++++++---
 rsf-admin/.env                                                                                 |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/MatnrDefectType.java          |   26 ++++++
 rsf-server/src/main/resources/application-dev.yml                                              |    2 
 9 files changed, 155 insertions(+), 55 deletions(-)

diff --git a/rsf-admin/.env b/rsf-admin/.env
index a8ce658..a3c69b2 100644
--- a/rsf-admin/.env
+++ b/rsf-admin/.env
@@ -1,3 +1,3 @@
-VITE_BASE_IP=192.168.4.24
+VITE_BASE_IP=127.0.0.1
 # VITE_BASE_IP=47.76.147.249
 VITE_BASE_PORT=8080
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
index aaffe4f..ddeb48c 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
@@ -264,4 +264,24 @@
         return mobileService.completeOrder(id, getLoginUserId());
     }
 
+
+    @ApiOperation("鑾峰彇涓嶈壇鎵樼洏鐗╂枡")
+    @PostMapping("/defect/matnrs")
+    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
+    public R getAsnDefectItemByCode(@RequestBody Map<String, Object> map) {
+        if (Objects.isNull(map)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return mobileService.getItemByContainer(map);
+    }
+
+    @ApiOperation("鑾峰彇璁㈠崟涓嶈壇鐗╂枡")
+    @PostMapping("/defect/{trackCode}")
+    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
+    public R defectProducts(@PathVariable String trackCode) {
+        if (Objects.isNull(trackCode)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return mobileService.defectProducts(trackCode);
+    }
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/MatnrDefectType.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/MatnrDefectType.java
new file mode 100644
index 0000000..34563ec
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/MatnrDefectType.java
@@ -0,0 +1,26 @@
+package com.vincent.rsf.server.api.entity.enums;
+
+/**
+ * @author Ryan
+ * @version 1.0
+ * @title MatnrDefectType
+ * @description
+ * @create 2025/4/12 09:34
+ */
+public enum MatnrDefectType {
+    //鐗╂枡涓嶈壇绫诲瀷
+    MATNR_DEFECT_NORMAL("0", "姝e父"),
+    MATNR_DEFECT_FIX("1", "寰呰繑淇�"),
+    MATNR_DEFECT_SCRAP("2", "寰呮姤搴�"),
+    MATNR_DEFECT_DEGRADE("3", "寰呴檷绾�"),
+    MATNR_DEFECT_PENDING("4", "寰呭畾"),
+    ;
+
+    MatnrDefectType(String type, String desc) {
+        this.type = Short.parseShort(type);
+        this.val = desc;
+    }
+
+    public Short type;
+    public String val;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
index b63ead2..ab4daa7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
@@ -61,4 +61,6 @@
     R completeOrder(Long id, Long loginUserId);
 
     R getItemByContainer(Map<String, Object> params);
+
+    R defectProducts(String trackCode);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
index 0229436..efd29ac 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -740,8 +740,13 @@
     public R getItemByContainer(Map<String, Object> params) {
         //鑾峰彇缁勬嫋鏈敓鎴愪换鍔$殑缁勬嫋妗�
         List<Short> asList = Arrays.asList(Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val), Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val));
+        Short flagDefect = 0;
+        if (!Objects.isNull(params.get("type")) && params.get("type").equals("defective")) {
+            flagDefect = 1;
+        }
         WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
                 .eq(WaitPakin::getBarcode, params.get("barcode").toString())
+                        .eq(WaitPakin::getFlagDefect, flagDefect)
                 .in(WaitPakin::getIoStatus, asList));
         if (Objects.isNull(waitPakin)) {
             return R.ok(new ArrayList<>());
@@ -751,22 +756,39 @@
         if (pakinItems.isEmpty()) {
             return R.ok(new ArrayList<>());
         }
-        List<String> list = pakinItems.stream().map(WaitPakinItem::getTrackCode).collect(Collectors.toList());
-        LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new QueryWrapper<WarehouseAreasItem>()
-                .select("SUM(anfme) as anfme, track_code, asn_code, id, splr_batch, ispt_result, plat_item_id, batch, qty, work_qty, matnr_code, matnr_id, maktx")
-                .lambda()
-                .in(WarehouseAreasItem::getTrackCode, list)
-                .groupBy(WarehouseAreasItem::getSplrBatch,
-                        WarehouseAreasItem::getTrackCode);
-        List<WarehouseAreasItem> warehouseAreasItems = warehouseAreasItemService.list(queryWrapper);
-        for (int i = 0; i < warehouseAreasItems.size(); i++) {
-            for (WaitPakinItem pakinItem : pakinItems) {
-                if (warehouseAreasItems.get(i).getTrackCode().equals(pakinItem.getTrackCode())) {
-                    warehouseAreasItems.get(i).setAnfme(pakinItem.getAnfme());
+        if (!Objects.isNull(params.get("type")) && params.get("type").equals("defective")) {
+            return R.ok(pakinItems);
+        } else {
+            List<String> list = pakinItems.stream().map(WaitPakinItem::getTrackCode).collect(Collectors.toList());
+            LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new QueryWrapper<WarehouseAreasItem>()
+                    .select("SUM(anfme) as anfme, track_code, asn_code, id, splr_batch, ispt_result, plat_item_id, batch, qty, work_qty, matnr_code, matnr_id, maktx")
+                    .lambda()
+                    .in(WarehouseAreasItem::getTrackCode, list)
+                    .groupBy(WarehouseAreasItem::getSplrBatch,
+                            WarehouseAreasItem::getTrackCode);
+            List<WarehouseAreasItem> warehouseAreasItems = warehouseAreasItemService.list(queryWrapper);
+            for (int i = 0; i < warehouseAreasItems.size(); i++) {
+                for (WaitPakinItem pakinItem : pakinItems) {
+                    if (warehouseAreasItems.get(i).getTrackCode().equals(pakinItem.getTrackCode())) {
+                        warehouseAreasItems.get(i).setAnfme(pakinItem.getAnfme());
+                    }
                 }
             }
+            return R.ok(warehouseAreasItems);
         }
-        return R.ok(warehouseAreasItems);
+    }
+
+    /**
+     * @author Ryan
+     * @description 涓嶈壇鏍囩
+     * @param
+     * @return
+     * @time 2025/4/12 08:12
+     */
+    @Override
+    public R defectProducts(String trackCode) {
+        AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, trackCode));
+        return R.ok(orderItem);
     }
 
     /**
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/WaitPakinParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/WaitPakinParam.java
index 5a8ca9d..9e83b73 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/WaitPakinParam.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/WaitPakinParam.java
@@ -19,5 +19,8 @@
     @ApiModelProperty("璺熻釜鐮�")
     private List<PakinItem> items;
 
+    @ApiModelProperty("缁勬嫋绫诲瀷{null: 缁勬嫋, defective: 涓嶈壇鍝亇")
+    private String type;
+
 }
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java
index d4b1461..3bd249f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java
@@ -62,6 +62,12 @@
     private Short ioStatus;
 
     /**
+     * 鏄惁涓嶈壇鍝�
+     */
+    @ApiModelProperty("鏄惁涓嶈壇鍝�")
+    private Short flagDefect;
+
+    /**
      * 鐘舵�� 1: 姝e父  0: 鍐荤粨  
      */
     @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 鍐荤粨  ")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
index 75bdb0e..07e3d46 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -107,48 +107,69 @@
                 throw new CoolException("鍘熷崟鎹竻闄ゅけ璐ワ紒锛�");
             }
         }
-
-        LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new QueryWrapper<WarehouseAreasItem>()
-                .select("SUM(anfme) as anfme, track_code, asn_code, id, splr_batch, ispt_result, plat_item_id, batch, qty, work_qty, matnr_code, matnr_id, maktx")
-                .lambda()
-                .in(WarehouseAreasItem::getTrackCode, tracks)
-                .groupBy(WarehouseAreasItem::getSplrBatch,
-                        WarehouseAreasItem::getTrackCode);
-        List<WarehouseAreasItem> warehouseAreasItems = warehouseAreasItemService.list(queryWrapper);
-        if (Objects.isNull(warehouseAreasItems) || warehouseAreasItems.isEmpty()) {
-            throw new CoolException("鐗╂枡鏈�佽嚦鏀惰揣鍖猴紒锛�");
-        }
         List<WaitPakinItem> items = new ArrayList<>();
-        for (WarehouseAreasItem item : warehouseAreasItems) {
-            WaitPakinItem pakinItem = new WaitPakinItem();
-            pakinItem.setAnfme(item.getAnfme())
-                    .setPakinId(waitPakin1.getId())
-                    .setAsnId(item.getAsnId())
-                    .setAsnCode(item.getAsnCode())
-                    .setAsnItemId(item.getId())
-                    .setBatch(item.getSplrBatch())
-                    .setUnit(item.getStockUnit())
-                    .setFieldsIndex(item.getFieldsIndex())
-                    .setMatnrId(item.getMatnrId())
-                    .setMaktx(item.getMaktx())
-                    .setMatnrCode(item.getMatnrCode());
-            for (PakinItem waitPakinItem : waitPakin.getItems()) {
-                if (waitPakinItem.getTrackCode().equals(item.getTrackCode())) {
-                    if (waitPakinItem.getReceiptQty() > item.getAnfme()) {
-                        throw new CoolException("缁勬嫋鏁伴噺涓嶈兘澶т簬鏀惰揣鏁伴噺锛侊紒");
-                    }
-                    pakinItem
-                            .setAnfme(waitPakinItem.getReceiptQty())
-                            .setTrackCode(waitPakinItem.getTrackCode());
-                    /**鏇存柊鍗曟嵁鎵ц涓簱瀛�*/
-//                    if (v.compareTo(item.getAnfme()) > 0) {throw new CoolException("鎵ц涓暟閲忓ぇ浜庢敹璐ф暟閲忥紒锛�");}
-//                    if (!asnOrderItemService.update(new LambdaUpdateWrapper<AsnOrderItem>()
-//                            .eq(AsnOrderItem::getTrackCode, waitPakinItem.getTrackCode()).set(AsnOrderItem::getWorkQty, v))) {
-//                        throw new CoolException("鎵ц涓簱瀛樻洿鏂板け璐ワ紒锛�");
-//                    }
-                }
+        if (!Objects.isNull(waitPakin.getType()) && waitPakin.getType().equals("defective")) {
+            List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getTrackCode, tracks));
+            if (Objects.isNull(orderItems) || orderItems.isEmpty()) {
+                throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
             }
-            items.add(pakinItem);
+            for (AsnOrderItem item : orderItems) {
+                WaitPakinItem pakinItem = new WaitPakinItem();
+                pakinItem.setAnfme(item.getAnfme())
+                        .setPakinId(waitPakin1.getId())
+                        .setAsnId(item.getAsnId())
+                        .setAsnCode(item.getAsnCode())
+                        .setAsnItemId(item.getId())
+                        .setBatch(item.getSplrBatch())
+                        .setUnit(item.getStockUnit())
+                        .setFieldsIndex(item.getFieldsIndex())
+                        .setMatnrId(item.getMatnrId())
+                        .setMaktx(item.getMaktx())
+                        .setMatnrCode(item.getMatnrCode());
+                for (PakinItem waitPakinItem : waitPakin.getItems()) {
+                    if (waitPakinItem.getTrackCode().equals(item.getTrackCode())) {
+                        if (waitPakinItem.getReceiptQty() > item.getAnfme()) {
+                            throw new CoolException("缁勬嫋鏁伴噺涓嶈兘澶т簬鏀惰揣鏁伴噺锛侊紒");
+                        }
+                        pakinItem.setAnfme(waitPakinItem.getReceiptQty()).setTrackCode(waitPakinItem.getTrackCode());
+                    }
+                }
+                items.add(pakinItem);
+            }
+        } else {
+            LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new QueryWrapper<WarehouseAreasItem>()
+                    .select("SUM(anfme) as anfme, track_code, asn_code, id, splr_batch, ispt_result, plat_item_id, batch, qty, work_qty, matnr_code, matnr_id, maktx")
+                    .lambda()
+                    .in(WarehouseAreasItem::getTrackCode, tracks)
+                    .groupBy(WarehouseAreasItem::getSplrBatch,
+                            WarehouseAreasItem::getTrackCode);
+            List<WarehouseAreasItem> warehouseAreasItems = warehouseAreasItemService.list(queryWrapper);
+            if (Objects.isNull(warehouseAreasItems) || warehouseAreasItems.isEmpty()) {
+                throw new CoolException("鐗╂枡鏈�佽嚦鏀惰揣鍖猴紒锛�");
+            }
+            for (WarehouseAreasItem item : warehouseAreasItems) {
+                WaitPakinItem pakinItem = new WaitPakinItem();
+                pakinItem.setAnfme(item.getAnfme())
+                        .setPakinId(waitPakin1.getId())
+                        .setAsnId(item.getAsnId())
+                        .setAsnCode(item.getAsnCode())
+                        .setAsnItemId(item.getId())
+                        .setBatch(item.getSplrBatch())
+                        .setUnit(item.getStockUnit())
+                        .setFieldsIndex(item.getFieldsIndex())
+                        .setMatnrId(item.getMatnrId())
+                        .setMaktx(item.getMaktx())
+                        .setMatnrCode(item.getMatnrCode());
+                for (PakinItem waitPakinItem : waitPakin.getItems()) {
+                    if (waitPakinItem.getTrackCode().equals(item.getTrackCode())) {
+                        if (waitPakinItem.getReceiptQty() > item.getAnfme()) {
+                            throw new CoolException("缁勬嫋鏁伴噺涓嶈兘澶т簬鏀惰揣鏁伴噺锛侊紒");
+                        }
+                        pakinItem.setAnfme(waitPakinItem.getReceiptQty()).setTrackCode(waitPakinItem.getTrackCode());
+                    }
+                }
+                items.add(pakinItem);
+            }
         }
         double sum1 = items.stream().mapToDouble(WaitPakinItem::getAnfme).sum();
         if (!waitPakinItemService.saveBatch(items)) {
diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml
index 93d6e25..efd3d05 100644
--- a/rsf-server/src/main/resources/application-dev.yml
+++ b/rsf-server/src/main/resources/application-dev.yml
@@ -14,7 +14,7 @@
     driver-class-name: com.mysql.jdbc.Driver
 #    url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
     username: root
-    url: jdbc:mysql://192.168.4.24:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
 #    username: rsf
     password: 34821015
     type: com.alibaba.druid.pool.DruidDataSource

--
Gitblit v1.9.1