From bb47bf3d97d1a68e06a73ce275e81b5e581219d4 Mon Sep 17 00:00:00 2001 From: cuijian <cuijian@xalxzn.com> Date: 星期三, 25 六月 2025 09:31:26 +0800 Subject: [PATCH] 工具分类导入调整 --- lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java | 254 ++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 214 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..35ae470 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,164 @@ } 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) + .setEncodingType("3") + .setSeq(seq) + .setParentId(toolsClassify.getId()) + .setParaTypeFlag(paraTypeFlag); + this.updateById(tools); + }else{ + newToolsClassify.setClassifyId(num) + .setTypeName(name) + .setStatus("1") + .setLeafFlag(leafFlag) + .setEncodingType("3") + .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) + .setEncodingType("3") + .setSeq(seq) + .setParentId("-1") + .setParaTypeFlag(paraTypeFlag); + this.updateById(tools); + }else { + newToolsClassify.setClassifyId(num) + .setTypeName(name) + .setStatus("1") + .setParentId("-1") + .setSeq(seq) + .setLeafFlag(leafFlag) + .setEncodingType("3") + .setParaTypeFlag(paraTypeFlag); + this.save(newToolsClassify); + } + successLines++; + } + } + }catch (IOException e) { + e.printStackTrace(); + } + return ImportExcelUtil.imporReturnRes(errorLines,successLines,errorMessage); + } } -- Gitblit v1.9.3