From ac8e03a06d463aafcbe810af31e2da5037491a07 Mon Sep 17 00:00:00 2001
From: Houjie <714924425@qq.com>
Date: 星期五, 13 六月 2025 13:10:35 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsToDncController.java |  138 ++++++++++++++++++++++++++++++++++-----------
 1 files changed, 103 insertions(+), 35 deletions(-)

diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsToDncController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsToDncController.java
index 9bc6c00..d5d3798 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsToDncController.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsToDncController.java
@@ -1,15 +1,14 @@
 package org.jeecg.modules.tms.controller;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import io.swagger.annotations.ApiOperation;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.modules.tms.entity.ToolsClassify;
 import org.jeecg.modules.tms.entity.dto.ToolQueryParamDto;
-import org.jeecg.modules.tms.entity.vo.ParaHolesToolsVo;
-import org.jeecg.modules.tms.entity.vo.ParaMillToolVo;
-import org.jeecg.modules.tms.entity.vo.ParaTurningToolsVo;
+import org.jeecg.modules.tms.entity.vo.*;
 import org.jeecg.modules.tms.enums.ToolParaType;
 import org.jeecg.modules.tms.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,9 +17,10 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.List;
+import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 @RestController
 @RequestMapping("/tms/toolsToDnc")
@@ -34,57 +34,125 @@
     private IParaMillToolService paraMillToolService;
     @Autowired
     private IParaTurningToolsService paraTurningToolsService;
+    @Autowired
+    private IParaThreadingToolService paraThreadingToolService;
+    @Autowired
+    private IParaBladeService paraBladeService;
 
+    @ApiOperation(value = "閫氳繃宸ュ叿绠�绉版煡璇㈠伐鍏峰垎绫讳俊鎭紝閫夊垁椤甸潰宸ュ叿绫诲瀷涓嬫媺妗嗙敤", notes = "閫氳繃宸ュ叿绠�绉版煡璇㈠伐鍏峰垎绫讳俊鎭紝閫夊垁椤甸潰宸ュ叿绫诲瀷涓嬫媺妗嗙敤")
+    @GetMapping("/queryToolClassifyByParam")
+    public Result<?> queryToolClassifyByParam(@RequestParam("aliasLabel") String aliasLabel) {
+        List<ToolsClassify> classifyList = toolsClassifyService.list(new LambdaQueryWrapper<ToolsClassify>()
+                .eq(ToolsClassify::getAliasLabel, aliasLabel)
+                .eq(ToolsClassify::getStatus, CommonConstant.STATUS_1));
+        List<Map<String, String>> list = classifyList.stream()
+                .map(classify -> new HashMap<String, String>() {{
+                    put("value", classify.getId());
+                    put("label", classify.getTypeName());
+                }})
+                .collect(Collectors.toList());
+        return Result.ok(list);
+    }
     /**
      * 閫氳繃宸ュ叿绠�绉�/鐩村緞鍙傛暟鏌ヨ鍏蜂綋宸ュ叿鍙傛暟淇℃伅(缁橠NC鎻愪緵鎺ュ彛)锛屽弬鏁扮ず渚嬶細3E锛�3涓哄伐鍏风洿寰勫弬鏁般�丒涓哄姞宸ヤ腑蹇冨垁鍏风畝绉帮級
+     *
      * @param queryParam
      * @return
      */
     @ApiOperation(value = "閫氳繃宸ュ叿绠�绉�/鐩村緞鍙傛暟鏌ヨ鍏蜂綋宸ュ叿鍙傛暟淇℃伅(缁橠NC鎻愪緵鎺ュ彛)", notes = "閫氳繃宸ュ叿绠�绉�/鐩村緞鍙傛暟鏌ヨ鍏蜂綋宸ュ叿鍙傛暟淇℃伅(缁橠NC鎻愪緵鎺ュ彛)")
     @GetMapping("/queryToolByParam")
-    public Result<?> queryToolByParam(@RequestParam("param") ToolQueryParamDto queryParam){
-        String param = queryParam.getParam();
-        // 姝e垯琛ㄨ揪寮忥細鍓嶅崐閮ㄥ垎涓烘暟瀛楋紙鏀寔灏忔暟锛夛紝鍚庡崐閮ㄥ垎涓哄ぇ鍐欐垨灏忓啓瀛楁瘝
-        String regex = "^([\\d.]+)([A-Za-z]+)$";
-        Pattern pattern = Pattern.compile(regex);
-        Matcher matcher = pattern.matcher(param);
-        if (matcher.find()) {
-            String diameter = matcher.group(1);
-            String toolAliasName = matcher.group(2);
+    public Result<?> queryToolByParam(ToolQueryParamDto queryParam) {
+        String aliasLabel = queryParam.getAliasLabel();
+        String diameter = queryParam.getDiameter();
+        if (StrUtil.isBlank(aliasLabel)) {
+            return Result.error("缂哄皯蹇呰鍙傛暟");
+        }
 
+        Result<Object> res = Result.OK();
+        Map<String, Object> result = new HashMap<>();
+        int pageNo = Objects.isNull(queryParam.getPageNo()) || queryParam.getPageNo() < 1 ? 1 : queryParam.getPageNo();
+        int pageSize = Objects.isNull(queryParam.getPageSize()) || queryParam.getPageSize() < 1 ? 10 : queryParam.getPageSize();
+
+        List<Object> toolList = CollectionUtil.newArrayList();
+        String classifyId = queryParam.getClassifyId();
+        if (StrUtil.isNotBlank(classifyId)) {
+            //宸茬粡杩涘叆浜嗛�夊垁椤甸潰锛屽伐鍏峰垎绫诲凡缁忕‘瀹�
+            ToolsClassify toolsClassify = toolsClassifyService.getById(classifyId);
+            ToolParaType toolParaType = ToolParaType.fromValue(toolsClassify.getParaTypeFlag());
+            matchTypeSelectTools(queryParam, toolList, toolParaType);
+        } else {
+            //绗竴娆¤繘鍏ラ�夊垁椤甸潰锛屾牴鎹垁鍏风畝绉板拰鐩村緞鍙傛暟鏌ヨ宸ュ叿鍒嗙被
             List<ToolsClassify> classifyList = toolsClassifyService.list(new LambdaQueryWrapper<ToolsClassify>()
-                    .eq(ToolsClassify::getAliasLabel, toolAliasName)
+                    .eq(ToolsClassify::getAliasLabel, aliasLabel)
                     .eq(ToolsClassify::getStatus, CommonConstant.STATUS_1));
             if (CollectionUtil.isEmpty(classifyList)) {
-                return Result.error("鏈壘鍒板尮閰嶇殑宸ュ叿鍒嗙被");
+                result.put("records", CollectionUtil.newArrayList());
+                result.put("total", 0);
+                result.put("current", pageNo);
+                result.put("size", pageSize);
+                res.setResult(result);
+                return res;
             }
-            List<Object> toolList = CollectionUtil.newArrayList();
             for (ToolsClassify classify : classifyList) {
                 String paraTypeFlag = classify.getParaTypeFlag();
                 queryParam.setClassifyId(classify.getId());
                 queryParam.setDiameter(diameter);
                 ToolParaType toolParaType = ToolParaType.fromValue(paraTypeFlag);
-                if (toolParaType != null) {
-                    switch (toolParaType) {
-                        case HOLE:
-                            List<ParaHolesToolsVo> paraHoleToolsList = paraHoleToolsService.selectByClassifyAndDiameter(queryParam);
-                            toolList.addAll(paraHoleToolsList);
-                            break;
-                        case MILL:
-                            List<ParaMillToolVo> paraMillToolList = paraMillToolService.selectByClassifyAndDiameter(queryParam);
-                            toolList.addAll(paraMillToolList);
-                            break;
-                        case TURNING:
-                            List<ParaTurningToolsVo> paraTurningToolsList = paraTurningToolsService.selectByClassifyAndDiameter(queryParam);
-                            toolList.addAll(paraTurningToolsList);
-                            break;
-                        default:
-                    }
-                }
+                matchTypeSelectTools(queryParam, toolList, toolParaType);
             }
-            return Result.OK(toolList);
+        }
+
+        // ====== 鍒嗛〉閫昏緫 start ======
+        int total = toolList.size();
+        int fromIndex = (pageNo - 1) * pageSize;
+        int toIndex = Math.min(fromIndex + pageSize, total);
+
+        List<Object> pagedList;
+        if (fromIndex > total) {
+            pagedList = Collections.emptyList();
         } else {
-            return Result.error("鍙傛暟鏍煎紡涓嶆纭�");
+            pagedList = toolList.subList(fromIndex, toIndex);
+        }
+
+        result.put("records", pagedList);
+        result.put("total", total);
+        result.put("current", pageNo);
+        result.put("size", pageSize);
+        res.setResult(result);
+        return res;
+        // ====== 鍒嗛〉閫昏緫 end ======
+    }
+
+    private void matchTypeSelectTools(ToolQueryParamDto queryParam, List<Object> toolList, ToolParaType toolParaType) {
+        if (toolParaType != null) {
+            String diameter = queryParam.getDiameter();
+            switch (toolParaType) {
+                case HOLE:
+                    List<ParaHolesToolsVo> paraHoleToolsList = paraHoleToolsService.selectByClassifyAndDiameter(queryParam);
+                    toolList.addAll(paraHoleToolsList);
+                    break;
+                case THREADING://铻虹汗鍒�鍏锋病鏈夌洿寰勫弬鏁帮紝濡傛灉浼犲叆鐩村緞锛岀洿鎺ョ暐杩�
+                    if (StrUtil.isBlank(diameter)) {
+                        List<ParaThreadingToolVo> paraThreadingToolList = paraThreadingToolService.selectByClassifyAndParam(queryParam);
+                        toolList.addAll(paraThreadingToolList);
+                    }
+                    break;
+                case MILL:
+                    List<ParaMillToolVo> paraMillToolList = paraMillToolService.selectByClassifyAndDiameter(queryParam);
+                    toolList.addAll(paraMillToolList);
+                    break;
+                case TURNING:
+                    List<ParaTurningToolsVo> paraTurningToolsList = paraTurningToolsService.selectByClassifyAndDiameter(queryParam);
+                    toolList.addAll(paraTurningToolsList);
+                    break;
+                case BLADE://鍒�鐗囨病鏈夌洿寰勫弬鏁帮紝濡傛灉浼犲叆鐩村緞锛岀洿鎺ョ暐杩�
+                    if (StrUtil.isBlank(diameter)) {
+                        List<ParaBladeVo> paraBladeToolsList = paraBladeService.selectByClassifyAndParam(queryParam);
+                        toolList.addAll(paraBladeToolsList);
+                    }
+                    break;
+                default:
+            }
         }
     }
 

--
Gitblit v1.9.3