Pārlūkot izejas kodu

活动记录导入接口

Qchen 1 gadu atpakaļ
vecāks
revīzija
423609d737

+ 6 - 0
commons/pom.xml

@@ -62,5 +62,11 @@
             <artifactId>minio</artifactId>
             <version>${minio.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel-core</artifactId>
+            <version>3.3.2</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 </project>

+ 10 - 0
commons/src/main/java/com/jzg/commons/entity/dto/SysActivityRecordDto.java

@@ -1,5 +1,6 @@
 package com.jzg.commons.entity.dto;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -28,23 +29,32 @@ public class SysActivityRecordDto {
     private String orderId;
 
     @Schema(description = "抽奖时间")
+    @ExcelProperty("抽奖时间")
     private String createTime;
 
     @Schema(description = "业务员")
+    @ExcelProperty("业务员")
     private String name;
 
     @Schema(description = "手机号")
+    @ExcelProperty("手机号")
     private String mobile;
 
     @Schema(description = "机构id")
     private String deptId;
 
     @Schema(description = "机构名称")
+    @ExcelProperty("归属机构")
     private String deptName;
 
     @Schema(description = "奖品名称")
+    @ExcelProperty("奖品名称")
     private String awardName;
 
     @Schema(description = "奖品类型 1 现金 2 增值服务")
+    @ExcelProperty("奖品类型")
     private String awardType;
+
+    @Schema(description = "现金类型 1 固定现金 2 区间现金")
+    private String awardCashType;
 }

+ 6 - 0
tenant/organization/pom.xml

@@ -34,6 +34,12 @@
             <version>${minio.version}</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.2.0</version>
+        </dependency>
+
     </dependencies>
     <build>
         <plugins>

+ 6 - 3
tenant/organization/src/main/java/com/jzg/organization/controller/ActivityController.java

@@ -4,7 +4,6 @@ package com.jzg.organization.controller;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.po.SysActivity;
-import com.jzg.commons.entity.po.SysActivityRecord;
 import com.jzg.commons.entity.vo.CheckActivityDeptVo;
 import com.jzg.commons.entity.vo.SysActivityRecordVo;
 import com.jzg.commons.entity.vo.SysActivityVo;
@@ -14,7 +13,7 @@ import io.swagger.v3.oas.annotations.Operation;
 import jakarta.annotation.Resource;
 import org.springframework.web.bind.annotation.*;
 
-
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -88,5 +87,9 @@ public class ActivityController {
         return HttpResult.ok(sysActivityService.getActivityRecord(page,sysActivityRecordVo));
     }
 
-
+    @Operation(summary = "导出抽奖记录接口", description = "导出抽奖记录接口")
+    @PostMapping(value = "/exportActivityRecord")
+    public HttpResult<String> exportActivityRecord(@RequestBody List<String> idList) throws Exception {
+        return HttpResult.ok("", sysActivityService.exportActivityRecord(idList));
+    }
 }

+ 4 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/SysActivityRecordMapper.java

@@ -8,8 +8,12 @@ import com.jzg.commons.entity.vo.SysActivityRecordVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 @Mapper
 public interface SysActivityRecordMapper extends BaseMapper<SysActivityRecord> {
 
     Page<SysActivityRecordDto> getActivityRecord(Page page, @Param("sysActivityRecordVo") SysActivityRecordVo sysActivityRecordVo);
+
+    List<SysActivityRecordDto> selectRecordIds(List<String> idList);
 }

+ 5 - 1
tenant/organization/src/main/java/com/jzg/organization/service/SysActivityService.java

@@ -6,11 +6,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.SysActivityRecordDto;
 import com.jzg.commons.entity.po.SysActivity;
-import com.jzg.commons.entity.po.SysActivityRecord;
 import com.jzg.commons.entity.vo.CheckActivityDeptVo;
 import com.jzg.commons.entity.vo.SysActivityRecordVo;
 import com.jzg.commons.entity.vo.SysActivityVo;
 
+import java.util.List;
+
 public interface SysActivityService extends IService<SysActivity> {
     HttpResult addActivity(SysActivityVo sysActivityVo);
 
@@ -25,4 +26,7 @@ public interface SysActivityService extends IService<SysActivity> {
     Page<SysActivity> getActivityList(Page page,SysActivityVo sysActivityVo);
 
     Page<SysActivityRecordDto> getActivityRecord(Page page, SysActivityRecordVo sysActivityRecordVo);
+
+    String exportActivityRecord(List<String> idList) throws Exception;
+
 }

+ 55 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysActivityServiceImpl.java

@@ -20,13 +20,24 @@ import com.jzg.organization.service.SysActivityAwardService;
 import com.jzg.organization.service.SysActivityDeptService;
 import com.jzg.organization.service.SysActivityService;
 import com.jzg.organization.service.SysDeptService;
+import io.minio.MinioClient;
+import io.minio.PutObjectArgs;
+import io.minio.errors.*;
 import jakarta.annotation.Resource;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.*;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
@@ -61,6 +72,9 @@ public class SysActivityServiceImpl extends ServiceImpl<SysActivityMapper, SysAc
     @Resource
     private SysActivityRecordMapper sysActivityRecordMapper;
 
+    @Resource
+    private MinioClient minioClient;
+
     @Qualifier("baseController")
     @Autowired
     private BaseController controller;
@@ -274,4 +288,45 @@ public class SysActivityServiceImpl extends ServiceImpl<SysActivityMapper, SysAc
     public Page<SysActivityRecordDto> getActivityRecord(Page page, SysActivityRecordVo sysActivityRecordVo) {
         return sysActivityRecordMapper.getActivityRecord(page,sysActivityRecordVo);
     }
+
+    @Override
+    public String exportActivityRecord(List<String> idList) throws IOException, ServerException, InsufficientDataException, ErrorResponseException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
+        List<SysActivityRecordDto> activityRecordDtoList = sysActivityRecordMapper.selectRecordIds(idList);
+
+        Workbook workbook = new XSSFWorkbook();
+        Sheet sheet = workbook.createSheet("抽奖记录");
+        Row headerRow = sheet.createRow(0);
+
+        String[] headers = {"业务员", "手机号","归属机构","抽奖时间","奖品类型","奖品名称"};
+        for (int i = 0; i < headers.length; i++) {
+            Cell cell = headerRow.createCell(i);
+            cell.setCellValue(headers[i]);
+        }
+        for (int i = 0; i < activityRecordDtoList.size(); i++) {
+            SysActivityRecordDto dto = activityRecordDtoList.get(i);
+            Row row = sheet.createRow(i + 1);
+            row.createCell(0).setCellValue(dto.getName());
+            row.createCell(1).setCellValue(dto.getMobile());
+            row.createCell(2).setCellValue(dto.getDeptName());
+            row.createCell(3).setCellValue(dto.getCreateTime());
+            if (dto.getAwardType().equals("现金")) {
+                row.createCell(4).setCellValue(dto.getAwardType() + "-" + dto.getAwardCashType());
+            } else {
+                row.createCell(4).setCellValue(dto.getAwardType());
+            }
+            row.createCell(5).setCellValue(dto.getAwardName());
+        }
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        workbook.write(outputStream);
+        byte[] bytes = outputStream.toByteArray();
+        InputStream inputStream = new ByteArrayInputStream(bytes);
+        String fileName = "抽奖记录"+ System.currentTimeMillis() + ".xlsx";
+        minioClient.putObject(PutObjectArgs.builder()
+                .bucket("jzg")
+                .object(fileName)
+                .stream(inputStream, bytes.length, -1)
+                .build());
+        inputStream.close();
+        return MinioUtils.getPresignedObjectUrl("jzg", fileName);
+    }
 }

+ 14 - 53
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java

@@ -548,59 +548,20 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     public void saveFile(String sfz1, String sfz2, String qualification, String contract, String applicant, String salaryTable, String leaveTable,String userId) {
-        if (!Objects.isNull(sfz1) && !sfz1.isEmpty()) {
-            SysUploadFiles sysUploadFiles = sysUploadFilesMapper.selectOne
-                    (new LambdaQueryWrapper<SysUploadFiles>().eq(SysUploadFiles::getId, sfz1));
-            SysUserJzgInfoFile sysUserJzgInfoFile = new SysUserJzgInfoFile(sfz1, userId, sysUploadFiles.getFileName());
-            sysUserJzgInfoFile.setFileType("sfz1");
-            sysUserJzgInfoFile.setFileUrl(MinioUtils.getPresignedObjectUrl("jzg", sysUploadFiles.getFileName()));
-            sysUserJzgInfoFileService.save(sysUserJzgInfoFile);
-        }
-        if (!Objects.isNull(sfz2) && !sfz2.isEmpty()) {
-            SysUploadFiles sysUploadFiles = sysUploadFilesMapper.selectOne
-                    (new LambdaQueryWrapper<SysUploadFiles>().eq(SysUploadFiles::getId, sfz2));
-            SysUserJzgInfoFile sysUserJzgInfoFile = new SysUserJzgInfoFile(sfz2, userId, sysUploadFiles.getFileName());
-            sysUserJzgInfoFile.setFileType("sfz2");
-            sysUserJzgInfoFile.setFileUrl(MinioUtils.getPresignedObjectUrl("jzg", sysUploadFiles.getFileName()));
-            sysUserJzgInfoFileService.save(sysUserJzgInfoFile);
-        }
-        if (!Objects.isNull(qualification) && !qualification.isEmpty()) {
-            SysUploadFiles sysUploadFiles = sysUploadFilesMapper.selectOne
-                    (new LambdaQueryWrapper<SysUploadFiles>().eq(SysUploadFiles::getId, qualification));
-            SysUserJzgInfoFile sysUserJzgInfoFile = new SysUserJzgInfoFile(qualification, userId, sysUploadFiles.getFileName());
-            sysUserJzgInfoFile.setFileType("qualification");
-            sysUserJzgInfoFile.setFileUrl(MinioUtils.getPresignedObjectUrl("jzg", sysUploadFiles.getFileName()));
-            sysUserJzgInfoFileService.save(sysUserJzgInfoFile);
-        }
-        if (!Objects.isNull(contract) && !contract.isEmpty()) {
-            SysUploadFiles sysUploadFiles = sysUploadFilesMapper.selectOne
-                    (new LambdaQueryWrapper<SysUploadFiles>().eq(SysUploadFiles::getId, contract));
-            SysUserJzgInfoFile sysUserJzgInfoFile = new SysUserJzgInfoFile(contract, userId, sysUploadFiles.getFileName());
-            sysUserJzgInfoFile.setFileType("contract");
-            sysUserJzgInfoFile.setFileUrl(MinioUtils.getPresignedObjectUrl("jzg", sysUploadFiles.getFileName()));
-            sysUserJzgInfoFileService.save(sysUserJzgInfoFile);
-        }
-        if (!Objects.isNull(applicant) && !applicant.isEmpty()) {
-            SysUploadFiles sysUploadFiles = sysUploadFilesMapper.selectOne
-                    (new LambdaQueryWrapper<SysUploadFiles>().eq(SysUploadFiles::getId, applicant));
-            SysUserJzgInfoFile sysUserJzgInfoFile = new SysUserJzgInfoFile(applicant, userId, sysUploadFiles.getFileName());
-            sysUserJzgInfoFile.setFileType("applicant");
-            sysUserJzgInfoFile.setFileUrl(MinioUtils.getPresignedObjectUrl("jzg", sysUploadFiles.getFileName()));
-            sysUserJzgInfoFileService.save(sysUserJzgInfoFile);
-        }
-        if (!Objects.isNull(salaryTable) && !salaryTable.isEmpty()) {
-            SysUploadFiles sysUploadFiles = sysUploadFilesMapper.selectOne
-                    (new LambdaQueryWrapper<SysUploadFiles>().eq(SysUploadFiles::getId, salaryTable));
-            SysUserJzgInfoFile sysUserJzgInfoFile = new SysUserJzgInfoFile(salaryTable,userId,sysUploadFiles.getFileName());
-            sysUserJzgInfoFile.setFileType("salary");
-            sysUserJzgInfoFile.setFileUrl(MinioUtils.getPresignedObjectUrl("jzg", sysUploadFiles.getFileName()));
-            sysUserJzgInfoFileService.save(sysUserJzgInfoFile);
-        }
-        if (!Objects.isNull(leaveTable) && !leaveTable.isEmpty()) {
-            SysUploadFiles sysUploadFiles = sysUploadFilesMapper.selectOne
-                    (new LambdaQueryWrapper<SysUploadFiles>().eq(SysUploadFiles::getId, leaveTable));
-            SysUserJzgInfoFile sysUserJzgInfoFile = new SysUserJzgInfoFile(leaveTable, userId, sysUploadFiles.getFileName());
-            sysUserJzgInfoFile.setFileType("leave");
+        saveSingleFile(sfz1, "sfz1", userId);
+        saveSingleFile(sfz2, "sfz2", userId);
+        saveSingleFile(qualification, "qualification", userId);
+        saveSingleFile(contract, "contract", userId);
+        saveSingleFile(applicant, "applicant", userId);
+        saveSingleFile(salaryTable, "salary", userId);
+        saveSingleFile(leaveTable, "leave", userId);
+    }
+    private void saveSingleFile(String fileId, String fileType, String userId) {
+        if (!Objects.isNull(fileId) && !fileId.isEmpty()) {
+            SysUploadFiles sysUploadFiles = sysUploadFilesMapper.selectOne(
+                    new LambdaQueryWrapper<SysUploadFiles>().eq(SysUploadFiles::getId, fileId));
+            SysUserJzgInfoFile sysUserJzgInfoFile = new SysUserJzgInfoFile(fileId, userId, sysUploadFiles.getFileName());
+            sysUserJzgInfoFile.setFileType(fileType);
             sysUserJzgInfoFile.setFileUrl(MinioUtils.getPresignedObjectUrl("jzg", sysUploadFiles.getFileName()));
             sysUserJzgInfoFileService.save(sysUserJzgInfoFile);
         }

+ 33 - 0
tenant/organization/src/main/resources/mapper/SysActivityRecordMapper.xml

@@ -4,6 +4,7 @@
 
     <select id="getActivityRecord" resultType="com.jzg.commons.entity.dto.SysActivityRecordDto">
         select
+            sar.id,
             suji.name as name,
             su.mobile as mobile,
             suji.dept_id as deptId,
@@ -33,8 +34,40 @@
         <if test="sysActivityRecordVo.awardName != null and sysActivityRecordVo.awardName != ''">
             and saa.award_name like concat('%',#{sysActivityRecordVo.awardName},'%')
         </if>
+    </select>
 
 
+    <select id="selectRecordIds" resultType="com.jzg.commons.entity.dto.SysActivityRecordDto">
+        select
+        suji.name as name,
+        su.mobile as mobile,
+        suji.dept_id as deptId,
+        sd.name as deptName,
+        sar.create_time as createTime,
+        saa.award_name as awardName,
+        CASE
+        WHEN saa.award_cash_type = 1 THEN '固定现金'
+        WHEN saa.award_cash_type = 2 THEN '区间现金'
+        END AS awardCashType,
+        CASE
+        WHEN saa.award_type = 1 THEN '现金'
+        WHEN saa.award_type = 2 THEN '增值服务'
+        END AS awardType
+        from sys_activity_record sar
+        left join sys_activity sa on sa.id = sar.activity_id
+        left join sys_user_jzg_info suji on suji.id = sar.user_jzg_info_id
+        left join sys_activity_award saa on saa.id = sar.award_id
+        left join sys_dept sd on sd.id = suji.dept_id
+        left join sys_user su on su.id = suji.user_id
+        where
+        1=1
+        <if test="list != null and list.size() > 0">
+            and sar.id in
+            <foreach item="item" index="index" collection="list"
+                     open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
     </select>
 
 </mapper>

+ 1 - 0
tenant/organization/src/main/resources/mapper/SysUserJzgInfoMapper.xml

@@ -96,6 +96,7 @@
             and (suji.name like concat('%',#{sysUserInfoListVo.salesman},'%')
             or  su.mobile = #{sysUserInfoListVo.salesman}
             or  suji.id = #{sysUserInfoListVo.salesman})
+            or  su.id = #{sysUserInfoListVo.salesman}
         </if>
         group by suji.id, soul.organization_id, so.name
         order by suji.create_time desc