From 50de7480237de2ba9d140a219d48a9b72211b8d2 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 03 九月 2026 17:27:43 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_business' into dev_business

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/MesMdItemTypeController.java |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/MesMdItemTypeController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/MesMdItemTypeController.java
index bd91d3f..ec014e0 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/MesMdItemTypeController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/MesMdItemTypeController.java
@@ -1,9 +1,11 @@
 package cn.iocoder.yudao.module.mes.controller.admin.md.item;
 
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.type.MesMdItemTypeExcelVO;
 import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.type.MesMdItemTypeImportExcelVO;
 import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.type.MesMdItemTypeImportRespVO;
 import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.type.MesMdItemTypeListReqVO;
@@ -24,9 +26,13 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
 
@@ -91,8 +97,57 @@
                 .setItemOrProduct(itemType.getItemOrProduct())));
     }
 
+    @GetMapping("/export-excel")
+    @Operation(summary = "瀵煎嚭鐗╂枡浜у搧鍒嗙被 Excel")
+    @PreAuthorize("@ss.hasPermission('mes:md-item-type:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportItemTypeExcel(@Valid MesMdItemTypeListReqVO listReqVO,
+                                    HttpServletResponse response) throws IOException {
+        List<MesMdItemTypeDO> list = itemTypeService.getItemTypeList(listReqVO);
+        // 鍏ㄩ噺鍒嗙被锛岀敤浜庤В鏋愪笂绾у垎绫伙紙鐖跺垎绫诲彲鑳戒笉鍦ㄧ瓫閫夌粨鏋滃唴锛�
+        Map<Long, String> parentCodeMap = new HashMap<>();
+        Map<Long, String> parentNameMap = new HashMap<>();
+        for (MesMdItemTypeDO type : itemTypeService.getItemTypeList(new MesMdItemTypeListReqVO())) {
+            parentCodeMap.put(type.getId(), type.getCode());
+            parentNameMap.put(type.getId(), type.getName());
+        }
+        // 缁勮瀵煎嚭 VO锛堣ˉ榻愪笂绾у垎绫荤紪鐮�/鍚嶇О銆佺墿鏂欎骇鍝佷腑鏂囨爣璇嗭級
+        List<MesMdItemTypeExcelVO> excelList = new ArrayList<>();
+        for (MesMdItemTypeDO type : list) {
+            MesMdItemTypeExcelVO excelVO = BeanUtils.toBean(type, MesMdItemTypeExcelVO.class);
+            if (type.getParentId() != null && !MesMdItemTypeDO.PARENT_ID_ROOT.equals(type.getParentId())) {
+                excelVO.setParentCode(parentCodeMap.get(type.getParentId()));
+                excelVO.setParentName(parentNameMap.get(type.getParentId()));
+            }
+            excelVO.setItemOrProduct(convertItemOrProductToText(type.getItemOrProduct()));
+            excelList.add(excelVO);
+        }
+        // 瀵煎嚭 Excel
+        ExcelUtils.write(response, "鐗╂枡鍒嗙被鏁版嵁.xls", "鐗╂枡鍒嗙被", MesMdItemTypeExcelVO.class, excelList);
+    }
+
+    /**
+     * 灏嗙墿鏂�/浜у搧鏍囪瘑杞崲涓轰腑鏂囧悕绉�
+     *
+     * @param itemOrProduct 瀛楀吀鍊硷細ITEM=鐗╂枡锛孭RODUCT=浜у搧
+     * @return 涓枃鍚嶇О
+     */
+    private String convertItemOrProductToText(String itemOrProduct) {
+        if (itemOrProduct == null) {
+            return null;
+        }
+        if ("ITEM".equals(itemOrProduct)) {
+            return "鐗╂枡";
+        }
+        if ("PRODUCT".equals(itemOrProduct)) {
+            return "浜у搧";
+        }
+        return itemOrProduct;
+    }
+
     @GetMapping("/get-import-template")
     @Operation(summary = "鑾峰緱瀵煎叆鐗╂枡浜у搧鍒嗙被妯℃澘")
+    @PreAuthorize("@ss.hasPermission('mes:md-item-type:import')")
     public void importTemplate(HttpServletResponse response) throws IOException {
         List<MesMdItemTypeImportExcelVO> list = Arrays.asList(
                 MesMdItemTypeImportExcelVO.builder().code("RAW").name("鍘熸潗鏂�").itemOrProduct("ITEM").sort(1).status(0).remark("绀轰緥锛氶《绾у垎绫�").build(),

--
Gitblit v1.9.3