liurunyu
2025-05-22 0ad8e58952b396bd689433a0b29e4a66f9bc0817
导出用户信息,主要导出用户二维码
5个文件已修改
1个文件已添加
166 ■■■■■ 已修改文件
pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaUserMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pms-parent/pms-global/src/main/resources/mapper/BaUserMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/MarkQrCode/ExcelVo.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/ExcelVo.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserSv.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
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 !=''">
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("编码")
pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/ExcelVo.java
New file
@@ -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());
    }
}
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);
            }
        }
    }
}
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 实体