mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-11-04 10:57:10 +08:00 
			
		
		
		
	refactor: 优化字典导出数据和格式
This commit is contained in:
		@@ -46,13 +46,13 @@ public class BaseDetailVO extends BaseVO {
 | 
				
			|||||||
     * 修改人
 | 
					     * 修改人
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "修改人", example = "李四")
 | 
					    @Schema(description = "修改人", example = "李四")
 | 
				
			||||||
    @ExcelProperty(value = "修改人")
 | 
					    @ExcelProperty(value = "修改人", order = Integer.MAX_VALUE - 2)
 | 
				
			||||||
    private String updateUserString;
 | 
					    private String updateUserString;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 修改时间
 | 
					     * 修改时间
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "修改时间", example = "2023-08-08 08:08:08", type = "string")
 | 
					    @Schema(description = "修改时间", example = "2023-08-08 08:08:08", type = "string")
 | 
				
			||||||
    @ExcelProperty(value = "修改时间")
 | 
					    @ExcelProperty(value = "修改时间", order = Integer.MAX_VALUE - 1)
 | 
				
			||||||
    private LocalDateTime updateTime;
 | 
					    private LocalDateTime updateTime;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -236,7 +236,7 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseDO,
 | 
				
			|||||||
     * @param detailObj
 | 
					     * @param detailObj
 | 
				
			||||||
     *            待填充详情信息
 | 
					     *            待填充详情信息
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    protected void fillDetail(Object detailObj) {
 | 
					    public void fillDetail(Object detailObj) {
 | 
				
			||||||
        if (detailObj instanceof BaseDetailVO) {
 | 
					        if (detailObj instanceof BaseDetailVO) {
 | 
				
			||||||
            BaseDetailVO detailVO = (BaseDetailVO)detailObj;
 | 
					            BaseDetailVO detailVO = (BaseDetailVO)detailObj;
 | 
				
			||||||
            this.fill(detailVO);
 | 
					            this.fill(detailVO);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,7 +42,7 @@ public class BaseVO implements Serializable {
 | 
				
			|||||||
     * ID
 | 
					     * ID
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "ID", example = "1")
 | 
					    @Schema(description = "ID", example = "1")
 | 
				
			||||||
    @ExcelProperty(value = "ID")
 | 
					    @ExcelProperty(value = "ID", order = 1)
 | 
				
			||||||
    private Long id;
 | 
					    private Long id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -55,14 +55,14 @@ public class BaseVO implements Serializable {
 | 
				
			|||||||
     * 创建人
 | 
					     * 创建人
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "创建人", example = "超级管理员")
 | 
					    @Schema(description = "创建人", example = "超级管理员")
 | 
				
			||||||
    @ExcelProperty(value = "创建人")
 | 
					    @ExcelProperty(value = "创建人", order = Integer.MAX_VALUE - 4)
 | 
				
			||||||
    private String createUserString;
 | 
					    private String createUserString;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 创建时间
 | 
					     * 创建时间
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "创建时间", example = "2023-08-08 08:08:08", type = "string")
 | 
					    @Schema(description = "创建时间", example = "2023-08-08 08:08:08", type = "string")
 | 
				
			||||||
    @ExcelProperty(value = "创建时间")
 | 
					    @ExcelProperty(value = "创建时间", order = Integer.MAX_VALUE - 3)
 | 
				
			||||||
    private LocalDateTime createTime;
 | 
					    private LocalDateTime createTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,9 +20,6 @@ import lombok.Data;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
					import io.swagger.v3.oas.annotations.media.Schema;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 | 
					 | 
				
			||||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import top.charles7c.cnadmin.common.base.BaseDetailVO;
 | 
					import top.charles7c.cnadmin.common.base.BaseDetailVO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -32,7 +29,6 @@ import top.charles7c.cnadmin.common.base.BaseDetailVO;
 | 
				
			|||||||
 * @since 2023/9/11 21:29
 | 
					 * @since 2023/9/11 21:29
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@Data
 | 
					@Data
 | 
				
			||||||
@ExcelIgnoreUnannotated
 | 
					 | 
				
			||||||
@Schema(description = "字典详情信息")
 | 
					@Schema(description = "字典详情信息")
 | 
				
			||||||
public class DictDetailVO extends BaseDetailVO {
 | 
					public class DictDetailVO extends BaseDetailVO {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -42,20 +38,17 @@ public class DictDetailVO extends BaseDetailVO {
 | 
				
			|||||||
     * 字典名称
 | 
					     * 字典名称
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "字典名称", example = "公告类型")
 | 
					    @Schema(description = "字典名称", example = "公告类型")
 | 
				
			||||||
    @ExcelProperty(value = "字典名称")
 | 
					 | 
				
			||||||
    private String name;
 | 
					    private String name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 字典编码
 | 
					     * 字典编码
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "字典编码", example = "announcement_type")
 | 
					    @Schema(description = "字典编码", example = "announcement_type")
 | 
				
			||||||
    @ExcelProperty(value = "字典编码")
 | 
					 | 
				
			||||||
    private String code;
 | 
					    private String code;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 描述
 | 
					     * 描述
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "描述", example = "公告类型描述信息")
 | 
					    @Schema(description = "描述", example = "公告类型描述信息")
 | 
				
			||||||
    @ExcelProperty(value = "描述")
 | 
					 | 
				
			||||||
    private String description;
 | 
					    private String description;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -42,41 +42,54 @@ public class DictItemDetailVO extends BaseDetailVO {
 | 
				
			|||||||
     * 字典标签
 | 
					     * 字典标签
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "字典标签", example = "通知")
 | 
					    @Schema(description = "字典标签", example = "通知")
 | 
				
			||||||
    @ExcelProperty(value = "字典标签")
 | 
					    @ExcelProperty(value = "字典标签", order = 2)
 | 
				
			||||||
    private String label;
 | 
					    private String label;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 字典值
 | 
					     * 字典值
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "字典值", example = "1")
 | 
					    @Schema(description = "字典值", example = "1")
 | 
				
			||||||
    @ExcelProperty(value = "字典值")
 | 
					    @ExcelProperty(value = "字典值", order = 3)
 | 
				
			||||||
    private String value;
 | 
					    private String value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 背景颜色
 | 
					     * 背景颜色
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "背景颜色", example = "blue")
 | 
					    @Schema(description = "背景颜色", example = "blue")
 | 
				
			||||||
    @ExcelProperty(value = "背景颜色")
 | 
					    @ExcelProperty(value = "背景颜色", order = 4)
 | 
				
			||||||
    private String color;
 | 
					    private String color;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 排序
 | 
					     * 排序
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "排序", example = "1")
 | 
					    @Schema(description = "排序", example = "1")
 | 
				
			||||||
    @ExcelProperty(value = "排序")
 | 
					    @ExcelProperty(value = "排序", order = 5)
 | 
				
			||||||
    private Integer sort;
 | 
					    private Integer sort;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 描述
 | 
					     * 描述
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "描述", example = "通知描述信息")
 | 
					    @Schema(description = "描述", example = "通知描述信息")
 | 
				
			||||||
    @ExcelProperty(value = "描述")
 | 
					    @ExcelProperty(value = "描述", order = 6)
 | 
				
			||||||
    private String description;
 | 
					    private String description;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 所属字典
 | 
					     * 字典 ID
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "所属字典", example = "1")
 | 
					    @Schema(description = "字典 ID", example = "1")
 | 
				
			||||||
    @ExcelProperty(value = "所属字典")
 | 
					 | 
				
			||||||
    private Long dictId;
 | 
					    private Long dictId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 字典名称
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Schema(hidden = true)
 | 
				
			||||||
 | 
					    @ExcelProperty(value = "字典名称", order = 7)
 | 
				
			||||||
 | 
					    private String dictName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 字典编码
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Schema(hidden = true)
 | 
				
			||||||
 | 
					    @ExcelProperty(value = "字典编码", order = 8)
 | 
				
			||||||
 | 
					    private String dictCode;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -32,6 +32,15 @@ import top.charles7c.cnadmin.system.model.vo.DictItemVO;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
public interface DictItemService extends BaseService<DictItemVO, DictItemDetailVO, DictItemQuery, DictItemRequest> {
 | 
					public interface DictItemService extends BaseService<DictItemVO, DictItemDetailVO, DictItemQuery, DictItemRequest> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 根据字典 ID 查询
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param dictId
 | 
				
			||||||
 | 
					     *            字典 ID
 | 
				
			||||||
 | 
					     * @return 字典项列表
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    List<DictItemDetailVO> listByDictId(Long dictId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 根据字典 ID 列表删除
 | 
					     * 根据字典 ID 列表删除
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,6 +24,7 @@ import org.springframework.stereotype.Service;
 | 
				
			|||||||
import org.springframework.transaction.annotation.Transactional;
 | 
					import org.springframework.transaction.annotation.Transactional;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import top.charles7c.cnadmin.common.base.BaseServiceImpl;
 | 
					import top.charles7c.cnadmin.common.base.BaseServiceImpl;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.common.model.query.SortQuery;
 | 
				
			||||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
 | 
					import top.charles7c.cnadmin.common.util.validate.CheckUtils;
 | 
				
			||||||
import top.charles7c.cnadmin.system.mapper.DictItemMapper;
 | 
					import top.charles7c.cnadmin.system.mapper.DictItemMapper;
 | 
				
			||||||
import top.charles7c.cnadmin.system.model.entity.DictItemDO;
 | 
					import top.charles7c.cnadmin.system.model.entity.DictItemDO;
 | 
				
			||||||
@@ -61,6 +62,17 @@ public class DictItemServiceImpl
 | 
				
			|||||||
        super.update(request, id);
 | 
					        super.update(request, id);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public List<DictItemDetailVO> listByDictId(Long dictId) {
 | 
				
			||||||
 | 
					        DictItemQuery dictItemQuery = new DictItemQuery();
 | 
				
			||||||
 | 
					        dictItemQuery.setDictId(dictId);
 | 
				
			||||||
 | 
					        SortQuery sortQuery = new SortQuery();
 | 
				
			||||||
 | 
					        sortQuery.setSort(new String[] {"sort,asc"});
 | 
				
			||||||
 | 
					        List<DictItemDetailVO> detailList = super.list(dictItemQuery, sortQuery, DictItemDetailVO.class);
 | 
				
			||||||
 | 
					        detailList.forEach(super::fillDetail);
 | 
				
			||||||
 | 
					        return detailList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void deleteByDictIds(List<Long> dictIds) {
 | 
					    public void deleteByDictIds(List<Long> dictIds) {
 | 
				
			||||||
        baseMapper.lambdaUpdate().in(DictItemDO::getDictId, dictIds).remove();
 | 
					        baseMapper.lambdaUpdate().in(DictItemDO::getDictId, dictIds).remove();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,21 +16,25 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package top.charles7c.cnadmin.system.service.impl;
 | 
					package top.charles7c.cnadmin.system.service.impl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.servlet.http.HttpServletResponse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import lombok.RequiredArgsConstructor;
 | 
					import lombok.RequiredArgsConstructor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
import org.springframework.transaction.annotation.Transactional;
 | 
					import org.springframework.transaction.annotation.Transactional;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import top.charles7c.cnadmin.common.base.BaseServiceImpl;
 | 
					import top.charles7c.cnadmin.common.base.BaseServiceImpl;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.common.model.query.SortQuery;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.common.util.ExcelUtils;
 | 
				
			||||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
 | 
					import top.charles7c.cnadmin.common.util.validate.CheckUtils;
 | 
				
			||||||
import top.charles7c.cnadmin.system.mapper.DictMapper;
 | 
					import top.charles7c.cnadmin.system.mapper.DictMapper;
 | 
				
			||||||
import top.charles7c.cnadmin.system.model.entity.DictDO;
 | 
					import top.charles7c.cnadmin.system.model.entity.DictDO;
 | 
				
			||||||
import top.charles7c.cnadmin.system.model.query.DictQuery;
 | 
					import top.charles7c.cnadmin.system.model.query.DictQuery;
 | 
				
			||||||
import top.charles7c.cnadmin.system.model.request.DictRequest;
 | 
					import top.charles7c.cnadmin.system.model.request.DictRequest;
 | 
				
			||||||
import top.charles7c.cnadmin.system.model.vo.DictDetailVO;
 | 
					import top.charles7c.cnadmin.system.model.vo.*;
 | 
				
			||||||
import top.charles7c.cnadmin.system.model.vo.DictVO;
 | 
					 | 
				
			||||||
import top.charles7c.cnadmin.system.service.DictItemService;
 | 
					import top.charles7c.cnadmin.system.service.DictItemService;
 | 
				
			||||||
import top.charles7c.cnadmin.system.service.DictService;
 | 
					import top.charles7c.cnadmin.system.service.DictService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -74,6 +78,21 @@ public class DictServiceImpl extends BaseServiceImpl<DictMapper, DictDO, DictVO,
 | 
				
			|||||||
        super.delete(ids);
 | 
					        super.delete(ids);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void export(DictQuery query, SortQuery sortQuery, HttpServletResponse response) {
 | 
				
			||||||
 | 
					        List<DictVO> dictList = this.list(query, sortQuery);
 | 
				
			||||||
 | 
					        List<DictItemDetailVO> dictItemList = new ArrayList<>();
 | 
				
			||||||
 | 
					        for (DictVO dict : dictList) {
 | 
				
			||||||
 | 
					            List<DictItemDetailVO> tempDictItemList = dictItemService.listByDictId(dict.getId());
 | 
				
			||||||
 | 
					            for (DictItemDetailVO dictItem : tempDictItemList) {
 | 
				
			||||||
 | 
					                dictItem.setDictName(dict.getName());
 | 
				
			||||||
 | 
					                dictItem.setDictCode(dict.getCode());
 | 
				
			||||||
 | 
					                dictItemList.add(dictItem);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ExcelUtils.export(dictItemList, "导出数据", DictItemDetailVO.class, response);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 检查名称是否存在
 | 
					     * 检查名称是否存在
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user