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