add:社团管理,入团信息,会议信息,在研信息导出模板;
update:社团管理,入团信息,在研信息导入接口
This commit is contained in:
+5
-4
@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -180,12 +181,12 @@ public class LawsClubController extends JeroController<LawsClub, ILawsClubServic
|
|||||||
/**
|
/**
|
||||||
* 模板下载
|
* 模板下载
|
||||||
*/
|
*/
|
||||||
@AutoLog(value = "社团管理-导出征集调研意见")
|
@AutoLog(value = "社团管理-模板下载")
|
||||||
@ApiOperation(value="社团管理-导出征集调研意见", notes="社团管理-导出征集调研意见")
|
@ApiOperation(value="社团管理-模板下载", notes="社团管理-模板下载")
|
||||||
@GetMapping(value = "/exportTemplate")
|
@GetMapping(value = "/exportTemplate")
|
||||||
@RequiresPermissions("clubManagement:clubManagement:templateDownload")
|
@RequiresPermissions("clubManagement:clubManagement:templateDownload")
|
||||||
public ModelAndView exportTemplate(HttpServletRequest request) {
|
public void exportTemplate(HttpServletRequest request, HttpServletResponse response) {
|
||||||
return lawsClubService.exportTemplate(request);
|
lawsClubService.exportTemplate(request,response);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+53
@@ -0,0 +1,53 @@
|
|||||||
|
package com.jero.modules.laws.club.controller;
|
||||||
|
|
||||||
|
import com.jero.common.api.vo.Result;
|
||||||
|
import com.jero.common.aspect.annotation.AutoLog;
|
||||||
|
import com.jero.modules.laws.club.service.ILawsClubJoinTeamService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 社团管理-入团信息表 前端控制器
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author sz
|
||||||
|
* @since 2024-08-29
|
||||||
|
*/
|
||||||
|
@Api(tags="社团管理-入团信息表")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/club/joinTeam")
|
||||||
|
@Slf4j
|
||||||
|
public class LawsClubJoinTeamController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ILawsClubJoinTeamService lawsClubJoinTeamService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模板下载
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "社团管理-入团信息表-模板下载")
|
||||||
|
@ApiOperation(value="社团管理-入团信息表-模板下载", notes="社团管理-入团信息表-模板下载")
|
||||||
|
@GetMapping(value = "/exportTemplate")
|
||||||
|
// @RequiresPermissions("clubManagement:clubManagement:templateDownload")
|
||||||
|
public void exportTemplate(HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
lawsClubJoinTeamService.exportTemplate(request,response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "社团管理-入团信息表-导入")
|
||||||
|
@ApiOperation(value="社团管理-入团信息表-导入", notes="社团管理-入团信息表-导入")
|
||||||
|
@PostMapping(value = "/importExcel")
|
||||||
|
// @RequiresPermissions("clubManagement:clubManagement:import")
|
||||||
|
public Result<?> excelimport(HttpServletRequest request) {
|
||||||
|
return lawsClubJoinTeamService.importExcel(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+56
@@ -0,0 +1,56 @@
|
|||||||
|
package com.jero.modules.laws.club.controller;
|
||||||
|
|
||||||
|
import com.jero.common.api.vo.Result;
|
||||||
|
import com.jero.common.aspect.annotation.AutoLog;
|
||||||
|
import com.jero.modules.laws.club.service.ILawsClubMeetingService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 社团管理-参会信息表 前端控制器
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author sz
|
||||||
|
* @since 2024-08-29
|
||||||
|
*/
|
||||||
|
@Api(tags="社团管理-参会信息表")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/club/meeting")
|
||||||
|
@Slf4j
|
||||||
|
public class LawsClubMeetingController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ILawsClubMeetingService lawsClubMeetingService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模板下载
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "社团管理-参会信息表-模板下载")
|
||||||
|
@ApiOperation(value="社团管理-参会信息表-模板下载", notes="社团管理-参会信息表-模板下载")
|
||||||
|
@GetMapping(value = "/exportTemplate")
|
||||||
|
// @RequiresPermissions("clubManagement:clubManagement:templateDownload")
|
||||||
|
public void exportTemplate(HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
lawsClubMeetingService.exportTemplate(request,response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "社团管理-参会信息表-导入")
|
||||||
|
@ApiOperation(value="社团管理-参会信息表-导入", notes="社团管理-参会信息表-导入")
|
||||||
|
@PostMapping(value = "/importExcel")
|
||||||
|
// @RequiresPermissions("clubManagement:clubManagement:import")
|
||||||
|
public Result<?> excelimport(HttpServletRequest request) {
|
||||||
|
return lawsClubMeetingService.importExcel(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+56
@@ -0,0 +1,56 @@
|
|||||||
|
package com.jero.modules.laws.club.controller;
|
||||||
|
|
||||||
|
import com.jero.common.api.vo.Result;
|
||||||
|
import com.jero.common.aspect.annotation.AutoLog;
|
||||||
|
import com.jero.modules.laws.club.service.ILawsClubResearchInformationService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 社团管理-征集调研信息表 前端控制器
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author sz
|
||||||
|
* @since 2024-08-29
|
||||||
|
*/
|
||||||
|
@Api(tags="社团管理-征集调研信息表")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/club/researchInformation")
|
||||||
|
@Slf4j
|
||||||
|
public class LawsClubResearchInformationController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ILawsClubResearchInformationService lawsClubResearchInformationService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模板下载
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "社团管理-征集调研信息表-模板下载")
|
||||||
|
@ApiOperation(value="社团管理-征集调研信息表-模板下载", notes="社团管理-征集调研信息表-模板下载")
|
||||||
|
@GetMapping(value = "/exportTemplate")
|
||||||
|
// @RequiresPermissions("clubManagement:clubManagement:templateDownload")
|
||||||
|
public void exportTemplate(HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
lawsClubResearchInformationService.exportTemplate(request,response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "社团管理-征集调研信息表-导入")
|
||||||
|
@ApiOperation(value="社团管理-征集调研信息表-导入", notes="社团管理-征集调研信息表-导入")
|
||||||
|
@PostMapping(value = "/importExcel")
|
||||||
|
// @RequiresPermissions("clubManagement:clubManagement:import")
|
||||||
|
public Result<?> excelimport(HttpServletRequest request) {
|
||||||
|
return lawsClubResearchInformationService.importExcel(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.jero.modules.laws.club.enums;
|
||||||
|
|
||||||
|
|
||||||
|
public enum FieldTypeEnum {
|
||||||
|
|
||||||
|
TEXT_INPUT("文本输入","1","文本输入"),
|
||||||
|
DATE_INPUT("日期输入","2","日期输入"),
|
||||||
|
TEXT_INPUT_NAME("文本输入,姓名(工号)","3","文本输入,姓名(工号)")
|
||||||
|
;
|
||||||
|
|
||||||
|
final String name;
|
||||||
|
final String value;
|
||||||
|
final String description;
|
||||||
|
|
||||||
|
FieldTypeEnum(String name, String value, String description) {
|
||||||
|
this.name = name;
|
||||||
|
this.value = value;
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
}
|
||||||
+7
@@ -1,7 +1,10 @@
|
|||||||
package com.jero.modules.laws.club.service;
|
package com.jero.modules.laws.club.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.jero.common.api.vo.Result;
|
||||||
import com.jero.modules.laws.club.entity.LawsClubJoinTeam;
|
import com.jero.modules.laws.club.entity.LawsClubJoinTeam;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -12,4 +15,8 @@ import com.jero.modules.laws.club.entity.LawsClubJoinTeam;
|
|||||||
* @since 2024-08-29
|
* @since 2024-08-29
|
||||||
*/
|
*/
|
||||||
public interface ILawsClubJoinTeamService extends IService<LawsClubJoinTeam> {
|
public interface ILawsClubJoinTeamService extends IService<LawsClubJoinTeam> {
|
||||||
|
|
||||||
|
void exportTemplate(HttpServletRequest request, HttpServletResponse response);
|
||||||
|
|
||||||
|
Result<?> importExcel(HttpServletRequest request);
|
||||||
}
|
}
|
||||||
|
|||||||
+6
@@ -1,7 +1,10 @@
|
|||||||
package com.jero.modules.laws.club.service;
|
package com.jero.modules.laws.club.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.jero.common.api.vo.Result;
|
||||||
import com.jero.modules.laws.club.entity.LawsClubMeeting;
|
import com.jero.modules.laws.club.entity.LawsClubMeeting;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -13,4 +16,7 @@ import com.jero.modules.laws.club.entity.LawsClubMeeting;
|
|||||||
*/
|
*/
|
||||||
public interface ILawsClubMeetingService extends IService<LawsClubMeeting> {
|
public interface ILawsClubMeetingService extends IService<LawsClubMeeting> {
|
||||||
|
|
||||||
|
void exportTemplate(HttpServletRequest request, HttpServletResponse response);
|
||||||
|
|
||||||
|
Result<?> importExcel(HttpServletRequest request);
|
||||||
}
|
}
|
||||||
|
|||||||
+6
@@ -1,7 +1,10 @@
|
|||||||
package com.jero.modules.laws.club.service;
|
package com.jero.modules.laws.club.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.jero.common.api.vo.Result;
|
||||||
import com.jero.modules.laws.club.entity.LawsClubResearchInformation;
|
import com.jero.modules.laws.club.entity.LawsClubResearchInformation;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -13,4 +16,7 @@ import com.jero.modules.laws.club.entity.LawsClubResearchInformation;
|
|||||||
*/
|
*/
|
||||||
public interface ILawsClubResearchInformationService extends IService<LawsClubResearchInformation> {
|
public interface ILawsClubResearchInformationService extends IService<LawsClubResearchInformation> {
|
||||||
|
|
||||||
|
void exportTemplate(HttpServletRequest request, HttpServletResponse response);
|
||||||
|
|
||||||
|
Result<?> importExcel(HttpServletRequest request);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.jero.modules.laws.club.service;
|
package com.jero.modules.laws.club.service;
|
||||||
|
|
||||||
|
import cn.hutool.http.HttpResponse;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.jero.common.api.vo.Result;
|
import com.jero.common.api.vo.Result;
|
||||||
@@ -7,6 +8,7 @@ import com.jero.modules.laws.club.entity.LawsClub;
|
|||||||
import com.jero.modules.laws.club.vo.LawsClubTreeNodeModel;
|
import com.jero.modules.laws.club.vo.LawsClubTreeNodeModel;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,7 +37,7 @@ public interface ILawsClubService extends IService<LawsClub> {
|
|||||||
|
|
||||||
ModelAndView exportresearchXls(LawsClub lawsClub, HttpServletRequest request);
|
ModelAndView exportresearchXls(LawsClub lawsClub, HttpServletRequest request);
|
||||||
|
|
||||||
ModelAndView exportTemplate(HttpServletRequest request);
|
void exportTemplate(HttpServletRequest request, HttpServletResponse response);
|
||||||
|
|
||||||
Result<?> importExcel(HttpServletRequest request);
|
Result<?> importExcel(HttpServletRequest request);
|
||||||
|
|
||||||
|
|||||||
+173
-1
@@ -1,12 +1,44 @@
|
|||||||
package com.jero.modules.laws.club.service.impl;
|
package com.jero.modules.laws.club.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.jero.common.api.vo.Result;
|
||||||
|
import com.jero.common.exception.JeroBootException;
|
||||||
|
import com.jero.common.system.vo.DictModel;
|
||||||
import com.jero.modules.laws.club.entity.LawsClubJoinTeam;
|
import com.jero.modules.laws.club.entity.LawsClubJoinTeam;
|
||||||
import com.jero.modules.laws.club.mapper.LawsClubJoinTeamMapper;
|
import com.jero.modules.laws.club.mapper.LawsClubJoinTeamMapper;
|
||||||
import com.jero.modules.laws.club.service.ILawsClubJoinTeamService;
|
import com.jero.modules.laws.club.service.ILawsClubJoinTeamService;
|
||||||
|
import com.jero.modules.laws.club.utils.ExcelUtil;
|
||||||
|
import com.jero.modules.laws.club.vo.excel.LawsClubJoinTeamExcel;
|
||||||
|
import com.jero.modules.system.entity.SysDepart;
|
||||||
|
import com.jero.modules.system.entity.SysUser;
|
||||||
|
import com.jero.modules.system.service.ISysDepartService;
|
||||||
|
import com.jero.modules.system.service.ISysDictService;
|
||||||
|
import com.jero.modules.system.service.ISysUserService;
|
||||||
|
import com.jero.modules.tag.entity.LawsTag;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
|
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
||||||
|
import org.jeecgframework.poi.excel.entity.ImportParams;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -18,4 +50,144 @@ import javax.annotation.Resource;
|
|||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class LawsClubJoinTeamServiceImpl extends ServiceImpl<LawsClubJoinTeamMapper, LawsClubJoinTeam> implements ILawsClubJoinTeamService {
|
public class LawsClubJoinTeamServiceImpl extends ServiceImpl<LawsClubJoinTeamMapper, LawsClubJoinTeam> implements ILawsClubJoinTeamService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ISysUserService sysUserService;
|
||||||
|
@Resource
|
||||||
|
private ISysDepartService sysDepartService;
|
||||||
|
@Resource
|
||||||
|
private ISysDictService sysDictService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SneakyThrows
|
||||||
|
public void exportTemplate(HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
// 创建一个Excel工作簿
|
||||||
|
String describe = "填写说明:\n" +
|
||||||
|
"1.所有带星号的为必填\n" +
|
||||||
|
"2.导入数据从第四行开始,第一行为表头,第二行为填写说明,第三行为示例。第四行才是正式数据\n" +
|
||||||
|
"3.社团名称需要与系统中的社团名称匹配。";
|
||||||
|
String fieldTxts = "入团日期,社团职务担任者,入团经费,社团简介,部门名称,专业模块,申请人,秘书处,联系人,备注";
|
||||||
|
String mustInputFlags = "no,no,no,no,no,no,no,no,no,no";
|
||||||
|
String fieldTypeLists = "2,1,1,1,1,1,1,1,1,1"; // 1代表是文本输入类型 2代表日期输入
|
||||||
|
List<LawsTag> lawsTags = ExcelUtil.createLawsTags(fieldTxts, mustInputFlags, fieldTypeLists);
|
||||||
|
try (Workbook workbook = ExcelUtil.createWorkBookWithLawsTags(lawsTags, "入团信息", describe);
|
||||||
|
OutputStream out = response.getOutputStream()) {
|
||||||
|
// 设置HTTP响应头
|
||||||
|
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
||||||
|
response.setCharacterEncoding("UTF-8"); // 确保响应流使用UTF-8编码
|
||||||
|
// 处理文件名乱码问题
|
||||||
|
String encodedFileName = URLEncoder.encode("基本信息", StandardCharsets.UTF_8.name()).replace("+", "%20");
|
||||||
|
response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName + ".xls");
|
||||||
|
// 写入Excel并输出
|
||||||
|
workbook.write(out);
|
||||||
|
out.flush();
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error("导出Excel失败", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Result<?> importExcel(HttpServletRequest request) {
|
||||||
|
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
|
||||||
|
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
|
||||||
|
List<LawsClubJoinTeam> lawsClubJoinTeamList = new ArrayList<>();
|
||||||
|
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
|
||||||
|
MultipartFile file = entity.getValue();// 获取上传文件对象
|
||||||
|
try {
|
||||||
|
ImportParams params = new ImportParams();
|
||||||
|
params.setNeedSave(true);
|
||||||
|
List<LawsClubJoinTeamExcel> excelList = ExcelImportUtil.importExcel(file.getInputStream(), LawsClubJoinTeamExcel.class, params);
|
||||||
|
excelList = excelList.stream().skip(2).filter(item -> !Objects.isNull(item)).collect(Collectors.toList());
|
||||||
|
if (CollectionUtils.isEmpty(excelList)) {
|
||||||
|
throw new JeroBootException("没有数据可导入");
|
||||||
|
}
|
||||||
|
StringBuilder msg = validateExcelData(excelList); // 校验数据
|
||||||
|
if (StringUtils.isNotEmpty(msg.toString())) {
|
||||||
|
return Result.error(msg.toString());
|
||||||
|
}
|
||||||
|
// 保存数据
|
||||||
|
for (LawsClubJoinTeamExcel lawsClubJoinTeamExcel : excelList) {
|
||||||
|
LawsClubJoinTeam lawsClubJoinTeam = new LawsClubJoinTeam();
|
||||||
|
BeanUtils.copyProperties(lawsClubJoinTeamExcel, lawsClubJoinTeam);
|
||||||
|
lawsClubJoinTeamList.add(lawsClubJoinTeam);
|
||||||
|
}
|
||||||
|
}catch (Exception e) {
|
||||||
|
log.error(e.getMessage(),e);
|
||||||
|
return Result.error("文件导入失败:"+e.getMessage());
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
file.getInputStream().close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Result.OK(lawsClubJoinTeamList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验Excel数据
|
||||||
|
private StringBuilder validateExcelData(List<LawsClubJoinTeamExcel> excelList) {
|
||||||
|
StringBuilder msg = new StringBuilder();
|
||||||
|
// 拿到这个流程的名称
|
||||||
|
List<DictModel> specializedModuleList = sysDictService.getDictItems("professional_module");
|
||||||
|
Map<String, String> specializedModuleMap = specializedModuleList.stream().collect(Collectors.toMap(DictModel::getText, DictModel::getValue));
|
||||||
|
for (int i = 0; i < excelList.size(); i++) {
|
||||||
|
LawsClubJoinTeamExcel lawsClubJoinTeamExcel = excelList.get(i);
|
||||||
|
StringBuilder msgSub = new StringBuilder();
|
||||||
|
// 校验入团日期
|
||||||
|
if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getJoinDate())) {
|
||||||
|
try {
|
||||||
|
LocalDate.parse(lawsClubJoinTeamExcel.getJoinDate());
|
||||||
|
} catch (Exception e) {
|
||||||
|
msgSub.append(getErrorMsg(i, "入团日期格式不正确;"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 校验职务担任人
|
||||||
|
if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getLeadId())) {
|
||||||
|
List<SysUser> sysUser = sysUserService.list(new LambdaQueryWrapper<SysUser>().eq(SysUser::getRealname, lawsClubJoinTeamExcel.getLeadId()));
|
||||||
|
if (CollectionUtils.isEmpty(sysUser)) {
|
||||||
|
msgSub.append(getErrorMsg(i, "社团职务担任者不存在;"));
|
||||||
|
}else {
|
||||||
|
lawsClubJoinTeamExcel.setLeadId(sysUser.get(0).getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 校验部门名称
|
||||||
|
if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getDepartId())) {
|
||||||
|
List<SysDepart> sysDepart = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getDepartName, lawsClubJoinTeamExcel.getDepartId()));
|
||||||
|
if (CollectionUtils.isEmpty(sysDepart)) {
|
||||||
|
msgSub.append(getErrorMsg(i, "部门名称不存在;"));
|
||||||
|
}else {
|
||||||
|
lawsClubJoinTeamExcel.setDepartId(sysDepart.get(0).getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 校验专业模块
|
||||||
|
if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getSpecializedModule())) {
|
||||||
|
String specializedModule = specializedModuleMap.get(lawsClubJoinTeamExcel.getSpecializedModule());
|
||||||
|
if (StringUtils.isBlank(specializedModule)) {
|
||||||
|
msgSub.append(getErrorMsg(i, "专业模块不存在;"));
|
||||||
|
}else {
|
||||||
|
lawsClubJoinTeamExcel.setSpecializedModule(specializedModule);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 校验申请人
|
||||||
|
if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getProposerId())) {
|
||||||
|
List<SysUser> sysUser = sysUserService.list(new LambdaQueryWrapper<SysUser>().eq(SysUser::getRealname, lawsClubJoinTeamExcel.getProposerId()));
|
||||||
|
if (CollectionUtils.isEmpty(sysUser)) {
|
||||||
|
msgSub.append(getErrorMsg(i, "申请人不存在;"));
|
||||||
|
}else {
|
||||||
|
lawsClubJoinTeamExcel.setProposerId(sysUser.get(0).getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (msgSub.length() > 0) {
|
||||||
|
msg.append(msgSub).append("</br>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 错误消息格式化
|
||||||
|
private String getErrorMsg(int rowIndex, String errorMsg) {
|
||||||
|
return "第" + (rowIndex + 4) + "行" + errorMsg;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+46
@@ -1,10 +1,22 @@
|
|||||||
package com.jero.modules.laws.club.service.impl;
|
package com.jero.modules.laws.club.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.jero.common.api.vo.Result;
|
||||||
import com.jero.modules.laws.club.entity.LawsClubMeeting;
|
import com.jero.modules.laws.club.entity.LawsClubMeeting;
|
||||||
import com.jero.modules.laws.club.mapper.LawsClubMeetingMapper;
|
import com.jero.modules.laws.club.mapper.LawsClubMeetingMapper;
|
||||||
import com.jero.modules.laws.club.service.ILawsClubMeetingService;
|
import com.jero.modules.laws.club.service.ILawsClubMeetingService;
|
||||||
|
import com.jero.modules.laws.club.utils.ExcelUtil;
|
||||||
|
import com.jero.modules.tag.entity.LawsTag;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -17,4 +29,38 @@ import org.springframework.stereotype.Service;
|
|||||||
@Service
|
@Service
|
||||||
public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMapper, LawsClubMeeting> implements ILawsClubMeetingService {
|
public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMapper, LawsClubMeeting> implements ILawsClubMeetingService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SneakyThrows
|
||||||
|
public void exportTemplate(HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
// 创建一个Excel工作簿
|
||||||
|
String describe = "填写说明:\n" +
|
||||||
|
"1.所有带星号的为必填\n" +
|
||||||
|
"2.导入数据从第四行开始,第一行为表头,第二行为填写说明,第三行为示例。第四行才是正式数据\n" +
|
||||||
|
"3.一条参会信息中如有多个参会人,需要按照每个参会人一行数据进行展示,参会基本信息合并展示。\n" +
|
||||||
|
"4.社团名称需要与系统中的社团名称匹配。";
|
||||||
|
String fieldTxts = "会议名称,会议日期,会议费用,线上/线下地点,计划完成日期,通知人,通知部门,通知部门专业模块," +
|
||||||
|
"是否宣贯,会议组织人,会议内容,参会人员,参会部门,参会部门专业模块,参会报告,备注";
|
||||||
|
String mustInputFlags = "no,no,no,no,no,no,no,no,no,no,no,no,no,no,no,no";
|
||||||
|
String fieldTypeLists = "1,2,1,1,2,3,1,1,1,1,1,3,1,1,1,1"; // 1代表是文本输入类型 2代表日期输入 3代表 文本输入,姓名(工号)
|
||||||
|
List<LawsTag> lawsTags = ExcelUtil.createLawsTags(fieldTxts, mustInputFlags, fieldTypeLists);
|
||||||
|
try (Workbook workbook = ExcelUtil.createWorkBookWithLawsTags(lawsTags, "参会信息", describe);
|
||||||
|
OutputStream out = response.getOutputStream()) {
|
||||||
|
// 设置HTTP响应头
|
||||||
|
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
||||||
|
response.setCharacterEncoding("UTF-8"); // 确保响应流使用UTF-8编码
|
||||||
|
// 处理文件名乱码问题
|
||||||
|
String encodedFileName = URLEncoder.encode("基本信息", StandardCharsets.UTF_8.name()).replace("+", "%20");
|
||||||
|
response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName + ".xls");
|
||||||
|
// 写入Excel并输出
|
||||||
|
workbook.write(out);
|
||||||
|
out.flush();
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error("导出Excel失败", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Result<?> importExcel(HttpServletRequest request) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+214
@@ -1,10 +1,46 @@
|
|||||||
package com.jero.modules.laws.club.service.impl;
|
package com.jero.modules.laws.club.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.jero.common.api.vo.Result;
|
||||||
|
import com.jero.common.exception.JeroBootException;
|
||||||
|
import com.jero.common.system.vo.DictModel;
|
||||||
import com.jero.modules.laws.club.entity.LawsClubResearchInformation;
|
import com.jero.modules.laws.club.entity.LawsClubResearchInformation;
|
||||||
import com.jero.modules.laws.club.mapper.LawsClubResearchInformationMapper;
|
import com.jero.modules.laws.club.mapper.LawsClubResearchInformationMapper;
|
||||||
import com.jero.modules.laws.club.service.ILawsClubResearchInformationService;
|
import com.jero.modules.laws.club.service.ILawsClubResearchInformationService;
|
||||||
|
import com.jero.modules.laws.club.utils.ExcelUtil;
|
||||||
|
import com.jero.modules.laws.club.vo.excel.LawsClubResearchInformationExcel;
|
||||||
|
import com.jero.modules.system.entity.SysDepart;
|
||||||
|
import com.jero.modules.system.entity.SysUser;
|
||||||
|
import com.jero.modules.system.service.ISysDepartService;
|
||||||
|
import com.jero.modules.system.service.ISysDictService;
|
||||||
|
import com.jero.modules.system.service.ISysUserService;
|
||||||
|
import com.jero.modules.tag.entity.LawsTag;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
|
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
||||||
|
import org.jeecgframework.poi.excel.entity.ImportParams;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -17,4 +53,182 @@ import org.springframework.stereotype.Service;
|
|||||||
@Service
|
@Service
|
||||||
public class LawsClubResearchInformationServiceImpl extends ServiceImpl<LawsClubResearchInformationMapper, LawsClubResearchInformation> implements ILawsClubResearchInformationService {
|
public class LawsClubResearchInformationServiceImpl extends ServiceImpl<LawsClubResearchInformationMapper, LawsClubResearchInformation> implements ILawsClubResearchInformationService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ISysUserService sysUserService;
|
||||||
|
@Resource
|
||||||
|
private ISysDepartService sysDepartService;
|
||||||
|
@Resource
|
||||||
|
private ISysDictService sysDictService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SneakyThrows
|
||||||
|
public void exportTemplate(HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
// 创建一个Excel工作簿
|
||||||
|
String describe = "填写说明:\n" +
|
||||||
|
"1.所有带星号的为必填\n" +
|
||||||
|
"2.导入数据从第四行开始,第一行为表头,第二行为填写说明,第三行为示例。第四行才是正式数据\n" +
|
||||||
|
"3.社团名称需要与系统中的社团名称匹配。";
|
||||||
|
String fieldTxts = "名称,内容,接收日期,截止日期,专业接口人,专业模块,反馈人,反馈部门,反馈部门专业模块,反馈情况,任务来源,盖章流程完成情况,所属社团";
|
||||||
|
String mustInputFlags = "no,no,no,no,no,no,no,no,no,no,no,no,no";
|
||||||
|
String fieldTypeLists = "1,1,2,2,3,1,3,1,1,1,1,1,1"; // 1代表是文本输入类型 2代表日期输入 3代表 文本输入,姓名(工号)
|
||||||
|
List<LawsTag> lawsTags = ExcelUtil.createLawsTags(fieldTxts, mustInputFlags, fieldTypeLists);
|
||||||
|
try (Workbook workbook = ExcelUtil.createWorkBookWithLawsTags(lawsTags, "征集调研信息", describe);
|
||||||
|
OutputStream out = response.getOutputStream()) {
|
||||||
|
// 设置HTTP响应头
|
||||||
|
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
||||||
|
response.setCharacterEncoding("UTF-8"); // 确保响应流使用UTF-8编码
|
||||||
|
// 处理文件名乱码问题
|
||||||
|
String encodedFileName = URLEncoder.encode("征集调研信息", StandardCharsets.UTF_8.name()).replace("+", "%20");
|
||||||
|
response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName + ".xls");
|
||||||
|
// 写入Excel并输出
|
||||||
|
workbook.write(out);
|
||||||
|
out.flush();
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error("导出Excel失败", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Result<?> importExcel(HttpServletRequest request) {
|
||||||
|
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
|
||||||
|
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
|
||||||
|
List<LawsClubResearchInformation> lawsClubResearchInformationList = new ArrayList<>();
|
||||||
|
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
|
||||||
|
MultipartFile file = entity.getValue();// 获取上传文件对象
|
||||||
|
try {
|
||||||
|
ImportParams params = new ImportParams();
|
||||||
|
params.setNeedSave(true);
|
||||||
|
List<LawsClubResearchInformationExcel> excelList = ExcelImportUtil.importExcel(file.getInputStream(), LawsClubResearchInformationExcel.class, params);
|
||||||
|
excelList = excelList.stream().skip(2).filter(item -> !Objects.isNull(item)).collect(Collectors.toList());
|
||||||
|
if (CollectionUtils.isEmpty(excelList)) {
|
||||||
|
throw new JeroBootException("没有数据可导入");
|
||||||
|
}
|
||||||
|
StringBuilder msg = validateExcelData(excelList); // 校验数据
|
||||||
|
if (StringUtils.isNotEmpty(msg.toString())) {
|
||||||
|
return Result.error(msg.toString());
|
||||||
|
}
|
||||||
|
// 保存数据
|
||||||
|
for (LawsClubResearchInformationExcel lawsClubResearchInformationExcel : excelList) {
|
||||||
|
LawsClubResearchInformation lawsClubResearchInformation = new LawsClubResearchInformation();
|
||||||
|
BeanUtils.copyProperties(lawsClubResearchInformationExcel, lawsClubResearchInformation);
|
||||||
|
lawsClubResearchInformationList.add(lawsClubResearchInformation);
|
||||||
|
}
|
||||||
|
}catch (Exception e) {
|
||||||
|
log.error(e.getMessage(),e);
|
||||||
|
return Result.error("文件导入失败:"+e.getMessage());
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
file.getInputStream().close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Result.OK(lawsClubResearchInformationList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验Excel数据
|
||||||
|
private StringBuilder validateExcelData(List<LawsClubResearchInformationExcel> excelList) {
|
||||||
|
StringBuilder msg = new StringBuilder();
|
||||||
|
// 拿到这个流程的名称
|
||||||
|
List<DictModel> specializedModuleList = sysDictService.getDictItems("professional_module");
|
||||||
|
List<DictModel> clubTaskSourceList = sysDictService.getDictItems("club_task_source");
|
||||||
|
Map<String, String> specializedModuleMap = specializedModuleList.stream().collect(Collectors.toMap(DictModel::getText, DictModel::getValue));
|
||||||
|
Map<String, String> clubTaskSourceMap = clubTaskSourceList.stream().collect(Collectors.toMap(DictModel::getText, DictModel::getValue));
|
||||||
|
for (int i = 0; i < excelList.size(); i++) {
|
||||||
|
LawsClubResearchInformationExcel lawsClubResearchInformationExcel = excelList.get(i);
|
||||||
|
StringBuilder msgSub = new StringBuilder();
|
||||||
|
// 校验接收日期
|
||||||
|
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getReceiveDate())) {
|
||||||
|
try {
|
||||||
|
LocalDate.parse(lawsClubResearchInformationExcel.getReceiveDate());
|
||||||
|
} catch (Exception e) {
|
||||||
|
msgSub.append(getErrorMsg(i, "接收日期格式不正确;"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 校验截止日期
|
||||||
|
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getDeadlineDate())) {
|
||||||
|
try {
|
||||||
|
LocalDate.parse(lawsClubResearchInformationExcel.getDeadlineDate());
|
||||||
|
} catch (Exception e) {
|
||||||
|
msgSub.append(getErrorMsg(i, "截止日期格式不正确;"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 校验专业接口人
|
||||||
|
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getSpecializedInterfacePerson())) {
|
||||||
|
String specializedInterfacePerson = extractEmployeeId(lawsClubResearchInformationExcel.getSpecializedInterfacePerson());
|
||||||
|
SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, specializedInterfacePerson),false);
|
||||||
|
if (Objects.isNull(sysUser)) {
|
||||||
|
msgSub.append(getErrorMsg(i, "专业接口人不存在;"));
|
||||||
|
}else {
|
||||||
|
lawsClubResearchInformationExcel.setSpecializedInterfacePerson(sysUser.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 校验专业模块
|
||||||
|
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getSpecializedModule())) {
|
||||||
|
String specializedModule = specializedModuleMap.get(lawsClubResearchInformationExcel.getSpecializedModule());
|
||||||
|
if (StringUtils.isBlank(specializedModule)) {
|
||||||
|
msgSub.append(getErrorMsg(i, "专业模块不存在;"));
|
||||||
|
}else {
|
||||||
|
lawsClubResearchInformationExcel.setSpecializedModule(specializedModule);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 校验反馈人
|
||||||
|
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getFeedbackPerson())) {
|
||||||
|
String feedbackPerson = extractEmployeeId(lawsClubResearchInformationExcel.getFeedbackPerson());
|
||||||
|
SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, feedbackPerson),false);
|
||||||
|
if (Objects.isNull(sysUser)) {
|
||||||
|
msgSub.append(getErrorMsg(i, "反馈人不存在;"));
|
||||||
|
}else {
|
||||||
|
lawsClubResearchInformationExcel.setFeedbackPerson(sysUser.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 校验反馈部门
|
||||||
|
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getFeedbackDepart())) {
|
||||||
|
List<SysDepart> sysDepart = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getDepartName, lawsClubResearchInformationExcel.getFeedbackDepart()));
|
||||||
|
if (CollectionUtils.isEmpty(sysDepart)) {
|
||||||
|
msgSub.append(getErrorMsg(i, "反馈部门不存在;"));
|
||||||
|
}else {
|
||||||
|
lawsClubResearchInformationExcel.setFeedbackDepart(sysDepart.get(0).getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 校验反馈部门专业模块
|
||||||
|
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getFeedbackSpecializedModule())) {
|
||||||
|
String feedbackSpecializedModule = specializedModuleMap.get(lawsClubResearchInformationExcel.getFeedbackSpecializedModule());
|
||||||
|
if (StringUtils.isBlank(feedbackSpecializedModule)) {
|
||||||
|
msgSub.append(getErrorMsg(i, "反馈部门专业模块不存在;"));
|
||||||
|
}else {
|
||||||
|
lawsClubResearchInformationExcel.setFeedbackSpecializedModule(feedbackSpecializedModule);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 校验任务来源
|
||||||
|
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getTaskSource())) {
|
||||||
|
String taskSource = clubTaskSourceMap.get(lawsClubResearchInformationExcel.getTaskSource());
|
||||||
|
if (StringUtils.isBlank(taskSource)) {
|
||||||
|
msgSub.append(getErrorMsg(i, "任务来源不存在;"));
|
||||||
|
}else {
|
||||||
|
lawsClubResearchInformationExcel.setTaskSource(taskSource);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (msgSub.length() > 0) {
|
||||||
|
msg.append(msgSub).append("</br>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 错误消息格式化
|
||||||
|
private String getErrorMsg(int rowIndex, String errorMsg) {
|
||||||
|
return "第" + (rowIndex + 4) + "行" + errorMsg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String extractEmployeeId(String input) {
|
||||||
|
// 正则表达式,匹配括号内的内容
|
||||||
|
Pattern pattern = Pattern.compile("\\((.*?)\\)");
|
||||||
|
Matcher matcher = pattern.matcher(input);
|
||||||
|
if (matcher.find()) {
|
||||||
|
return matcher.group(1); // 返回匹配到的内容,即括号中的内容
|
||||||
|
}
|
||||||
|
return input; // 如果没有匹配到,返回null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+78
-200
@@ -13,13 +13,16 @@ import com.jero.modules.laws.club.config.CustomExcelExportStyler;
|
|||||||
import com.jero.modules.laws.club.entity.*;
|
import com.jero.modules.laws.club.entity.*;
|
||||||
import com.jero.modules.laws.club.mapper.LawsClubMapper;
|
import com.jero.modules.laws.club.mapper.LawsClubMapper;
|
||||||
import com.jero.modules.laws.club.service.*;
|
import com.jero.modules.laws.club.service.*;
|
||||||
|
import com.jero.modules.laws.club.utils.ExcelUtil;
|
||||||
import com.jero.modules.laws.club.vo.LawsClubTreeNodeModel;
|
import com.jero.modules.laws.club.vo.LawsClubTreeNodeModel;
|
||||||
import com.jero.modules.laws.club.vo.excel.*;
|
import com.jero.modules.laws.club.vo.excel.*;
|
||||||
import com.jero.modules.system.entity.SysDepart;
|
|
||||||
import com.jero.modules.system.entity.SysUser;
|
|
||||||
import com.jero.modules.system.service.ISysDepartService;
|
import com.jero.modules.system.service.ISysDepartService;
|
||||||
import com.jero.modules.system.service.ISysUserService;
|
import com.jero.modules.system.service.ISysUserService;
|
||||||
|
import com.jero.modules.tag.entity.LawsTag;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.apache.poi.ss.usermodel.*;
|
||||||
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
||||||
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
|
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
|
||||||
import org.jeecgframework.poi.excel.entity.ExportParams;
|
import org.jeecgframework.poi.excel.entity.ExportParams;
|
||||||
@@ -27,6 +30,7 @@ import org.jeecgframework.poi.excel.entity.ImportParams;
|
|||||||
import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
|
import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
|
||||||
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
|
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
@@ -35,9 +39,10 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
|
|||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.io.IOException;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.text.SimpleDateFormat;
|
import java.io.*;
|
||||||
import java.time.LocalDate;
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -52,6 +57,7 @@ import java.util.stream.Collectors;
|
|||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Transactional(rollbackFor = JeroBootException.class)
|
@Transactional(rollbackFor = JeroBootException.class)
|
||||||
|
@Slf4j
|
||||||
public class LawsClubServiceImpl extends ServiceImpl<LawsClubMapper, LawsClub> implements ILawsClubService {
|
public class LawsClubServiceImpl extends ServiceImpl<LawsClubMapper, LawsClub> implements ILawsClubService {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
@@ -72,6 +78,8 @@ public class LawsClubServiceImpl extends ServiceImpl<LawsClubMapper, LawsClub> i
|
|||||||
private ISysUserService sysUserService;
|
private ISysUserService sysUserService;
|
||||||
@Resource
|
@Resource
|
||||||
private ISysDepartService sysDepartService;
|
private ISysDepartService sysDepartService;
|
||||||
|
@Value("${jero.path.exportExcelTempPath}")
|
||||||
|
private String exportExcelTempPath;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<LawsClubTreeNodeModel> getTreeStructure(String parentId, String nodeType) {
|
public List<LawsClubTreeNodeModel> getTreeStructure(String parentId, String nodeType) {
|
||||||
@@ -522,8 +530,7 @@ public class LawsClubServiceImpl extends ServiceImpl<LawsClubMapper, LawsClub> i
|
|||||||
//导出文件名称
|
//导出文件名称
|
||||||
mv.addObject(JeroController.FILE_NAME, "入团信息统计表");
|
mv.addObject(JeroController.FILE_NAME, "入团信息统计表");
|
||||||
mv.addObject(JeroController.CLASS, LawsClubJoinTeam.class);
|
mv.addObject(JeroController.CLASS, LawsClubJoinTeam.class);
|
||||||
ExportParams exportParams = new ExportParams(null, "入团信息");
|
mv.addObject(JeroController.PARAMS, createExportParams("密级:核心商密□普通商密□内部资料■外部公开□", "入团信息"));
|
||||||
mv.addObject(JeroController.PARAMS, exportParams);
|
|
||||||
mv.addObject(NormalExcelConstants.DATA_LIST, excelList);
|
mv.addObject(NormalExcelConstants.DATA_LIST, excelList);
|
||||||
return mv;
|
return mv;
|
||||||
}
|
}
|
||||||
@@ -551,8 +558,7 @@ public class LawsClubServiceImpl extends ServiceImpl<LawsClubMapper, LawsClub> i
|
|||||||
//导出文件名称
|
//导出文件名称
|
||||||
mv.addObject(JeroController.FILE_NAME, "参会记录表");
|
mv.addObject(JeroController.FILE_NAME, "参会记录表");
|
||||||
mv.addObject(JeroController.CLASS, LawsClubMeeting.class);
|
mv.addObject(JeroController.CLASS, LawsClubMeeting.class);
|
||||||
ExportParams exportParams = new ExportParams(null, "参会信息");
|
mv.addObject(JeroController.PARAMS, createExportParams("密级:核心商密□普通商密□内部资料■外部公开□", "参会信息"));
|
||||||
mv.addObject(JeroController.PARAMS, exportParams);
|
|
||||||
mv.addObject(NormalExcelConstants.DATA_LIST, excelList);
|
mv.addObject(NormalExcelConstants.DATA_LIST, excelList);
|
||||||
return mv;
|
return mv;
|
||||||
}
|
}
|
||||||
@@ -574,25 +580,38 @@ public class LawsClubServiceImpl extends ServiceImpl<LawsClubMapper, LawsClub> i
|
|||||||
excelList = lawsClubResearchInformationService.list(new LambdaQueryWrapper<LawsClubResearchInformation>().in(LawsClubResearchInformation::getClubId, ids));
|
excelList = lawsClubResearchInformationService.list(new LambdaQueryWrapper<LawsClubResearchInformation>().in(LawsClubResearchInformation::getClubId, ids));
|
||||||
}
|
}
|
||||||
//导出文件名称
|
//导出文件名称
|
||||||
mv.addObject(JeroController.FILE_NAME, "征集调研信记录表");
|
mv.addObject(JeroController.FILE_NAME, "征集调研信统计表");
|
||||||
mv.addObject(JeroController.CLASS, LawsClubResearchInformation.class);
|
mv.addObject(JeroController.CLASS, LawsClubResearchInformation.class);
|
||||||
ExportParams exportParams = new ExportParams(null, "征集调研信息");
|
mv.addObject(JeroController.PARAMS, createExportParams("密级:核心商密□普通商密□内部资料■外部公开□", "征集调研信息"));
|
||||||
mv.addObject(JeroController.PARAMS, exportParams);
|
|
||||||
mv.addObject(NormalExcelConstants.DATA_LIST, excelList);
|
mv.addObject(NormalExcelConstants.DATA_LIST, excelList);
|
||||||
return mv;
|
return mv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ModelAndView exportTemplate(HttpServletRequest request) {
|
@SneakyThrows
|
||||||
List<LawsClubExcel> excelList = new ArrayList<>();
|
public void exportTemplate(HttpServletRequest request, HttpServletResponse response) {
|
||||||
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
|
// 创建一个Excel工作簿
|
||||||
mv.addObject(JeroController.FILE_NAME, "社团管理");
|
String describe = "填写说明:\n" +
|
||||||
mv.addObject(JeroController.CLASS, LawsClubExcel.class);
|
"1.所有带星号的为必填\n" +
|
||||||
ExportParams exportParams = new ExportParams("社团管理", "社团管理");
|
"2.导入数据从第四行开始,第一行为表头,第二行为填写说明,第三行为示例。第四行才是正式数据";
|
||||||
mv.addObject(JeroController.PARAMS, exportParams);
|
String fieldTxts = "上级节点,节点类型,社团名称,社团地址,社团联系人,联系电话,编号";
|
||||||
mv.addObject(NormalExcelConstants.DATA_LIST, excelList);
|
String mustInputFlags = "yes,yes,yes,no,no,no,no";
|
||||||
return mv;
|
String fieldTypeLists = "1,1,1,1,1,1,1"; // 1 代表是文本输入类型
|
||||||
|
List<LawsTag> lawsTags = ExcelUtil.createLawsTags(fieldTxts, mustInputFlags, fieldTypeLists);
|
||||||
|
try (Workbook workbook = ExcelUtil.createWorkBookWithLawsTags(lawsTags, "基础信息", describe);
|
||||||
|
OutputStream out = response.getOutputStream()) {
|
||||||
|
// 设置HTTP响应头
|
||||||
|
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
||||||
|
response.setCharacterEncoding("UTF-8"); // 确保响应流使用UTF-8编码
|
||||||
|
// 处理文件名乱码问题
|
||||||
|
String encodedFileName = URLEncoder.encode("基础信息", StandardCharsets.UTF_8.name()).replace("+", "%20");
|
||||||
|
response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName + ".xls");
|
||||||
|
// 写入Excel并输出
|
||||||
|
workbook.write(out);
|
||||||
|
out.flush();
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error("导出Excel失败", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -601,12 +620,11 @@ public class LawsClubServiceImpl extends ServiceImpl<LawsClubMapper, LawsClub> i
|
|||||||
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
|
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
|
||||||
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
|
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
|
||||||
MultipartFile file = entity.getValue();// 获取上传文件对象
|
MultipartFile file = entity.getValue();// 获取上传文件对象
|
||||||
ImportParams params = new ImportParams();
|
|
||||||
params.setTitleRows(1);
|
|
||||||
params.setHeadRows(1);
|
|
||||||
params.setNeedSave(true);
|
|
||||||
try {
|
try {
|
||||||
|
ImportParams params = new ImportParams();
|
||||||
|
params.setNeedSave(true);
|
||||||
List<LawsClubExcel> excelList = ExcelImportUtil.importExcel(file.getInputStream(), LawsClubExcel.class, params);
|
List<LawsClubExcel> excelList = ExcelImportUtil.importExcel(file.getInputStream(), LawsClubExcel.class, params);
|
||||||
|
excelList = excelList.stream().skip(2).filter(item -> !Objects.isNull(item)).collect(Collectors.toList());
|
||||||
if (CollectionUtils.isEmpty(excelList)) {
|
if (CollectionUtils.isEmpty(excelList)) {
|
||||||
throw new JeroBootException("没有数据可导入");
|
throw new JeroBootException("没有数据可导入");
|
||||||
}
|
}
|
||||||
@@ -614,7 +632,12 @@ public class LawsClubServiceImpl extends ServiceImpl<LawsClubMapper, LawsClub> i
|
|||||||
if (StringUtils.isNotEmpty(msg.toString())) {
|
if (StringUtils.isNotEmpty(msg.toString())) {
|
||||||
return Result.error(msg.toString());
|
return Result.error(msg.toString());
|
||||||
}
|
}
|
||||||
saveExcelData(excelList); // 保存数据
|
// 保存数据
|
||||||
|
for (LawsClubExcel lawsClubExcel : excelList) {
|
||||||
|
LawsClub lawsClub = new LawsClub();
|
||||||
|
BeanUtils.copyProperties(lawsClubExcel, lawsClub);
|
||||||
|
save(lawsClub);
|
||||||
|
}
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
log.error(e.getMessage(),e);
|
log.error(e.getMessage(),e);
|
||||||
return Result.error("文件导入失败:"+e.getMessage());
|
return Result.error("文件导入失败:"+e.getMessage());
|
||||||
@@ -632,20 +655,34 @@ public class LawsClubServiceImpl extends ServiceImpl<LawsClubMapper, LawsClub> i
|
|||||||
// 校验Excel数据
|
// 校验Excel数据
|
||||||
private StringBuilder validateExcelData(List<LawsClubExcel> excelList) {
|
private StringBuilder validateExcelData(List<LawsClubExcel> excelList) {
|
||||||
StringBuilder msg = new StringBuilder();
|
StringBuilder msg = new StringBuilder();
|
||||||
for (LawsClubExcel lawsClubExcel : excelList) {
|
for (int i = 0; i < excelList.size(); i++) {
|
||||||
|
LawsClubExcel lawsClubExcel = excelList.get(i);
|
||||||
StringBuilder msgSub = new StringBuilder();
|
StringBuilder msgSub = new StringBuilder();
|
||||||
// 校验上级节点
|
// 校验上级节点
|
||||||
validateParentNode(lawsClubExcel, msgSub, excelList);
|
String parentId = lawsClubExcel.getParentId();
|
||||||
// 校验基本信息
|
if (StringUtils.isBlank(parentId)) {
|
||||||
validateBasicInfo(lawsClubExcel, msgSub, excelList);
|
msgSub.append(getErrorMsg(i, "上级节点不能为空;"));
|
||||||
// 校验入团信息
|
} else {
|
||||||
validateTeamInfo(lawsClubExcel.getLawsClubJoinTeamList(), msgSub, lawsClubExcel, excelList);
|
LawsClub club = getOne(new LambdaQueryWrapper<LawsClub>().eq(LawsClub::getNodeType, parentId));
|
||||||
// 校验参会信息
|
if (club == null) {
|
||||||
validateMeetingInfo(lawsClubExcel.getLawsClubMeetings(), msgSub, lawsClubExcel, excelList);
|
msgSub.append(getErrorMsg(i, "上级节点不存在,请重新输入;"));
|
||||||
// 校验调研征集信息
|
} else {
|
||||||
validateResearchInfo(lawsClubExcel.getLawsClubResearchInformations(), msgSub, lawsClubExcel, excelList);
|
lawsClubExcel.setParentId(club.getId());
|
||||||
// 校验支付信息
|
}
|
||||||
validatePaymentInfo(lawsClubExcel.getLawsClubPayment(), msgSub, lawsClubExcel, excelList);
|
}
|
||||||
|
// 校验节点类型
|
||||||
|
if (StringUtils.isBlank(lawsClubExcel.getNodeType())) {
|
||||||
|
msgSub.append(getErrorMsg(i, "节点类型不能为空;"));
|
||||||
|
}
|
||||||
|
if (StringUtils.isBlank(lawsClubExcel.getClubName())) {
|
||||||
|
msgSub.append(getErrorMsg(i, "社团名称不能为空;"));
|
||||||
|
}
|
||||||
|
String contactNumber = lawsClubExcel.getContactNumber();
|
||||||
|
if (StringUtils.isNotBlank(contactNumber) && !contactNumber.matches("^(?:(0\\d{2,3}-)?\\d{7,8}|1[3-9]\\d{9})$")) {
|
||||||
|
msgSub.append(getErrorMsg(i, "联系方式格式不正确;"));
|
||||||
|
} else {
|
||||||
|
lawsClubExcel.setContactNumber(PasswordUtil.encrypt(contactNumber));
|
||||||
|
}
|
||||||
if (msgSub.length() > 0) {
|
if (msgSub.length() > 0) {
|
||||||
msg.append(msgSub).append("</br>");
|
msg.append(msgSub).append("</br>");
|
||||||
}
|
}
|
||||||
@@ -653,168 +690,9 @@ public class LawsClubServiceImpl extends ServiceImpl<LawsClubMapper, LawsClub> i
|
|||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateParentNode(LawsClubExcel lawsClubExcel, StringBuilder msgSub, List<LawsClubExcel> excelList) {
|
|
||||||
String parentId = lawsClubExcel.getParentId();
|
|
||||||
if (StringUtils.isBlank(parentId)) {
|
|
||||||
msgSub.append(getErrorMsg(excelList, lawsClubExcel, "上级节点不能为空;"));
|
|
||||||
} else {
|
|
||||||
LawsClub club = getOne(new LambdaQueryWrapper<LawsClub>().eq(LawsClub::getNodeType, parentId));
|
|
||||||
if (club == null) {
|
|
||||||
msgSub.append(getErrorMsg(excelList, lawsClubExcel, "上级节点不存在,请重新输入;"));
|
|
||||||
} else {
|
|
||||||
lawsClubExcel.setParentId(club.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void validateBasicInfo(LawsClubExcel lawsClubExcel, StringBuilder msgSub, List<LawsClubExcel> excelList) {
|
|
||||||
if (StringUtils.isBlank(lawsClubExcel.getNodeType())) {
|
|
||||||
msgSub.append(getErrorMsg(excelList, lawsClubExcel, "节点类型不能为空;"));
|
|
||||||
}
|
|
||||||
if (hasAdditionalInfo(lawsClubExcel) && StringUtils.isBlank(lawsClubExcel.getClubName())) {
|
|
||||||
msgSub.append(getErrorMsg(excelList, lawsClubExcel, "社团名称不能为空;"));
|
|
||||||
}
|
|
||||||
String contactNumber = lawsClubExcel.getContactNumber();
|
|
||||||
if (StringUtils.isNotBlank(contactNumber) && !contactNumber.matches("^(?:(0\\d{2,3}-)?\\d{7,8}|1[3-9]\\d{9})$")) {
|
|
||||||
msgSub.append(getErrorMsg(excelList, lawsClubExcel, "联系方式格式不正确;"));
|
|
||||||
} else {
|
|
||||||
lawsClubExcel.setContactNumber(PasswordUtil.encrypt(contactNumber));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void validateTeamInfo(List<LawsClubJoinTeamExcel> teamList, StringBuilder msgSub, LawsClubExcel lawsClubExcel, List<LawsClubExcel> excelList) {
|
|
||||||
if (CollectionUtils.isEmpty(teamList)) return;
|
|
||||||
for (LawsClubJoinTeamExcel team : teamList) {
|
|
||||||
String proposerId = team.getProposerId();
|
|
||||||
String departId = team.getDepartId();
|
|
||||||
if (StringUtils.isNotBlank(proposerId)) {
|
|
||||||
List<SysUser> sysUser = sysUserService.list(new LambdaQueryWrapper<SysUser>().eq(SysUser::getRealname, proposerId));
|
|
||||||
if (CollectionUtils.isEmpty(sysUser)) {
|
|
||||||
msgSub.append(getErrorMsg(excelList, lawsClubExcel, "入团信息的申请人不存在;"));
|
|
||||||
}else {
|
|
||||||
team.setProposerId(sysUser.get(0).getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (StringUtils.isNotBlank(departId)) {
|
|
||||||
List<SysDepart> sysDepart = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getDepartName, departId));
|
|
||||||
if (CollectionUtils.isEmpty(sysDepart)) {
|
|
||||||
msgSub.append(getErrorMsg(excelList, lawsClubExcel, "入团信息的部门名称不存在;"));
|
|
||||||
}else {
|
|
||||||
team.setDepartId(sysDepart.get(0).getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
validateDateFormat(team.getJoinDate(), "入团信息的入团日期格式不正确;", msgSub, excelList, lawsClubExcel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void validateMeetingInfo(List<LawsClubMeetingImportExcel> meetings, StringBuilder msgSub, LawsClubExcel lawsClubExcel, List<LawsClubExcel> excelList) {
|
|
||||||
if (CollectionUtils.isEmpty(meetings)) return;
|
|
||||||
|
|
||||||
for (LawsClubMeetingImportExcel meeting : meetings) {
|
|
||||||
validateDateFormat(meeting.getMeetingDate(), "参会信息的会议日期格式不正确;", msgSub, excelList, lawsClubExcel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void validateResearchInfo(List<LawsClubResearchInformationExcel> researchList, StringBuilder msgSub, LawsClubExcel lawsClubExcel, List<LawsClubExcel> excelList) {
|
|
||||||
if (CollectionUtils.isEmpty(researchList)) return;
|
|
||||||
|
|
||||||
for (LawsClubResearchInformationExcel research : researchList) {
|
|
||||||
validateDateFormat(research.getReceiveDate(), "征集调研信息的接收日期格式不正确;", msgSub, excelList, lawsClubExcel);
|
|
||||||
validateDateFormat(research.getDeadlineDate(), "征集调研信息的截止日期格式不正确;", msgSub, excelList, lawsClubExcel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void validatePaymentInfo(List<LawsClubPaymentExcel> payments, StringBuilder msgSub, LawsClubExcel lawsClubExcel, List<LawsClubExcel> excelList) {
|
|
||||||
if (CollectionUtils.isEmpty(payments)) return;
|
|
||||||
for (LawsClubPaymentExcel payment : payments) {
|
|
||||||
validateDateFormat(payment.getPaymentTime(), "支付信息的缴费时间格式不正确;", msgSub, excelList, lawsClubExcel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void validateDateFormat(String dateStr, String errorMsg, StringBuilder msgSub, List<LawsClubExcel> excelList, LawsClubExcel lawsClubExcel) {
|
|
||||||
if (StringUtils.isNotBlank(dateStr)) {
|
|
||||||
try {
|
|
||||||
LocalDate.parse(dateStr);
|
|
||||||
} catch (Exception e) {
|
|
||||||
msgSub.append(getErrorMsg(excelList, lawsClubExcel, errorMsg));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 保存Excel数据
|
|
||||||
private void saveExcelData(List<LawsClubExcel> excelList) {
|
|
||||||
for (LawsClubExcel lawsClubExcel : excelList) {
|
|
||||||
LawsClub lawsClub = new LawsClub();
|
|
||||||
BeanUtils.copyProperties(lawsClubExcel, lawsClub);
|
|
||||||
// 转换和保存数据
|
|
||||||
List<LawsClubJoinTeam> joinTeamList = convertList(lawsClubExcel.getLawsClubJoinTeamList(), this::convertToJoinTeam);
|
|
||||||
List<LawsClubPayment> paymentList = convertList(lawsClubExcel.getLawsClubPayment(), this::convertToPayment);
|
|
||||||
List<LawsClubMeeting> meetingList = convertList(lawsClubExcel.getLawsClubMeetings(), this::convertToMeeting);
|
|
||||||
List<LawsClubResearchInformation> researchInfoList = convertList(lawsClubExcel.getLawsClubResearchInformations(), this::convertToResearchInformation);
|
|
||||||
save(lawsClub);
|
|
||||||
saveAssociationTable(lawsClub, joinTeamList, paymentList, meetingList, researchInfoList, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 错误消息格式化
|
// 错误消息格式化
|
||||||
private String getErrorMsg(List<LawsClubExcel> excelList, LawsClubExcel lawsClubExcel, String errorMsg) {
|
private String getErrorMsg(int rowIndex, String errorMsg) {
|
||||||
return "第" + (excelList.indexOf(lawsClubExcel) + 4) + "行" + errorMsg;
|
return "第" + (rowIndex + 4) + "行" + errorMsg;
|
||||||
}
|
|
||||||
|
|
||||||
// 判断是否有额外信息
|
|
||||||
private boolean hasAdditionalInfo(LawsClubExcel lawsClubExcel) {
|
|
||||||
return !CollectionUtils.isEmpty(lawsClubExcel.getLawsClubMeetings()) ||
|
|
||||||
!CollectionUtils.isEmpty(lawsClubExcel.getLawsClubJoinTeamList()) ||
|
|
||||||
!CollectionUtils.isEmpty(lawsClubExcel.getLawsClubResearchInformations());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 通用的转换方法
|
|
||||||
private <T, R> List<R> convertList(List<T> sourceList, Function<T, R> converter) {
|
|
||||||
return Optional.ofNullable(sourceList).orElse(Collections.emptyList()).stream()
|
|
||||||
.map(converter)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 通用的日期转换方法
|
|
||||||
private Date parseDate(String dateStr, String errorMessage) {
|
|
||||||
if (StringUtils.isNotBlank(dateStr)) {
|
|
||||||
try {
|
|
||||||
return new SimpleDateFormat("yyyy-MM-dd").parse(dateStr);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error(errorMessage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 转换方法
|
|
||||||
private LawsClubJoinTeam convertToJoinTeam(LawsClubJoinTeamExcel joinTeamExcel) {
|
|
||||||
LawsClubJoinTeam joinTeam = new LawsClubJoinTeam();
|
|
||||||
BeanUtils.copyProperties(joinTeamExcel, joinTeam);
|
|
||||||
joinTeam.setJoinDate(parseDate(joinTeamExcel.getJoinDate(), "入团日期转换异常"));
|
|
||||||
return joinTeam;
|
|
||||||
}
|
|
||||||
|
|
||||||
private LawsClubPayment convertToPayment(LawsClubPaymentExcel paymentExcel) {
|
|
||||||
LawsClubPayment payment = new LawsClubPayment();
|
|
||||||
BeanUtils.copyProperties(paymentExcel, payment);
|
|
||||||
payment.setPaymentTime(parseDate(paymentExcel.getPaymentTime(), "缴费时间转换异常"));
|
|
||||||
return payment;
|
|
||||||
}
|
|
||||||
|
|
||||||
private LawsClubMeeting convertToMeeting(LawsClubMeetingImportExcel meetingImportExcel) {
|
|
||||||
LawsClubMeeting meeting = new LawsClubMeeting();
|
|
||||||
BeanUtils.copyProperties(meetingImportExcel, meeting);
|
|
||||||
meeting.setMeetingDate(parseDate(meetingImportExcel.getMeetingDate(), "会议日期转换异常"));
|
|
||||||
return meeting;
|
|
||||||
}
|
|
||||||
|
|
||||||
private LawsClubResearchInformation convertToResearchInformation(LawsClubResearchInformationExcel researchInformationExcel) {
|
|
||||||
LawsClubResearchInformation researchInfo = new LawsClubResearchInformation();
|
|
||||||
BeanUtils.copyProperties(researchInformationExcel, researchInfo);
|
|
||||||
researchInfo.setReceiveDate(parseDate(researchInformationExcel.getReceiveDate(), "接收日期转换异常"));
|
|
||||||
researchInfo.setDeadlineDate(parseDate(researchInformationExcel.getDeadlineDate(), "截止日期转换异常"));
|
|
||||||
return researchInfo;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,126 @@
|
|||||||
|
package com.jero.modules.laws.club.utils;
|
||||||
|
|
||||||
|
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||||
|
import com.jero.modules.laws.club.enums.FieldTypeEnum;
|
||||||
|
import com.jero.modules.tag.entity.LawsTag;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||||
|
import org.apache.poi.ss.usermodel.*;
|
||||||
|
import org.apache.poi.ss.util.CellRangeAddress;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class ExcelUtil {
|
||||||
|
|
||||||
|
// 通用方法,传入逗号分隔的字段名称和对应的必填标志
|
||||||
|
public static List<LawsTag> createLawsTags(String fieldTxts, String mustInputFlags, String fieldTypeLists) {
|
||||||
|
List<LawsTag> lawsTags = new ArrayList<>();
|
||||||
|
// 将输入字符串按照逗号分割
|
||||||
|
String[] fieldArray = fieldTxts.split(",");
|
||||||
|
String[] mustInputArray = mustInputFlags.split(",");
|
||||||
|
String[] fieldTypeArray = fieldTypeLists.split(",");
|
||||||
|
// 遍历每一个字段并设置 LawsTag 对象
|
||||||
|
for (int i = 0; i < fieldArray.length; i++) {
|
||||||
|
LawsTag lawsTag = new LawsTag();
|
||||||
|
lawsTag.setDbFieldTxt(fieldArray[i].trim()); // 设置字段名,trim() 去除可能的空格
|
||||||
|
// 根据必填标志设置是否为必填
|
||||||
|
String mustInputFlag = mustInputArray[i].trim();
|
||||||
|
if (mustInputFlag.equalsIgnoreCase("yes")) {
|
||||||
|
lawsTag.setFieldMustInput(YesOrNoEnum.YES.getValue());
|
||||||
|
} else if (mustInputFlag.equalsIgnoreCase("no")) {
|
||||||
|
lawsTag.setFieldMustInput(YesOrNoEnum.NO.getValue());
|
||||||
|
}
|
||||||
|
lawsTag.setFieldShowType(fieldTypeArray[i].trim());
|
||||||
|
lawsTags.add(lawsTag);
|
||||||
|
}
|
||||||
|
return lawsTags;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Workbook createWorkBookWithLawsTags(List<LawsTag> fieldList, String sheetName, String describe) {
|
||||||
|
// 创建一个Excel工作簿
|
||||||
|
Workbook workbook = new HSSFWorkbook();
|
||||||
|
// 创建一个工作表
|
||||||
|
Sheet sheet = workbook.createSheet(sheetName);
|
||||||
|
// 创建数据格式
|
||||||
|
DataFormat fmt = workbook.createDataFormat();
|
||||||
|
// 创建一个单元格样式并设置数据格式为文本
|
||||||
|
CellStyle textStyle = workbook.createCellStyle();
|
||||||
|
textStyle.setDataFormat(fmt.getFormat("@"));
|
||||||
|
// 设置列宽
|
||||||
|
for (int i = 0; i < fieldList.size(); i++) {
|
||||||
|
sheet.setColumnWidth(i, 13 * 256);
|
||||||
|
}
|
||||||
|
// 创建红色字体
|
||||||
|
Font redFont = workbook.createFont();
|
||||||
|
redFont.setColor(IndexedColors.RED.getIndex());
|
||||||
|
// 创建默认字体(黑色)
|
||||||
|
Font defaultFont = workbook.createFont();
|
||||||
|
defaultFont.setColor(IndexedColors.BLACK.getIndex());
|
||||||
|
// 创建第一行并添加字段
|
||||||
|
Row row1 = sheet.createRow(0);
|
||||||
|
for (int i = 0; i < fieldList.size(); i++) {
|
||||||
|
LawsTag tag = fieldList.get(i);
|
||||||
|
String cellValue = tag.getDbFieldTxt();
|
||||||
|
// 创建单元格
|
||||||
|
Cell cell = row1.createCell(i);
|
||||||
|
// 判断是否为必填项
|
||||||
|
if (YesOrNoEnum.YES.getValue().equals(tag.getFieldMustInput())) {
|
||||||
|
// 创建富文本字符串
|
||||||
|
CreationHelper createHelper = workbook.getCreationHelper();
|
||||||
|
RichTextString richString = createHelper.createRichTextString("*" + cellValue);
|
||||||
|
// 设置 * 为红色
|
||||||
|
richString.applyFont(0, 1, redFont);
|
||||||
|
// 设置其他文字为默认样式(黑色)
|
||||||
|
richString.applyFont(1, richString.length(), defaultFont);
|
||||||
|
// 设置单元格的值
|
||||||
|
cell.setCellValue(richString);
|
||||||
|
} else {
|
||||||
|
cell.setCellValue(cellValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 确保所有新建的单元格都应用这个文本格式
|
||||||
|
for (int i = 0; i < fieldList.size(); i++) {
|
||||||
|
// 在后续创建单元格时应用文本样式
|
||||||
|
sheet.setDefaultColumnStyle(i, textStyle);
|
||||||
|
}
|
||||||
|
// 创建第二行并合并单元格
|
||||||
|
Row row2 = sheet.createRow(1);
|
||||||
|
row2.setHeightInPoints(65);
|
||||||
|
// 创建一个单元格样式,并设置为自动换行
|
||||||
|
CellStyle style = workbook.createCellStyle();
|
||||||
|
// 设置文字在单元格中垂直居中
|
||||||
|
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||||
|
style.setWrapText(true);
|
||||||
|
sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, fieldList.size() - 1));
|
||||||
|
Cell cell2 = row2.createCell(0);
|
||||||
|
cell2.setCellValue(describe);
|
||||||
|
// 应用样式到单元格
|
||||||
|
cell2.setCellStyle(style);
|
||||||
|
// 创建第三行并添加固定内容
|
||||||
|
Row row3 = sheet.createRow(2);
|
||||||
|
row3.setHeightInPoints(25);
|
||||||
|
setRow3CellValue(row3, fieldList, style);
|
||||||
|
return workbook;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setRow3CellValue(Row row3, List<LawsTag> fieldList, CellStyle style) {
|
||||||
|
for (int i = 0; i < fieldList.size(); i++) {
|
||||||
|
LawsTag tag = fieldList.get(i);
|
||||||
|
// 创建单元格
|
||||||
|
Cell cell = row3.createCell(i);
|
||||||
|
cell.setCellStyle(style);
|
||||||
|
cell.setCellValue(getDescription(tag));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getDescription(LawsTag tag){
|
||||||
|
String value = tag.getFieldShowType();
|
||||||
|
for (FieldTypeEnum fieldTypeEnum: FieldTypeEnum.values()) {
|
||||||
|
if (fieldTypeEnum.getValue().equals(value)) {
|
||||||
|
return fieldTypeEnum.getDescription();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,19 +2,20 @@ package com.jero.modules.laws.club.vo.excel;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||||
import org.jeecgframework.poi.excel.annotation.ExcelCollection;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class LawsClubExcel {
|
public class LawsClubExcel {
|
||||||
|
|
||||||
@Excel(name = "上级节点", width = 20)
|
@Excel(name = "*上级节点", width = 20)
|
||||||
private String parentId;
|
private String parentId;
|
||||||
|
|
||||||
@Excel(name = "节点类型", width = 20)
|
@Excel(name = "*节点类型", width = 20)
|
||||||
private String nodeType;
|
private String nodeType;
|
||||||
|
|
||||||
@Excel(name = "社团名称", width = 20)
|
@Excel(name = "编号", width = 20)
|
||||||
|
private String number;
|
||||||
|
|
||||||
|
@Excel(name = "*社团名称", width = 20)
|
||||||
private String clubName;
|
private String clubName;
|
||||||
|
|
||||||
@Excel(name = "社团地址", width = 20)
|
@Excel(name = "社团地址", width = 20)
|
||||||
@@ -26,16 +27,4 @@ public class LawsClubExcel {
|
|||||||
@Excel(name = "联系电话", width = 20)
|
@Excel(name = "联系电话", width = 20)
|
||||||
private String contactNumber;
|
private String contactNumber;
|
||||||
|
|
||||||
@ExcelCollection(name = "入团信息")
|
|
||||||
private List<LawsClubJoinTeamExcel> lawsClubJoinTeamList;
|
|
||||||
|
|
||||||
@ExcelCollection(name = "参会信息")
|
|
||||||
private List<LawsClubMeetingImportExcel> lawsClubMeetings;
|
|
||||||
|
|
||||||
@ExcelCollection(name = "支付信息")
|
|
||||||
private List<LawsClubPaymentExcel> lawsClubPayment;
|
|
||||||
|
|
||||||
@ExcelCollection(name = "征集调研信息")
|
|
||||||
private List<LawsClubResearchInformationExcel> lawsClubResearchInformations;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+25
-6
@@ -1,25 +1,44 @@
|
|||||||
package com.jero.modules.laws.club.vo.excel;
|
package com.jero.modules.laws.club.vo.excel;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class LawsClubJoinTeamExcel implements Serializable {
|
public class LawsClubJoinTeamExcel implements Serializable {
|
||||||
|
|
||||||
@ApiModelProperty(value = "入团日期")
|
@Excel(name = "*社团名称", width = 20)
|
||||||
@Excel(name = "入团日期", width = 20, format = "yyyy-MM-dd")
|
private String clubId;
|
||||||
|
|
||||||
|
@Excel(name = "入团日期", width = 20)
|
||||||
private String joinDate;
|
private String joinDate;
|
||||||
|
|
||||||
@ApiModelProperty(value = "部门id")
|
@Excel(name = "社团职务担任者", width = 20)
|
||||||
|
private String leadId;
|
||||||
|
|
||||||
|
@Excel(name = "入团经费", width = 20)
|
||||||
|
private String joinCast;
|
||||||
|
|
||||||
|
@Excel(name = "社团简介", width = 20)
|
||||||
|
private String clubProfile;
|
||||||
|
|
||||||
@Excel(name = "部门名称", width = 20)
|
@Excel(name = "部门名称", width = 20)
|
||||||
private String departId;
|
private String departId;
|
||||||
|
|
||||||
@ApiModelProperty(value = "申请人的id")
|
@Excel(name = "专业模块", width = 20)
|
||||||
|
private String specializedModule;
|
||||||
|
|
||||||
@Excel(name = "申请人", width = 20)
|
@Excel(name = "申请人", width = 20)
|
||||||
private String proposerId;
|
private String proposerId;
|
||||||
|
|
||||||
|
@Excel(name = "秘书处", width = 20)
|
||||||
|
private String secretariat;
|
||||||
|
|
||||||
|
@Excel(name = "联系人", width = 20)
|
||||||
|
private String contacts;
|
||||||
|
|
||||||
|
@Excel(name = "备注", width = 20)
|
||||||
|
private String remark;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+52
@@ -0,0 +1,52 @@
|
|||||||
|
package com.jero.modules.laws.club.vo.excel;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||||
|
import org.jeecgframework.poi.excel.annotation.ExcelCollection;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class LawsClubMeetingExcel implements Serializable {
|
||||||
|
|
||||||
|
@Excel(name = "*社团名称", width = 20)
|
||||||
|
private String clubId;
|
||||||
|
|
||||||
|
@Excel(name = "会议名称", width = 20)
|
||||||
|
private String meetingName;
|
||||||
|
|
||||||
|
@Excel(name = "会议日期", width = 20)
|
||||||
|
private String meetingDate;
|
||||||
|
|
||||||
|
@Excel(name = "会议费用", width = 20)
|
||||||
|
private String meetingCost;
|
||||||
|
|
||||||
|
@Excel(name = "线下/线上地点", width = 20)
|
||||||
|
private String meetingPlace;
|
||||||
|
|
||||||
|
@Excel(name = "计划完成日期", width = 20)
|
||||||
|
private Date planCompletionDate;
|
||||||
|
|
||||||
|
@Excel(name = "通知人", width = 20)
|
||||||
|
private String notifierId;
|
||||||
|
|
||||||
|
@Excel(name = "通知部门", width = 20)
|
||||||
|
private String notifyDepartId;
|
||||||
|
|
||||||
|
@Excel(name = "通知部门专业模块", width = 20)
|
||||||
|
private String informSpecializedModule;
|
||||||
|
|
||||||
|
@Excel(name = "是否宣贯", width = 20)
|
||||||
|
private String isPublicize;
|
||||||
|
|
||||||
|
@Excel(name = "会议组织人", width = 20)
|
||||||
|
private String meetingOrganizer;
|
||||||
|
|
||||||
|
@Excel(name = "会议内容", width = 20)
|
||||||
|
private String meetingContent;
|
||||||
|
|
||||||
|
@ExcelCollection(name = "")
|
||||||
|
private List<LawsClubMeetingMemberExcel> meetingMemberList;
|
||||||
|
|
||||||
|
}
|
||||||
-31
@@ -1,31 +0,0 @@
|
|||||||
package com.jero.modules.laws.club.vo.excel;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import com.jero.common.aspect.annotation.Dict;
|
|
||||||
import com.jero.modules.laws.club.entity.LawsClubMeetingMember;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
|
||||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
|
|
||||||
@Data
|
|
||||||
public class LawsClubMeetingImportExcel implements Serializable {
|
|
||||||
|
|
||||||
@Excel(name = "会议名称", width = 20)
|
|
||||||
private String meetingName;
|
|
||||||
|
|
||||||
@Excel(name = "会议日期", width = 20, format = "yyyy-MM-dd")
|
|
||||||
private String meetingDate;
|
|
||||||
|
|
||||||
@Excel(name = "会议费用", width = 20)
|
|
||||||
private String meetingCost;
|
|
||||||
|
|
||||||
@Excel(name = "线下/线上地点", width = 20)
|
|
||||||
private String meetingPlace;
|
|
||||||
|
|
||||||
}
|
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
package com.jero.modules.laws.club.vo.excel;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class LawsClubMeetingMemberExcel implements Serializable {
|
||||||
|
|
||||||
|
@Excel(name = "参会人员", width = 20)
|
||||||
|
private String memberId;
|
||||||
|
|
||||||
|
@Excel(name = "参会部门", width = 20)
|
||||||
|
private String departId;
|
||||||
|
|
||||||
|
@Excel(name = "参会部门专业模块", width = 20)
|
||||||
|
private String meetingSpecializedModule;
|
||||||
|
|
||||||
|
@Excel(name = "参会报告", width = 20)
|
||||||
|
private String meetingFileId;
|
||||||
|
|
||||||
|
@Excel(name = "备注", width = 20)
|
||||||
|
private String remark;
|
||||||
|
}
|
||||||
+3
@@ -7,6 +7,9 @@ import java.io.Serializable;
|
|||||||
@Data
|
@Data
|
||||||
public class LawsClubPaymentExcel implements Serializable {
|
public class LawsClubPaymentExcel implements Serializable {
|
||||||
|
|
||||||
|
@Excel(name = "*社团名称", width = 20)
|
||||||
|
private String clubId;
|
||||||
|
|
||||||
@Excel(name = "缴费金额", width = 20)
|
@Excel(name = "缴费金额", width = 20)
|
||||||
private String paymentAmount;
|
private String paymentAmount;
|
||||||
|
|
||||||
|
|||||||
+30
-9
@@ -1,15 +1,9 @@
|
|||||||
package com.jero.modules.laws.club.vo.excel;
|
package com.jero.modules.laws.club.vo.excel;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import com.jero.common.aspect.annotation.Dict;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class LawsClubResearchInformationExcel implements Serializable {
|
public class LawsClubResearchInformationExcel implements Serializable {
|
||||||
@@ -20,9 +14,36 @@ public class LawsClubResearchInformationExcel implements Serializable {
|
|||||||
@Excel(name = "内容", width = 20)
|
@Excel(name = "内容", width = 20)
|
||||||
private String researchContent;
|
private String researchContent;
|
||||||
|
|
||||||
@Excel(name = "接收日期", width = 20, format = "yyyy-MM-dd")
|
@Excel(name = "接收日期", width = 20)
|
||||||
private String receiveDate;
|
private String receiveDate;
|
||||||
|
|
||||||
@Excel(name = "截止日期", width = 20, format = "yyyy-MM-dd")
|
@Excel(name = "截止日期", width = 20)
|
||||||
private String deadlineDate;
|
private String deadlineDate;
|
||||||
|
|
||||||
|
@Excel(name = "专业接口人", width = 20)
|
||||||
|
private String specializedInterfacePerson;
|
||||||
|
|
||||||
|
@Excel(name = "专业模块", width = 20)
|
||||||
|
private String specializedModule;
|
||||||
|
|
||||||
|
@Excel(name = "反馈人", width = 20)
|
||||||
|
private String feedbackPerson;
|
||||||
|
|
||||||
|
@Excel(name = "反馈部门", width = 20)
|
||||||
|
private String feedbackDepart;
|
||||||
|
|
||||||
|
@Excel(name = "反馈部门专业模块", width = 20)
|
||||||
|
private String feedbackSpecializedModule;
|
||||||
|
|
||||||
|
@Excel(name = "反馈情况", width = 20)
|
||||||
|
private String feedbackSituation;
|
||||||
|
|
||||||
|
@Excel(name = "任务来源", width = 20)
|
||||||
|
private String taskSource;
|
||||||
|
|
||||||
|
@Excel(name = "盖章流程完成情况", width = 20)
|
||||||
|
private String sealSituation;
|
||||||
|
|
||||||
|
@Excel(name = "所属社团", width = 20)
|
||||||
|
private String clubName;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user