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

---
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java |  250 ++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 210 insertions(+), 40 deletions(-)

diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java
index 645ec84..cee90e8 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java
@@ -3,23 +3,44 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import liquibase.pro.packaged.Q;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.CommonGenericTree;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.DictModel;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.ImportExcelUtil;
 import org.jeecg.common.util.StrUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.system.mapper.SysDictItemMapper;
+import org.jeecg.modules.system.mapper.SysDictMapper;
 import org.jeecg.modules.tms.entity.ToolsClassify;
 import org.jeecg.modules.tms.mapper.ToolsClassifyMapper;
 import org.jeecg.modules.tms.service.IToolsClassifyService;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import javax.tools.Tool;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
 
 /**
  * @Description: tms_tools_classify
@@ -30,6 +51,14 @@
 @Service
 public class ToolsClassifyServiceImpl extends ServiceImpl<ToolsClassifyMapper, ToolsClassify> implements IToolsClassifyService {
 
+    @Value("${jeecg.path.upload}")
+    private String upLoadPath;
+
+    @Autowired
+    private SysDictMapper sysDictMapper;
+
+    @Autowired
+    private SysDictItemMapper sysDictItemMapper;
     @Override
     public IPage<ToolsClassify> queryPageList(Page<ToolsClassify> page, Map<String, String[]> parameterMap) {
         QueryWrapper<ToolsClassify> queryWrapper = Wrappers.query();
@@ -49,7 +78,7 @@
         return this.baseMapper.queryPageList(page, queryWrapper);
     }
     public List<CommonGenericTree> loadTree() {
-        List<ToolsClassify> toolsClassifyList = this.list();
+        List<ToolsClassify> toolsClassifyList = this.lambdaQuery().orderByAsc(ToolsClassify::getId).list();
         List<CommonGenericTree> commonGenericTreeList = loadTree(toolsClassifyList);
         return commonGenericTreeList;
     }
@@ -58,54 +87,39 @@
         @SuppressWarnings("unused") ToolsClassify toolsClassify = new ToolsClassify();
         List<CommonGenericTree> list = new ArrayList<>();
         Map<String, CommonGenericTree> map = new HashMap<>();
-        CommonGenericTree<ToolsClassify> node = new CommonGenericTree<>();
-        node.setKey("-1");
-        node.setTitle("宸ュ叿鍒嗙被");
-        node.setRField1("");
-        node.setRField2("");
-        node.setEntity(new ToolsClassify().setId("-1").setClassifyId("0").setTypeName("宸ュ叿鍒嗙被").setLeafFlag("2"));
-        list.add(node);
         if (CollectionUtils.isNotEmpty(toolsClassifyList)) {
             CommonGenericTree<ToolsClassify> tcNode;
+            CommonGenericTree<ToolsClassify> childNode;
             for (ToolsClassify tc : toolsClassifyList) {
-                if (StrUtils.isBlankOrNull(tc.getParentId()) || tc.getParentId().equals("-1")) {
+                ToolsClassify child = tc;
+                if (StrUtils.isBlankOrNull(tc.getParentId())) {
                     tcNode = new CommonGenericTree<>();
                     tcNode.setKey(tc.getId());
                     tcNode.setTitle(tc.getClassifyId() + "/" + tc.getTypeName());
-                    tcNode.setParentId(node.getKey());
                     tcNode.setIcon("");
                     tcNode.setType(1);
                     tcNode.setValue(tc.getId());
                     tcNode.setDisabled(CommonConstant.STATUS_0.equals(tc.getStatus()) ? true : false);
                     tcNode.setRField1(tc.getClassifyId());
-                    tcNode.setRField2(getBaseParent(tc.getId(), 0).getClassifyId());
+                    //tcNode.setRField2(getBaseParent(tc.getId(), 0).getClassifyId());
                     tcNode.setEntity(tc);
-                    node.addChildren(tcNode);
+                    list.add(tcNode);
                     map.put(tc.getId(), tcNode);
-                }
-            }
-            CommonGenericTree<ToolsClassify> childNode;
-            for (ToolsClassify tc : toolsClassifyList) {
-                ToolsClassify child = tc;
-                if (map.containsKey(child.getParentId())) {
-                    if (StrUtils.isBlankOrNull(tc.getParentId()) || tc.getParentId().equals("-1")) {
-                        toolsClassify = tc;
-                    } else {
-                        tcNode = map.get(child.getParentId());
-                        childNode = new CommonGenericTree<>();
-                        childNode.setKey(tc.getId());
-                        childNode.setTitle(tc.getClassifyId() + "/" + tc.getTypeName());
-                        childNode.setParentId(tc.getParentId());
-                        childNode.setIcon("");
-                        childNode.setType(0);
-                        childNode.setValue(tc.getId());
-                        childNode.setDisabled(CommonConstant.STATUS_0.equals(tc.getStatus()) ? true : false);
-                        childNode.setRField1(tc.getClassifyId());
-                        childNode.setRField2(getBaseParent(tc.getId(), 0).getClassifyId());
-                        childNode.setEntity(tc);
-                        tcNode.addChildren(childNode);
-                        map.put(child.getId(), childNode);
-                    }
+                } else {
+                    tcNode = map.get(child.getParentId());
+                    childNode = new CommonGenericTree<>();
+                    childNode.setKey(tc.getId());
+                    childNode.setTitle(tc.getClassifyId() + "/" + tc.getTypeName());
+                    childNode.setParentId(tc.getParentId());
+                    childNode.setIcon("");
+                    childNode.setType(0);
+                    childNode.setValue(tc.getId());
+                    childNode.setDisabled(CommonConstant.STATUS_0.equals(tc.getStatus()) ? true : false);
+                    childNode.setRField1(tc.getClassifyId());
+                    //childNode.setRField2(getBaseParent(tc.getId(), 0).getClassifyId());
+                    childNode.setEntity(tc);
+                    tcNode.addChildren(childNode);
+                    map.put(child.getId(), childNode);
                 }
             }
         }
@@ -124,4 +138,160 @@
         }
         return toolsClassify;
     }
+
+
+    @Override
+    public ModelAndView toolClassifyExport(HttpServletRequest request, ToolsClassify toolsClassify, Class<ToolsClassify> clazz, String title) {
+// Step.1 缁勮鏌ヨ鏉′欢
+        QueryWrapper<ToolsClassify> queryWrapper = new QueryWrapper<>();
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+        // 杩囨护閫変腑鏁版嵁
+        String selections = request.getParameter("selections");
+        if (oConvertUtils.isNotEmpty(selections)) {
+            List<String> selectionList = Arrays.asList(selections.split(","));
+            queryWrapper.in("t.id",selectionList);
+        }
+        // Step.2 鑾峰彇瀵煎嚭鏁版嵁
+        List<ToolsClassify> exportList = this.baseMapper.queryExportList(queryWrapper);
+
+        // Step.3 AutoPoi 瀵煎嚭Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        //姝ゅ璁剧疆鐨刦ilename鏃犳晥 ,鍓嶇浼氶噸鏇存柊璁剧疆涓�涓�
+        mv.addObject(NormalExcelConstants.FILE_NAME, title);
+        mv.addObject(NormalExcelConstants.CLASS, clazz);
+        //update-begin--Author:liusq  Date:20210126 for锛氬浘鐗囧鍑烘姤閿欙紝ImageBasePath鏈缃�--------------------
+        ExportParams exportParams=new ExportParams(title + "鎶ヨ〃", "瀵煎嚭浜�:" + sysUser.getRealname(), title);
+        exportParams.setImageBasePath(upLoadPath);
+        //update-end--Author:liusq  Date:20210126 for锛氬浘鐗囧鍑烘姤閿欙紝ImageBasePath鏈缃�----------------------
+        mv.addObject(NormalExcelConstants.PARAMS,exportParams);
+        mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
+        return mv;
+    }
+
+    @Override
+    public Result<?> toolClassifyImportExcel(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        // 鑾峰彇涓婁紶鏂囦欢瀵硅薄
+        MultipartFile file = multipartRequest.getFile("file");
+        //閿欒淇℃伅
+        List<String> errorMessage = new ArrayList<>();
+        int successLines = 0, errorLines = 0;
+        try (InputStream fis = file.getInputStream()) {
+            Workbook workbook = WorkbookFactory.create(fis);
+
+            // 鑾峰彇绗竴涓伐浣滆〃
+            Sheet sheet = workbook.getSheetAt(0);
+            for(Row row : sheet) {
+                int rowNum = row.getRowNum()+1;
+                ToolsClassify newToolsClassify = new ToolsClassify();
+                if (row.getRowNum() == 0)
+                    continue;
+                Cell numCell = row.getCell(0);
+                String num = numCell.getStringCellValue();
+                Cell nameCell = row.getCell(1);
+                String name = nameCell.getStringCellValue();
+                Cell parentNumCell = row.getCell(2);
+                String parentNum = parentNumCell.getStringCellValue();
+                Cell seqCell = row.getCell(3);
+                String seq = seqCell.getStringCellValue();
+                Cell leafFlagCell = row.getCell(4);
+                String leafFlag = leafFlagCell.getStringCellValue();
+                Cell paraTypeFlagCell = row.getCell(5);
+                String paraTypeFlag = paraTypeFlagCell.getStringCellValue();
+                //杞箟鏄惁涓哄彾瀛愯妭鐐�
+                if("鏄�".equals(leafFlag)){
+                    leafFlag = "1";
+                }else if("鍚�".equals(leafFlag)){
+                    leafFlag = "2";
+                }else {
+                    errorMessage.add("绗�"+rowNum+"琛岋紝鏄惁涓哄彾瀛愯妭鐐瑰~鍐欓敊璇紝璇峰~鍐欌�樻槸鈥欐垨鈥欏惁鈥�");
+                    errorLines++;
+                    continue;
+                }
+                if(StringUtils.isBlank(num)){
+                    errorMessage.add("绗�"+rowNum+"琛岋紝鍒嗙被缂栫爜涓嶈兘涓虹┖");
+                    errorLines++;
+                    continue;
+                }
+                if(StringUtils.isBlank(name)){
+                    errorMessage.add("绗�"+rowNum+"琛岋紝鍒嗙被鍚嶇О涓嶈兘涓虹┖");
+                    errorLines++;
+                    continue;
+                    //鍒ゆ柇鏄惁鏈変笂绾у垎绫�
+                }
+                //鍒ゆ柇鍙傛暟妯℃澘鏄惁瀛樺湪
+                if(StringUtils.isNotBlank(paraTypeFlag)){
+                    List<DictModel> dictList = sysDictMapper.queryDictItemValueByCodeAndText("tool_para_type",paraTypeFlag);
+                    if(CollectionUtils.isNotEmpty(dictList)){
+                        paraTypeFlag = dictList.get(0).getValue();
+                    }else {
+                        errorMessage.add("绗�"+rowNum+"琛岋紝鍙傛暟妯℃澘涓嶅瓨鍦�");
+                        errorLines++;
+                        continue;
+                    }
+                }
+
+                if(StringUtils.isNotBlank(parentNum)){
+                    ToolsClassify toolsClassify = this.lambdaQuery()
+                            .eq(ToolsClassify::getClassifyId,parentNum)
+                            .eq(ToolsClassify::getLeafFlag,"2").one();
+                    if(toolsClassify == null){
+                        errorMessage.add("绗�"+rowNum+"琛岋紝鍒嗙被缂栫爜涓�"+num+"鐨勬暟鎹殑涓婄骇鍒嗙被缂栧彿涓嶅瓨鍦ㄦ垨涓哄彾瀛愯妭鐐�");
+                        errorLines++;
+                    }else {
+                        //鍒ゆ柇缂栫爜鏄惁閲嶅锛岄噸澶嶇殑杩涜鏇存柊
+                        ToolsClassify tools = this.lambdaQuery().eq(ToolsClassify::getClassifyId,num).one();
+                        if(tools != null){
+                            tools.setClassifyId(num)
+                                    .setTypeName(name)
+                                    .setStatus("1")
+                                    .setLeafFlag(leafFlag)
+                                    .setSeq(seq)
+                                    .setParentId(toolsClassify.getId())
+                                    .setParaTypeFlag(paraTypeFlag);
+                            this.updateById(tools);
+                        }else{
+                            newToolsClassify.setClassifyId(num)
+                                    .setTypeName(name)
+                                    .setStatus("1")
+                                    .setLeafFlag(leafFlag)
+                                    .setSeq(seq)
+                                    .setParentId(toolsClassify.getId())
+                                    .setParaTypeFlag(paraTypeFlag);
+                            this.save(newToolsClassify);
+                        }
+                        successLines++;
+                    }
+                    //濡傛灉娌″~鍐欎笂绾у垎绫荤紪鍙凤紝鍒欐柊澧炲埌鏍硅妭鐐�
+                }else {
+                    //鍒ゆ柇缂栫爜鏄惁閲嶅锛岄噸澶嶇殑杩涜鏇存柊
+                    ToolsClassify tools = this.lambdaQuery().eq(ToolsClassify::getClassifyId,num).one();
+                    if(tools != null){
+                        tools.setClassifyId(num)
+                                .setTypeName(name)
+                                .setStatus("1")
+                                .setLeafFlag(leafFlag)
+                                .setSeq(seq)
+                                .setParentId("-1")
+                                .setParaTypeFlag(paraTypeFlag);
+                        this.updateById(tools);
+                    }else {
+                        newToolsClassify.setClassifyId(num)
+                                .setTypeName(name)
+                                .setStatus("1")
+                                .setParentId("-1")
+                                .setSeq(seq)
+                                .setLeafFlag(leafFlag)
+                                .setParaTypeFlag(paraTypeFlag);
+                        this.save(newToolsClassify);
+                    }
+                    successLines++;
+                }
+            }
+        }catch (IOException e) {
+            e.printStackTrace();
+        }
+        return ImportExcelUtil.imporReturnRes(errorLines,successLines,errorMessage);
+    }
 }

--
Gitblit v1.9.3