新火炬后端单体项目初始化代码
zhangherong
9 小时以前 38f79bc836f2e4e070fc1fd845cc37882c4a90f6
art: 物料扫码
已添加1个文件
已修改2个文件
108 ■■■■■ 文件已修改
db/双林新火炬MES数据库设计.pdma.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/lsw/controller/LswMaterialController.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/lsw/vo/MaterialScanResultVO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
db/Ë«ÁÖлð¾æMESÊý¾Ý¿âÉè¼Æ.pdma.json
@@ -2,9 +2,9 @@
  "name": "双林新火炬MES数据库设计",
  "describe": "描述双薪新火炬MES数据库设计详情",
  "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": "",
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);
    }
    /**
     * è§£æžäºŒç»´ç å­—符串
     * @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;
    }
}
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;
}