From 399e7d565f19f59a8da82277da8f3eab527c2c56 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期二, 09 九月 2025 19:40:20 +0800
Subject: [PATCH] art: 上料接口,上下料查询接口

---
 src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java |   83 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 82 insertions(+), 1 deletions(-)

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 40bf0cb..0f3664f 100644
--- a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java
+++ b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java
@@ -8,6 +8,7 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.constant.CommonConstant;
@@ -19,10 +20,14 @@
 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;
 
 /**
@@ -126,7 +131,6 @@
 
     }
 
-    @AutoLog(value = "绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃浜х嚎绫诲瀷鏌ヨ绾胯竟搴撶墿鏂�")
     @ApiOperation(value = "绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃浜х嚎绫诲瀷鏌ヨ绾胯竟搴撶墿鏂�", notes = "绾胯竟搴撶墿鏂欎俊鎭�-閫氳繃浜х嚎绫诲瀷鏌ヨ绾胯竟搴撶墿鏂�")
     @GetMapping(value = "/queryLswMaterialByProductionType")
     public Result<List<LswMaterial>> queryLswMaterialByProductionType(@RequestParam("factoryId") String factoryId) {
@@ -164,4 +168,81 @@
         }
         return Result.OK(lswMaterialList);
     }
+
+    @ApiOperation(value = "绾胯竟搴撶墿鏂欎俊鎭�-鏍规嵁鐗╂枡绫诲瀷鏌ヨ", notes = "绾胯竟搴撶墿鏂欎俊鎭�-鏍规嵁鐗╂枡绫诲瀷鏌ヨ")
+    @GetMapping(value = "/queryByMaterialCategory")
+    public Result<List<LswMaterial>> queryByMaterialCategory(@RequestParam("materialCategory") String materialCategory) {
+        if (StringUtils.isBlank(materialCategory)) {
+            return Result.ok(Collections.emptyList());
+        }
+        String[] split = materialCategory.split(",");
+        LambdaQueryWrapper<LswMaterial> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(LswMaterial::getMaterialCategory, Arrays.asList(split));
+        queryWrapper.eq(LswMaterial::getDelFlag, CommonConstant.DEL_FLAG_0);
+        queryWrapper.eq(LswMaterial::getMaterialStatus, CommonConstant.STATUS_1);
+        queryWrapper.orderByAsc(LswMaterial::getMaterialNumber);
+        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;
+    }
+
 }

--
Gitblit v1.9.3