add 标协会员项目其他资料
This commit is contained in:
@@ -8,3 +8,20 @@ ALTER TABLE `tb_member_project`
|
||||
ADD COLUMN `council_charge_notice_file_id` varchar(500) COMMENT '理事会收费通知文件id',
|
||||
ADD COLUMN `remark` varchar(600) COMMENT '备注';
|
||||
|
||||
-- auto-generated definition
|
||||
create table tb_member_project_file
|
||||
(
|
||||
id varchar(36) not null
|
||||
primary key,
|
||||
create_by varchar(50) null comment '创建人',
|
||||
create_time datetime null comment '创建日期',
|
||||
update_by varchar(50) null comment '更新人',
|
||||
update_time datetime null comment '更新日期',
|
||||
project_id varchar(50) null comment '项目id',
|
||||
file_id varchar(32) null comment '文件id'
|
||||
)
|
||||
comment '标协会员项目其他资料';
|
||||
|
||||
create index Index_1
|
||||
on tb_member_project_file (project_id);
|
||||
|
||||
|
||||
+150
@@ -0,0 +1,150 @@
|
||||
package com.jero.member.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.util.oConvertUtils;
|
||||
import com.jero.member.entity.TbMemberProjectFile;
|
||||
import com.jero.member.service.TbMemberProjectFileService;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.project.entity.PayWorkingGroupDataFile;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.jero.common.system.base.controller.JeroController;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.jero.common.aspect.annotation.AutoLog;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 标协会员项目其他资料(tb_member_project_file)表控制层
|
||||
*
|
||||
* @author xxxxx
|
||||
*/
|
||||
@Slf4j
|
||||
@Api(tags = "标协会员项目其他资料")
|
||||
@RestController
|
||||
@RequestMapping("/member/tbMemberProjectFile")
|
||||
public class TbMemberProjectFileController extends JeroController<TbMemberProjectFile, TbMemberProjectFileService> {
|
||||
/**
|
||||
* 服务对象
|
||||
*/
|
||||
@Resource
|
||||
private TbMemberProjectFileService tbMemberProjectFileService;
|
||||
/**
|
||||
* 分页列表查询
|
||||
*/
|
||||
@ApiOperation(value = "标协会员项目其他资料-分页列表查询", notes = "标协会员项目其他资料-分页列表查询")
|
||||
@GetMapping(value = "/page")
|
||||
public Result<IPage<TbMemberProjectFile>> queryPageList(TbMemberProjectFile tbMemberProjectFile,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
Page<TbMemberProjectFile> page = new Page<>(pageNo, pageSize);
|
||||
IPage<TbMemberProjectFile> pageList = tbMemberProjectFileService.queryPageList(page, tbMemberProjectFile);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*/
|
||||
@ApiOperation(value = "标协会员项目其他资料-列表查询", notes = "标协会员项目其他资料-列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<List<TbMemberProjectFile>> queryList(TbMemberProjectFile tbMemberProjectFile,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<TbMemberProjectFile> queryWrapper = QueryGenerator.initQueryWrapper(tbMemberProjectFile, req.getParameterMap());
|
||||
List<TbMemberProjectFile> list = tbMemberProjectFileService.list(queryWrapper);
|
||||
return Result.OK(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*/
|
||||
@AutoLog(value = "标协会员项目其他资料-添加")
|
||||
@ApiOperation(value = "标协会员项目其他资料-添加", notes = "标协会员项目其他资料-添加")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@Validated @RequestBody TbMemberProjectFile tbMemberProjectFile) {
|
||||
tbMemberProjectFileService.add(tbMemberProjectFile);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*/
|
||||
@AutoLog(value = "标协会员项目其他资料-编辑")
|
||||
@ApiOperation(value = "标协会员项目其他资料-编辑", notes = "标协会员项目其他资料-编辑")
|
||||
@PostMapping(value = "/edit")
|
||||
public Result<String> edit(@Validated @RequestBody TbMemberProjectFile tbMemberProjectFile) {
|
||||
tbMemberProjectFileService.editById(tbMemberProjectFile);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*/
|
||||
@AutoLog(value = "标协会员项目其他资料-通过id删除")
|
||||
@ApiOperation(value = "标协会员项目其他资料-通过id删除", notes = "标协会员项目其他资料-通过id删除")
|
||||
@PostMapping(value = "/delete")
|
||||
public Result<?> delete(@RequestParam(name = "id") String id) {
|
||||
tbMemberProjectFileService.deleteById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*/
|
||||
@AutoLog(value = "标协会员项目其他资料-批量删除")
|
||||
@ApiOperation(value = "标协会员项目其他资料-批量删除", notes = "标协会员项目其他资料-批量删除")
|
||||
@PostMapping(value = "/deleteBatch")
|
||||
public Result<?> deleteBatch(@RequestParam(name="ids") String ids) {
|
||||
this.tbMemberProjectFileService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*/
|
||||
@AutoLog(value = "标协会员项目其他资料-通过id查询")
|
||||
@ApiOperation(value = "标协会员项目其他资料-通过id查询", notes = "标协会员项目其他资料-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<?> queryById(@RequestParam(name = "id") String id) {
|
||||
TbMemberProjectFile tbMemberProjectFile = tbMemberProjectFileService.queryById(id);
|
||||
if (tbMemberProjectFile == null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(tbMemberProjectFile);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*/
|
||||
@ApiOperation(value = "标协会员项目其他资料-导出excel")
|
||||
@GetMapping(value = "/exportXls")
|
||||
public void exportXls(HttpServletRequest request,HttpServletResponse response, TbMemberProjectFile tbMemberProjectFile) {
|
||||
tbMemberProjectFileService.exportXls(request,response,tbMemberProjectFile);
|
||||
}
|
||||
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package com.jero.member.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
|
||||
/**
|
||||
*
|
||||
*@author liJiaRao
|
||||
*@date 2024-02-29 14:33
|
||||
*/
|
||||
|
||||
/**
|
||||
* 标协会员项目其他资料
|
||||
*/
|
||||
@ApiModel(description = "标协会员项目其他资料")
|
||||
@Data
|
||||
@TableName(value = "tb_member_project_file")
|
||||
public class TbMemberProjectFile {
|
||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "")
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@TableField(value = "create_by")
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建日期
|
||||
*/
|
||||
@TableField(value = "create_time")
|
||||
@ApiModelProperty(value = "创建日期")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
@TableField(value = "update_by")
|
||||
@ApiModelProperty(value = "更新人")
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 更新日期
|
||||
*/
|
||||
@TableField(value = "update_time")
|
||||
@ApiModelProperty(value = "更新日期")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
@TableField(value = "project_id")
|
||||
@ApiModelProperty(value = "项目id")
|
||||
private String projectId;
|
||||
|
||||
/**
|
||||
* 文件id
|
||||
*/
|
||||
@TableField(value = "file_id")
|
||||
@ApiModelProperty(value = "文件id")
|
||||
private String fileId;
|
||||
|
||||
/**
|
||||
* 文件名称
|
||||
*/
|
||||
@Excel(name = "文件名称", width = 15)
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "文件名称")
|
||||
private String fileName;
|
||||
/**
|
||||
* 下载次数
|
||||
*/
|
||||
@Excel(name = "下载次数", width = 15)
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "下载次数")
|
||||
private Integer downloadCount;
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package com.jero.member.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.jero.member.entity.TbMemberProjectFile;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2024-02-29 14:23
|
||||
*/
|
||||
public interface TbMemberProjectFileMapper extends BaseMapper<TbMemberProjectFile> {
|
||||
IPage<TbMemberProjectFile> queryPageList(IPage<TbMemberProjectFile> page, @Param("tbMemberProjectFile") TbMemberProjectFile tbMemberProjectFile);
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.jero.member.mapper.TbMemberProjectFileMapper">
|
||||
<resultMap id="BaseResultMap" type="com.jero.member.entity.TbMemberProjectFile">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table tb_member_project_file-->
|
||||
<id column="id" jdbcType="VARCHAR" property="id"/>
|
||||
<result column="create_by" jdbcType="VARCHAR" property="createBy"/>
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
|
||||
<result column="update_by" jdbcType="VARCHAR" property="updateBy"/>
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
|
||||
<result column="project_id" jdbcType="VARCHAR" property="projectId"/>
|
||||
<result column="file_id" jdbcType="VARCHAR" property="fileId"/>
|
||||
<result column="downloadCount" property="downloadCount"/>
|
||||
<result column="fileName" property="fileName"/>
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time,
|
||||
project_id,
|
||||
file_id
|
||||
</sql>
|
||||
|
||||
<select id="queryPageList" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
pwgdf.id,
|
||||
pwgdf.project_id,
|
||||
pwgdf.file_id,
|
||||
su.realname as create_by,
|
||||
pwgdf.create_time,
|
||||
pwgdf.update_by,
|
||||
pwgdf.update_time,
|
||||
osf.file_name AS fileName,
|
||||
(SELECT count(*) FROM pay_file_download_record where file_id = pwgdf.file_id) AS downloadCount
|
||||
FROM pay_working_group_data_file pwgdf
|
||||
LEFT JOIN oss_file osf ON pwgdf.file_id = osf.id
|
||||
left join sys_user su on(pwgdf.create_by=su.username)
|
||||
where project_id = #{tbMemberProjectFile.projectId}
|
||||
<if test="tbMemberProjectFile.fileName != null and tbMemberProjectFile.fileName != ''">
|
||||
AND osf.file_name LIKE CONCAT('%',CONCAT(#{tbMemberProjectFile.fileName},'%'))
|
||||
</if>
|
||||
ORDER BY pwgdf.create_time desc
|
||||
</select>
|
||||
</mapper>
|
||||
+159
@@ -0,0 +1,159 @@
|
||||
package com.jero.member.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.util.oConvertUtils;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.member.mapper.TbMemberProjectFileMapper;
|
||||
import com.jero.member.entity.TbMemberProjectFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
*
|
||||
*@author liJiaRao
|
||||
*@date 2024-02-29 14:20
|
||||
*/
|
||||
@Service
|
||||
public class TbMemberProjectFileService extends ServiceImpl<TbMemberProjectFileMapper, TbMemberProjectFile> {
|
||||
|
||||
@Resource
|
||||
private IOSSFileService iossFileService;
|
||||
@Value("${jero.path.upload}")
|
||||
private String upLoadPath;
|
||||
@Resource
|
||||
private TbMemberProjectFileMapper tbMemberProjectFileMapper;
|
||||
|
||||
|
||||
public IPage<TbMemberProjectFile> queryPageList(Page<TbMemberProjectFile> page, TbMemberProjectFile tbMemberProjectFile) {
|
||||
return tbMemberProjectFileMapper.queryPageList(page,tbMemberProjectFile);
|
||||
}
|
||||
|
||||
public void add(TbMemberProjectFile tbMemberProjectFile) {
|
||||
this.save(tbMemberProjectFile);
|
||||
}
|
||||
|
||||
public void editById(TbMemberProjectFile tbMemberProjectFile) {
|
||||
this.updateById(tbMemberProjectFile);
|
||||
}
|
||||
|
||||
public void deleteById(String id) {
|
||||
this.removeById(id);
|
||||
}
|
||||
|
||||
public void deleteByIds(List<String> idList) {
|
||||
for (String id : idList) {
|
||||
deleteById(id);
|
||||
}
|
||||
}
|
||||
|
||||
public TbMemberProjectFile queryById(String id) {
|
||||
TbMemberProjectFile tbMemberProjectFile = this.getById(id);
|
||||
return tbMemberProjectFile;
|
||||
}
|
||||
|
||||
public void exportXls(HttpServletRequest request, HttpServletResponse response, TbMemberProjectFile tbMemberProjectFile) {
|
||||
// Step.2 获取导出数据
|
||||
Page<TbMemberProjectFile> page = new Page<>(-1, -1);
|
||||
IPage<TbMemberProjectFile> pageList = this.queryPageList(page, tbMemberProjectFile);
|
||||
List<TbMemberProjectFile> list = pageList.getRecords();
|
||||
List<TbMemberProjectFile> exportList = null;
|
||||
|
||||
// 过滤选中数据
|
||||
String selections = request.getParameter("selections");
|
||||
if (oConvertUtils.isNotEmpty(selections)) {
|
||||
List<String> selectionList = Arrays.asList(selections.split(","));
|
||||
exportList = list.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
|
||||
} else {
|
||||
exportList = list;
|
||||
}
|
||||
if(CollectionUtils.isEmpty(exportList)){
|
||||
throw new JeroBootException("请选中文件!");
|
||||
}
|
||||
List<String> files = exportList.stream().map(TbMemberProjectFile::getFileId).collect(Collectors.toList());
|
||||
LambdaQueryWrapper<OSSFile> queryOSSFile = new LambdaQueryWrapper<>();
|
||||
queryOSSFile.in(OSSFile::getId,files);
|
||||
List<OSSFile> listOSSFile = iossFileService.list(queryOSSFile);
|
||||
if(CollectionUtils.isEmpty(listOSSFile)){
|
||||
throw new JeroBootException("文件不存在!");
|
||||
}
|
||||
//循环将文件写入压缩流
|
||||
DataOutputStream os = null;
|
||||
//设置压缩流:直接写入response,实现边压缩边下载
|
||||
ZipOutputStream zipos = null;
|
||||
try {
|
||||
response.reset();
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("multipart/form-data");
|
||||
//设置压缩包的名字
|
||||
//解决不同浏览器压缩包名字含有中文时乱码的问题
|
||||
String downloadName = UUID.randomUUID().toString() +".zip";
|
||||
String agent = request.getHeader("USER-AGENT");
|
||||
try {
|
||||
//针对IE或者以IE为内核的浏览器:
|
||||
if (agent.contains("MSIE") || agent.contains("Trident")) {
|
||||
downloadName = java.net.URLEncoder.encode(downloadName, "UTF-8");
|
||||
} else {
|
||||
//非IE浏览器的处理:
|
||||
downloadName = new String(downloadName.getBytes("UTF-8"),"ISO-8859-1");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
response.setHeader("Content-Disposition", "attachment;fileName=\"" + downloadName + "\"");
|
||||
zipos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));
|
||||
zipos.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法
|
||||
for (OSSFile ossFile : listOSSFile) {
|
||||
File file = new File(upLoadPath + File.separator + ossFile.getUrl());
|
||||
if(file.exists()){
|
||||
try {
|
||||
//添加ZipEntry,并ZipEntry中写入文件流w
|
||||
//这里,防止要下载的文件有重名的导致下载失败
|
||||
zipos.putNextEntry(new ZipEntry(ossFile.getFileName()));
|
||||
os = new DataOutputStream(zipos);
|
||||
InputStream is = new FileInputStream(file);
|
||||
byte[] b = new byte[1024];
|
||||
int length = 0;
|
||||
while((length = is.read(b))!= -1){
|
||||
os.write(b, 0, length);
|
||||
}
|
||||
is.close();
|
||||
zipos.closeEntry();
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
assert os != null;
|
||||
os.flush();
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
try {
|
||||
if (os!= null){os.close();}
|
||||
if (zipos != null){zipos.close();}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user