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