From 38f79bc836f2e4e070fc1fd845cc37882c4a90f6 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期一, 08 九月 2025 15:14:05 +0800
Subject: [PATCH] art: 物料扫码

---
 db/双林新火炬MES数据库设计.pdma.json                                                |   22 ++++++++++-
 src/main/java/org/jeecg/modules/lsw/vo/MaterialScanResultVO.java          |   23 +++++++++++
 src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java |   63 +++++++++++++++++++++++++++++++
 3 files changed, 106 insertions(+), 2 deletions(-)

diff --git "a/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json" "b/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
index 1c568e7..aab2253 100644
--- "a/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
+++ "b/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
@@ -2,9 +2,9 @@
   "name": "鍙屾灄鏂扮伀鐐琈ES鏁版嵁搴撹璁�",
   "describe": "鎻忚堪鍙岃柂鏂扮伀鐐琈ES鏁版嵁搴撹璁¤鎯�",
   "avatar": "",
-  "version": "4.9.4",
+  "version": "4.9.2",
   "createdTime": "2025-3-10 16:38:19",
-  "updatedTime": "2025-9-5 15:27:47",
+  "updatedTime": "2025-9-7 07:53:29",
   "dbConns": [],
   "profile": {
     "default": {
@@ -62804,6 +62804,24 @@
           "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"
         },
         {
+          "defKey": "outbound_category",
+          "defName": "鍑哄簱绫诲瀷",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792",
+          "id": "FD19FF71-18AD-4EE5-89B5-F1E4D44B7CD1"
+        },
+        {
           "defKey": "outbound_staff",
           "defName": "鍑哄簱浜�",
           "comment": "",
diff --git a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java
index 00d0f04..0f3664f 100644
--- a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java
+++ b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java
@@ -20,10 +20,12 @@
 import org.jeecg.modules.lsw.entity.LswMaterial;
 import org.jeecg.modules.lsw.enums.MaterialCategoryEnum;
 import org.jeecg.modules.lsw.service.ILswMaterialService;
+import org.jeecg.modules.lsw.vo.MaterialScanResultVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
@@ -182,4 +184,65 @@
         List<LswMaterial> lswMaterialList = lswMaterialService.list(queryWrapper);
         return Result.ok(lswMaterialList);
     }
+
+    @ApiOperation(value = "绾胯竟搴撶墿鏂欎俊鎭�-鎵爜", notes = "绾胯竟搴撶墿鏂欎俊鎭�-鎵爜")
+    @GetMapping(value = "/scan")
+    public Result<?> scan(@RequestParam("qrCode") String qrCode) {
+        if (StringUtils.isBlank(qrCode)) {
+            return Result.error("鎵爜淇℃伅涓虹┖锛�");
+        }
+        MaterialScanResultVO result = parseQrCode(qrCode);
+        //鏌ヨ鐗╂枡鏁版嵁
+        LswMaterial material = lswMaterialService.queryByMaterialNumber(result.getMaterialNumber());
+        if(material == null) {
+            return Result.error("鏍规嵁鐗╂枡缂栧彿鏈煡璇㈠埌鐗╂枡锛�");
+        }
+        result.setMaterialName(material.getMaterialName());
+        result.setMaterialCategory(material.getMaterialCategory());
+        return Result.OK(result);
+    }
+
+    /**
+     * 瑙f瀽浜岀淮鐮佸瓧绗︿覆
+     * @param qrCode
+     * @return
+     */
+    private static MaterialScanResultVO parseQrCode(String qrCode) {
+        MaterialScanResultVO vo = new MaterialScanResultVO();
+        String[] split = qrCode.split("#");
+        for (String str : split) {
+            if (StringUtils.isBlank(str)) {
+                //涓嶇鍚堣鍒�
+                continue;
+            }
+            String[] pairs = str.split("=");
+            if (pairs.length != 2) {
+                //涓嶇鍚堣鍒�
+                continue;
+            }
+            String key = pairs[0];
+            String value = pairs[1];
+            switch (key) {
+                case "FactoryCode":
+                    vo.setFactoryCode(value);
+                    break;
+                case "SkuCode":
+                    vo.setMaterialNumber(value);
+                    break;
+                case "Quantity":
+                    vo.setQuantity(new BigDecimal(value));
+                    break;
+                case "TrackLot":
+                case "ProductionTracklot":
+                case "SupplierTrackLot":
+                    vo.setBatchNumber(value);
+                    break;
+                case "Section":
+                    vo.setSection(value);
+                    break;
+            }
+        }
+        return vo;
+    }
+
 }
diff --git a/src/main/java/org/jeecg/modules/lsw/vo/MaterialScanResultVO.java b/src/main/java/org/jeecg/modules/lsw/vo/MaterialScanResultVO.java
new file mode 100644
index 0000000..7c81d15
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/lsw/vo/MaterialScanResultVO.java
@@ -0,0 +1,23 @@
+package org.jeecg.modules.lsw.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class MaterialScanResultVO {
+    //鐗╂枡鍚嶇О
+    private String materialName;
+    //鐗╂枡缂栫爜
+    private String materialNumber;
+    //鎵规鍙�
+    private String batchNumber;
+    //鏁伴噺
+    private BigDecimal quantity;
+    //宸ュ巶缂栫爜
+    private String factoryCode;
+    //鏉ユ簮浠撳簱缂栫爜
+    private String section;
+    //鐗╂枡绫诲瀷
+    private String materialCategory;
+}

--
Gitblit v1.9.3