From 0ad8e58952b396bd689433a0b29e4a66f9bc0817 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期四, 22 五月 2025 17:33:39 +0800 Subject: [PATCH] 导出用户信息,主要导出用户二维码 --- pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaUserMapper.java | 4 + pms-parent/pms-global/src/main/resources/mapper/BaUserMapper.xml | 8 ++ pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/ExcelVo.java | 87 +++++++++++++++++++++++++++++ pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserSv.java | 6 + pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/MarkQrCode/ExcelVo.java | 32 ++++++++-- pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java | 29 +++++++++ 6 files changed, 155 insertions(+), 11 deletions(-) diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaUserMapper.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaUserMapper.java index 500f80a..66f8714 100644 --- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaUserMapper.java +++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaUserMapper.java @@ -1,7 +1,7 @@ package com.dy.pmsGlobal.daoBa; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dy.pmsGlobal.pojoBa.BaUser; +import com.dy.pmsGlobal.pojoPlt.PltStation; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -31,6 +31,8 @@ List<BaUser> selectSome(Map<String, Object> params) ; + List<BaUser> selectAll(); + int insert(BaUser record); int insertSelective(BaUser record); diff --git a/pms-parent/pms-global/src/main/resources/mapper/BaUserMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/BaUserMapper.xml index ff7e942..7ac0faa 100644 --- a/pms-parent/pms-global/src/main/resources/mapper/BaUserMapper.xml +++ b/pms-parent/pms-global/src/main/resources/mapper/BaUserMapper.xml @@ -147,6 +147,14 @@ </if> </trim> </select> + <select id="selectAll" resultMap="BaseResultMap"> + select + <include refid="Base_Column_List" /> + from ba_user + where supper_admin!=1 and deleted!=1 and disabled!=1 + order by id ASC + </select> + <select id="selectNamesByAssistants" parameterType="java.lang.String" resultType="java.lang.String"> SELECT GROUP_CONCAT(name) AS assistantNames FROM ba_user WHERE id IN <if test="assistants != null and assistants !=''"> diff --git a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/MarkQrCode/ExcelVo.java b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/MarkQrCode/ExcelVo.java index c4d5807..2ceee78 100644 --- a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/MarkQrCode/ExcelVo.java +++ b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/MarkQrCode/ExcelVo.java @@ -22,16 +22,32 @@ @Data @HeadRowHeight(40) //璁剧疆鏍囬楂樺害 @HeadFontStyle(fontName="瀹嬩綋", fontHeightInPoints = 16) -@HeadStyle(wrapped = BooleanEnum.TRUE, shrinkToFit = BooleanEnum.TRUE, - horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER, - borderLeft = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, - leftBorderColor = 8, rightBorderColor = 8, topBorderColor = 8, bottomBorderColor = 8) //IndexedColors.BLACK +@HeadStyle(wrapped = BooleanEnum.TRUE, + shrinkToFit = BooleanEnum.TRUE, + horizontalAlignment = HorizontalAlignmentEnum.CENTER, + verticalAlignment = VerticalAlignmentEnum.CENTER, + borderLeft = BorderStyleEnum.THIN, + borderRight = BorderStyleEnum.THIN, + borderTop = BorderStyleEnum.THIN, + borderBottom = BorderStyleEnum.THIN, + leftBorderColor = 8, + rightBorderColor = 8, + topBorderColor = 8, + bottomBorderColor = 8) //IndexedColors.BLACK @ContentRowHeight(220) //璁剧疆鍐呭楂樺害 @ContentFontStyle(fontName="瀹嬩綋", fontHeightInPoints = 14) -@ContentStyle(wrapped = BooleanEnum.TRUE, shrinkToFit = BooleanEnum.TRUE, - horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER, - borderLeft = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, - leftBorderColor = 8, rightBorderColor = 8, topBorderColor = 8, bottomBorderColor = 8) //IndexedColors.BLACK +@ContentStyle(wrapped = BooleanEnum.TRUE, + shrinkToFit = BooleanEnum.TRUE, + horizontalAlignment = HorizontalAlignmentEnum.CENTER, + verticalAlignment = VerticalAlignmentEnum.CENTER, + borderLeft = BorderStyleEnum.THIN, + borderRight = BorderStyleEnum.THIN, + borderTop = BorderStyleEnum.THIN, + borderBottom = BorderStyleEnum.THIN, + leftBorderColor = 8, + rightBorderColor = 8, + topBorderColor = 8, + bottomBorderColor = 8) //IndexedColors.BLACK @ColumnWidth(16) //璁剧疆鍒楀 public class ExcelVo implements Converter<byte[]> { @ExcelProperty("缂栫爜") diff --git a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/ExcelVo.java b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/ExcelVo.java new file mode 100644 index 0000000..988868f --- /dev/null +++ b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/ExcelVo.java @@ -0,0 +1,87 @@ +package com.dy.pmsBase.user; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.*; +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.WriteConverterContext; +import com.alibaba.excel.enums.BooleanEnum; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.alibaba.excel.enums.poi.VerticalAlignmentEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ImageData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +//鍙傝�冿細 https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write +@Data +@HeadRowHeight(40) //璁剧疆鏍囬楂樺害 +@HeadFontStyle(fontName="瀹嬩綋", fontHeightInPoints = 16) +@HeadStyle(wrapped = BooleanEnum.TRUE, + shrinkToFit = BooleanEnum.TRUE, + horizontalAlignment = HorizontalAlignmentEnum.CENTER, + verticalAlignment = VerticalAlignmentEnum.CENTER, + borderLeft = BorderStyleEnum.THIN, + borderRight = BorderStyleEnum.THIN, + borderTop = BorderStyleEnum.THIN, + borderBottom = BorderStyleEnum.THIN, + leftBorderColor = 8, + rightBorderColor = 8, + topBorderColor = 8, + bottomBorderColor = 8) //IndexedColors.BLACK +@ContentRowHeight(220) //璁剧疆鍐呭楂樺害 +@ContentFontStyle(fontName="瀹嬩綋", fontHeightInPoints = 14) +@ContentStyle(wrapped = BooleanEnum.TRUE, + shrinkToFit = BooleanEnum.TRUE, + horizontalAlignment = HorizontalAlignmentEnum.CENTER, + verticalAlignment = VerticalAlignmentEnum.CENTER, + borderLeft = BorderStyleEnum.THIN, + borderRight = BorderStyleEnum.THIN, + borderTop = BorderStyleEnum.THIN, + borderBottom = BorderStyleEnum.THIN, + leftBorderColor = 8, + rightBorderColor = 8, + topBorderColor = 8, + bottomBorderColor = 8) //IndexedColors.BLACK +@ColumnWidth(16) //璁剧疆鍒楀 +public class ExcelVo implements Converter<byte[]> { + + @ExcelProperty("鍚嶇О") + public String name ; + + @ColumnWidth(40) //璁剧疆鍒楀(鍙互淇グ绫�,涔熷彲浠ヤ慨楗板叿浣撳睘鎬�) + @ExcelProperty(value = "宸ョ珯浜岀淮鐮�", converter = ExcelVo.class) + public byte[] qrCode ; + + + public WriteCellData<?> convertToExcelData(byte[] value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + WriteCellData cellData = new WriteCellData() ; + if(value != null && value.length >0){ + List<ImageData> list = new ArrayList<>(); + ImageData imd = new ImageData(); + imd.setImage(value); + imd.setImageType(ImageData.ImageType.PICTURE_TYPE_PICT); + imd.setLeft(10); + imd.setTop(10); + imd.setRight(10); + imd.setBottom(10); + list.add(imd) ; + cellData.setImageDataList(list); + cellData.setType(CellDataTypeEnum.EMPTY); + }else{ + cellData.setStringValue(""); + cellData.setType(CellDataTypeEnum.STRING); + } + return cellData; + } + + public WriteCellData<?> convertToExcelData(WriteConverterContext<byte[]> context) throws Exception { + return this.convertToExcelData(context.getValue(), context.getContentProperty(), context.getWriteContext().currentWriteHolder().globalConfiguration()); + } + +} diff --git a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java index 7e5bd55..0da322e 100644 --- a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java +++ b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java @@ -1,5 +1,6 @@ package com.dy.pmsBase.user; +import com.alibaba.excel.converters.Converter; import com.dy.common.aop.SsoAop; import com.dy.common.aop.SsoPowerAop; import com.dy.common.util.MD5; @@ -10,7 +11,11 @@ import com.dy.pmsGlobal.pojoBa.BaRole; import com.dy.pmsGlobal.pojoBa.BaUser; import com.dy.pmsGlobal.util.Constant; +import com.dy.pmsGlobal.util.QrCodeConstant; +import com.dy.pmsGlobal.util.QrCodeUtil; +import com.google.zxing.WriterException; import com.mysql.cj.util.StringUtils; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -19,6 +24,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -245,4 +252,26 @@ } } + @PostMapping(path="export") + @SsoPowerAop(power = "10100001") + @Log("瀵煎嚭鐢ㄦ埛淇℃伅") + public void export(HttpServletResponse response) { + List<Converter> list = new ArrayList<>(); + List<BaUser> users = sv.selectAll(); + if (users != null) { + for (BaUser user : users) { + ExcelVo vo = new ExcelVo(); + vo.name = user.name; + try { + vo.qrCode = QrCodeUtil.genQrCode(QrCodeConstant.TypeStation + user.id); + } catch (IOException e) { + e.printStackTrace(); + } catch (WriterException e) { + e.printStackTrace(); + } + list.add(vo); + } + } + } + } diff --git a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserSv.java b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserSv.java index 4dd42d7..a9d8e20 100644 --- a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserSv.java +++ b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserSv.java @@ -82,7 +82,7 @@ rsVo.obj = this.dao.selectSome(params) ; rsVo.obj.parallelStream().forEach(item->{ try { - byte[] codes = QrCodeUtil.genQrCode(QrCodeConstant.TypeWorker+item.id); + byte[] codes = QrCodeUtil.genQrCode(QrCodeConstant.TypeWorker + item.id); item.qrCode = "data:image/jpeg;base64," + Base64.encode(codes); } catch (IOException e) { e.printStackTrace(); @@ -93,7 +93,9 @@ return rsVo ; } - + public List<BaUser> selectAll() { + return dao.selectAll(); + } /** * 淇濆瓨瀹炰綋 * @param po 瀹炰綋 -- Gitblit v1.8.0