项目库相关人员-导出+模板中英切换+导入数据处理

This commit is contained in:
xiejunyu
2022-04-22 18:10:27 +08:00
parent 755719035c
commit 2c7fe75fe1
6 changed files with 324 additions and 91 deletions
@@ -2,9 +2,11 @@ package com.jero.modules.project.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.system.base.controller.JeroController;
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
import com.jero.modules.project.service.IProjectRelatedPersonnelService;
import com.jero.modules.project.util.ExcelLangUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -45,17 +47,17 @@ public class ProjectRelatedPersonnelController extends JeroController<ProjectRel
List<ProjectRelatedPersonnel> pageList= projectRelatedPersonnelService.queryPageList((String) map.get("projectId"));
return Result.OK((String)map.get("cut"),pageList);
}
/**
/**
* 列表查询
*
* @return
*/
@AutoLog(value = "项目库-相关人员维护表-列表查询")
@ApiOperation(value="项目库-相关人员维护表-列表查询", notes="项目库-相关人员维护表-列表查询")
@ApiOperation(value="项目库-相关人员维护表-列表查询", notes="项目库-相关人员维护表-列表查询")
@GetMapping(value = "/list")
public Result<List<ProjectRelatedPersonnel>> queryList() {
List<ProjectRelatedPersonnel> list = projectRelatedPersonnelService.queryList();
return Result.OK(list);
List<ProjectRelatedPersonnel> list = projectRelatedPersonnelService.queryList();
return Result.OK(list);
}
/**
@@ -131,20 +133,25 @@ public class ProjectRelatedPersonnelController extends JeroController<ProjectRel
return Result.OK(projectRelatedPersonnel);
}
/**
* 导出excel
*/
@AutoLog(value = "项目库-相关人员维护表-导出excel")
@ApiOperation(value="项目库-相关人员维护表-导出excel", notes="项目库-相关人员维护表-导出excel")
@GetMapping(value = "/exportXls", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public ModelAndView exportXls(HttpServletRequest request,@RequestParam(name="id") String id,
@RequestParam(name="projectId") String projectId,
@RequestParam(name="cut",required=true) String cut) {
/**
* 导出excel
*/
@AutoLog(value = "项目库-相关人员维护表-导出excel")
@ApiOperation(value="项目库-相关人员维护表-导出excel", notes="项目库-相关人员维护表-导出excel")
@GetMapping(value = "/exportXls", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public ModelAndView exportXls(HttpServletRequest request,@RequestParam(name="id") String id,
@RequestParam(name="projectId") String projectId,
@RequestParam(name="cut") String cut)
throws NoSuchFieldException, IllegalAccessException {
//获取导出的数据
List<ProjectRelatedPersonnel> records = projectRelatedPersonnelService.disposeExportXls(id,projectId);
List<ProjectRelatedPersonnel> records = projectRelatedPersonnelService.disposeExportXls(id, projectId);
if (cut.equals(CutEnum.CN.getValue())) {
return projectRelatedPersonnelService.exportDataToXls(request, records, ProjectRelatedPersonnel.class, "相关人员名单", cut);
}else{
return projectRelatedPersonnelService.exportDataToXls(request, records, ProjectRelatedPersonnel.class, "List of relevant personnel", cut);
}
return projectRelatedPersonnelService.exportDataToXls(request, records, ProjectRelatedPersonnel.class, "相关人员名单");
}
}
/**
* 导出excel模板
@@ -152,34 +159,41 @@ public class ProjectRelatedPersonnelController extends JeroController<ProjectRel
@AutoLog(value = "项目库-相关人员维护表-导出excel模板")
@ApiOperation(value="项目库-相关人员维护表-导出excel模板", notes="项目库-相关人员维护表-导出excel模板")
@GetMapping(value = "/exportTemplate", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public ModelAndView exportTemplate(HttpServletRequest request) {
return projectRelatedPersonnelService.setExporTemplate(request, ProjectRelatedPersonnel.class, "相关人员名单");
public ModelAndView exportTemplate(HttpServletRequest request,@RequestParam(name="cut",required=true) String cut)
throws NoSuchFieldException, IllegalAccessException {
//return projectRelatedPersonnelService.setExporTemplate(request, ProjectRelatedPersonnel.class, "相关人员名单",cut);
if (cut.equals(CutEnum.CN.getValue())) {
return projectRelatedPersonnelService.setExporTemplate(request, ExcelLangUtils.chooseLang(ProjectRelatedPersonnel.class, CutEnum.CN.getValue()), "相关人员名单", cut);
}else{
return projectRelatedPersonnelService.setExporTemplate(request, ExcelLangUtils.chooseLang(ProjectRelatedPersonnel.class, CutEnum.EN.getValue()), "List of relevant personnel", cut);
}
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@AutoLog(value = "项目库-相关人员维护表-通过excel导入数据")
@ApiOperation(value="项目库-相关人员维护表-通过excel导入数据", notes="项目库-相关人员维护表-通过excel导入数据")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response,@RequestParam(name="projectId",required=true) String projectId) {
return projectRelatedPersonnelService.importExcel(request, response, ProjectRelatedPersonnel.class,projectId);
}
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response,
@RequestParam(name="projectId",required=true) String projectId,
@RequestParam(name="cut",required=true) String cut) {
return projectRelatedPersonnelService.importExcel(request, response, ProjectRelatedPersonnel.class,projectId,cut);
}
/**
* 通过projectId查询
*
* @param projectId
* @return
*/
@AutoLog(value = "项目库-相关人员维护表-根据projectId查询编辑时下拉数据")
@ApiOperation(value="项目库-相关人员维护表-根据projectId查询编辑时下拉数据", notes="项目库-相关人员维护表-根据projectId查询编辑时下拉数据")
@GetMapping(value = "/queryPersonByProjectId")
public Result<?> queryPersonByProjectId(@RequestParam(name="projectId",required=true) String projectId,@RequestParam(name="dutyTerritory",required=true) String dutyTerritory) {
return this.projectRelatedPersonnelService.queryPersonByProjectId(projectId,dutyTerritory);
}
/**
* 通过projectId查询
*
* @param projectId
* @return
*/
@AutoLog(value = "项目库-相关人员维护表-根据projectId查询编辑时下拉数据")
@ApiOperation(value="项目库-相关人员维护表-根据projectId查询编辑时下拉数据", notes="项目库-相关人员维护表-根据projectId查询编辑时下拉数据")
@GetMapping(value = "/queryPersonByProjectId")
public Result<?> queryPersonByProjectId(@RequestParam(name="projectId",required=true) String projectId,@RequestParam(name="dutyTerritory",required=true) String dutyTerritory) {
return this.projectRelatedPersonnelService.queryPersonByProjectId(projectId,dutyTerritory);
}
}
@@ -11,6 +11,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecgframework.poi.excel.annotation.ExcelTarget;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
@@ -26,6 +27,7 @@ import java.io.Serializable;
@TableName("project_related_personnel")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ExcelTarget("projectRelatedPersonnel")
public class ProjectRelatedPersonnel implements Serializable {
private static final long serialVersionUID = 1L;
@@ -37,30 +39,30 @@ public class ProjectRelatedPersonnel implements Serializable {
private java.lang.String projectId;
/**责任领域*/
@Excel(name = "责任领域", width = 15,orderNum = "1",dicCode = "duty_territory")
@Excel(name = "责任领域,dutyTerritory", width = 15,orderNum = "1",dicCode = "duty_territory")
@Dict(dicCode = "duty_territory")
private java.lang.String dutyTerritory;
/**法规工程师*/
private java.lang.String lawEngineer;
@TableField(exist = false)
@Excel(name = "法规工程师", width = 30,orderNum = "2")
@Excel(name = "法规工程师,lawEngineerName", width = 30,orderNum = "2")
private java.lang.String lawEngineerName;
/**工程接口人*/
private java.lang.String engineeringInterfacePerson;
@TableField(exist = false)
@Excel(name = "工程接口人", width = 30,orderNum = "3")
@Excel(name = "工程接口人,engineeringInterfacePersonName", width = 30,orderNum = "3")
private java.lang.String engineeringInterfacePersonName;
/**认证工程师*/
private java.lang.String certificationEngineer;
@TableField(exist = false)
@Excel(name = "认证工程师", width = 30,orderNum = "4")
@Excel(name = "认证工程师,certificationEngineerName", width = 30,orderNum = "4")
private java.lang.String certificationEngineerName;
/**备注*/
@Excel(name = "备注", width = 50,orderNum = "5")
@Excel(name = "备注,remark", width = 50,orderNum = "5")
private java.lang.String remark;
/**创建人*/
@@ -0,0 +1,39 @@
package com.jero.modules.project.enums;
/**
* 相关人员名单-导出模板枚举类
*/
public enum ExportTemplateEnum {
DUTY_TERRITORY("责任领域"," duty_territory"),
DUTY_TERRITORY_FIELD_of_PRODUCTION("生产领域","field_of_production"),
// LAW_ENGINEER("法规工程师","lawEngineerName"),
// ENGINEER_INTERFACE_PERSON("工程接口人","engineeringInterfacePersonName"),
// CERTIFICATION_ENGINEER("认证工程师"," certificationEngineerName"),
// REMARK("备注","remark"),
;
String name;
String value;
ExportTemplateEnum(String name, String value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
@@ -71,11 +71,13 @@ public interface IProjectRelatedPersonnelService extends IService<ProjectRelated
/**处理导出数据*/
List<ProjectRelatedPersonnel> disposeExportXls(String id,String projectId);
/**导出excel*/
ModelAndView exportDataToXls(HttpServletRequest request, List<ProjectRelatedPersonnel> dataList, Class<ProjectRelatedPersonnel> clazz, String title,String cut);
/**设置导出模板*/
ModelAndView setExporTemplate(HttpServletRequest request, Class<ProjectRelatedPersonnel> clazz, String title);
ModelAndView setExporTemplate(HttpServletRequest request, Class<ProjectRelatedPersonnel> clazz, String title,String cut);
ModelAndView exportDataToXls(HttpServletRequest request, List<ProjectRelatedPersonnel> dataList, Class<ProjectRelatedPersonnel> clazz, String title);
Result<?> importExcel(HttpServletRequest request, HttpServletResponse response, Class<ProjectRelatedPersonnel> clazz, String projectId,String cut);
Result<?> importExcel(HttpServletRequest request, HttpServletResponse response, Class<ProjectRelatedPersonnel> clazz, String projectId);
List<ProjectRelatedPersonnel> oppositeDisposeData(List<ProjectRelatedPersonnel> records);
}
@@ -4,11 +4,14 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.Result;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
import com.jero.modules.project.enums.ExportTemplateEnum;
import com.jero.modules.project.mapper.ProjectRelatedPersonnelMapper;
import com.jero.modules.project.service.IProjectRelatedPersonnelService;
import com.jero.modules.project.util.ExcelLangUtils;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.mapper.SysUserMapper;
import com.jero.modules.system.service.ISysUserService;
@@ -153,11 +156,11 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
//法规工程师
List<SysUser> lawEngineerUsers = new ArrayList<>();
if (StringUtils.isNotEmpty(projectRelatedPersonnel.getLawEngineer())){
List<String> lawEngineerIdList = Arrays.asList(projectRelatedPersonnel.getLawEngineer().split(","));
if (CollectionUtils.isNotEmpty(lawEngineerIdList)) {
lawEngineerIdList = lawEngineerIdList.stream().distinct().collect(Collectors.toList());
List<String> lawEngineerNameList = Arrays.asList(projectRelatedPersonnel.getLawEngineer().split(","));
if (CollectionUtils.isNotEmpty(lawEngineerNameList)) {
lawEngineerNameList = lawEngineerNameList.stream().distinct().collect(Collectors.toList());
QueryWrapper<SysUser> userqueryWrapper = new QueryWrapper<>();
userqueryWrapper.in("id ", lawEngineerIdList);
userqueryWrapper.in("id ", lawEngineerNameList);
lawEngineerUsers = sysUserMapper.selectList(userqueryWrapper);
}
@@ -165,7 +168,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
String lawEngineerId = projectRelatedPersonnel.getLawEngineer();
String lawEngineerName = null;
StringBuilder lawName = new StringBuilder();
for (String data : lawEngineerIdList) {
for (String data : lawEngineerNameList) {
if (StringUtils.isNotEmpty(lawEngineerId)) {
lawEngineerName = lawEngineerUsers.stream().filter(e -> data.equals(e.getId()))
.map(sysUser -> sysUser.getUsername()).collect(Collectors.joining(","));
@@ -358,22 +361,31 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
*
* @param request
*/@Override
public ModelAndView exportDataToXls(HttpServletRequest request, List<ProjectRelatedPersonnel> dataList, Class<ProjectRelatedPersonnel> clazz, String title) {
// Step.1 组装查询条件
public ModelAndView exportDataToXls(HttpServletRequest request, List<ProjectRelatedPersonnel> dataList,
Class<ProjectRelatedPersonnel> clazz, String title,String cut) {
// Step.1 组装查询条件
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// Step.2 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
try {
ExportParams exportParams=null;
try {
//中英切换
if(CutEnum.CN.getValue().equals(cut)) {
exportParams=new ExportParams(title , "导出人:" + sysUser.getUsername(), title);
mv.addObject(NormalExcelConstants.CLASS, ExcelLangUtils.chooseLang(clazz, CutEnum.CN.getValue()));
}
else {
exportParams=new ExportParams(title , "Exporter:" + sysUser.getUsername(), title);
mv.addObject(NormalExcelConstants.CLASS, ExcelLangUtils.chooseLang(clazz, CutEnum.EN.getValue()));
}
mv.addObject(NormalExcelConstants.FILE_NAME, title); //此处设置的filename无效 ,前端会重更新设置一下
mv.addObject(NormalExcelConstants.FILE_NAME, title); //此处设置的filename无效 ,前端会重更新设置一下
mv.addObject(NormalExcelConstants.CLASS, clazz);
ExportParams exportParams=new ExportParams(title , "导出人:" + sysUser.getUsername(), title);
mv.addObject(NormalExcelConstants.PARAMS,exportParams);
mv.addObject(NormalExcelConstants.DATA_LIST, dataList);
return mv;
}catch(Exception e){
mv.addObject(NormalExcelConstants.PARAMS,exportParams);
mv.addObject(NormalExcelConstants.DATA_LIST, dataList);
return mv;
}catch(Exception e){
throw new JeroBootException("出现异常,请重新登录");
}
@@ -384,32 +396,34 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
*
*/
@Override
public ModelAndView setExporTemplate(HttpServletRequest request, Class<ProjectRelatedPersonnel> clazz, String title){
public ModelAndView setExporTemplate(HttpServletRequest request, Class<ProjectRelatedPersonnel> clazz, String title,String cut){
List<ProjectRelatedPersonnel> records=new ArrayList<>();
ProjectRelatedPersonnel projectRelatedPersonnel=new ProjectRelatedPersonnel();
projectRelatedPersonnel.setDutyTerritory("安全领域");
projectRelatedPersonnel.setLawEngineerName("ning.chen xinhui.wei");
projectRelatedPersonnel.setEngineeringInterfacePersonName("ning.chen xinhui.wei");
projectRelatedPersonnel.setCertificationEngineerName("ning.chen xinhui.wei");
projectRelatedPersonnel.setRemark("xxxxx");
if(projectRelatedPersonnel != null) {
records.add(projectRelatedPersonnel);
}
// Step.1 组装查询条件
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ExportParams exportParams=null;
// Step.2 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
try {
//中英切换模板
if(CutEnum.CN.getValue().equals(cut)) {
projectRelatedPersonnel.setDutyTerritory(ExportTemplateEnum.DUTY_TERRITORY_FIELD_of_PRODUCTION.getName());
exportParams=new ExportParams(title , "导出人:" + sysUser.getUsername(), title);
}else{
projectRelatedPersonnel.setDutyTerritory(ExportTemplateEnum.DUTY_TERRITORY_FIELD_of_PRODUCTION.getValue());
exportParams=new ExportParams(title , "Exporter:" + sysUser.getUsername(), title);
}
projectRelatedPersonnel.setLawEngineerName("ning.chen xinhui.wei");
projectRelatedPersonnel.setEngineeringInterfacePersonName("ning.chen xinhui.wei");
projectRelatedPersonnel.setCertificationEngineerName("ning.chen xinhui.wei");
projectRelatedPersonnel.setRemark("xxxxx");
if(projectRelatedPersonnel != null) {
records.add(projectRelatedPersonnel);
}
mv.addObject(NormalExcelConstants.FILE_NAME, title); //此处设置的filename无效 ,前端会重更新设置一下
mv.addObject(NormalExcelConstants.CLASS, clazz);
ExportParams exportParams=new ExportParams(title , "导出人:" + sysUser.getUsername(), title);
mv.addObject(NormalExcelConstants.CLASS, clazz);//!!!!这里设置中英切换
mv.addObject(NormalExcelConstants.PARAMS,exportParams);
mv.addObject(NormalExcelConstants.DATA_LIST, projectRelatedPersonnel);
mv.addObject(NormalExcelConstants.DATA_LIST, records);
return mv;
}catch(Exception e){
throw new JeroBootException("出现异常,请重新登录");
@@ -422,7 +436,9 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
* @param request
*/
@Override
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response, Class<ProjectRelatedPersonnel> clazz,String projectId) {
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response,
Class<ProjectRelatedPersonnel> clazz,String projectId,String cut) {
Result<ProjectRelatedPersonnel> result=new Result<>();
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
@@ -432,15 +448,33 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
params.setHeadRows(1);
params.setNeedSave(true);
try {
List<ProjectRelatedPersonnel> list = ExcelImportUtil.importExcel(file.getInputStream(), clazz, params);
for(ProjectRelatedPersonnel projectRelatedPersonnel:list){
projectRelatedPersonnel.setProjectId(projectId);
//接收导入数据
List<ProjectRelatedPersonnel> records = ExcelImportUtil.importExcel(file.getInputStream(), clazz, params);
if(CollectionUtils.isNotEmpty(records)) {
oppositeDisposeData(records);
saveBatch(records);
//中英切换提示语
if(CutEnum.CN.getValue().equals(cut)) {
result.success("文件导入成功!数据行数:" + records.size());
}else{
result.success("File import succeeded! Number of data rows" + records.size());
}
}else{
//中英切换提示语
if(CutEnum.CN.getValue().equals(cut)) {
result.error500("数据为空,请检查");
}else {
result.error500("The data is empty, please check!");
}
}
saveBatch(list);
return Result.OK("文件导入成功!数据行数:" + list.size());
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.error("文件导入失败:" + e.getMessage());
//中英切换提示语
if(CutEnum.CN.getValue().equals(cut)) {
result.error500("文件导入失败:" + e.getMessage());
}else {
result.error500("File import failed.:" + e.getMessage());
}
} finally {
try {
file.getInputStream().close();
@@ -449,6 +483,90 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
}
}
}
return Result.error("文件导入失败!");
return result;
}
/**
* 把导入的数据翻译成对应的id
* @return
*/
public List<ProjectRelatedPersonnel> oppositeDisposeData(List<ProjectRelatedPersonnel> records) {
for (ProjectRelatedPersonnel projectRelatedPersonnel:records) {
//法规工程师
List<SysUser> lawEngineerUsers = new ArrayList<>();
if (StringUtils.isNotEmpty(projectRelatedPersonnel.getLawEngineerName())){
List<String> lawEngineerNameList = Arrays.asList(projectRelatedPersonnel.getLawEngineerName().split(","));
if (CollectionUtils.isNotEmpty(lawEngineerNameList)) {
lawEngineerNameList = lawEngineerNameList.stream().distinct().collect(Collectors.toList());
lawEngineerUsers=sysUserService.queryUserIdListByNameList(lawEngineerNameList);
}
if(CollectionUtils.isNotEmpty(lawEngineerUsers)) {
String lawEngineerName = projectRelatedPersonnel.getLawEngineerName();
String lawEngineerId = null;
StringBuilder midId = new StringBuilder();
for (String data : lawEngineerNameList) {
if (StringUtils.isNotEmpty(lawEngineerName)) {
lawEngineerId = lawEngineerUsers.stream().filter(e -> data.equals(e.getUsername()))
.map(sysUser -> sysUser.getId()).collect(Collectors.joining(","));
}
midId.append(lawEngineerId).append(",");
}
projectRelatedPersonnel.setLawEngineer(midId.substring(0,midId.toString().length()-1));
}
}
//工程接口人
List<SysUser> engineeringInterfacePersonUsers = new ArrayList<>();
if (StringUtils.isNotEmpty(projectRelatedPersonnel.getEngineeringInterfacePersonName())){
List<String> engineeringInterfacePersonNameList = Arrays.asList(projectRelatedPersonnel.getEngineeringInterfacePersonName().split(","));
if (CollectionUtils.isNotEmpty(engineeringInterfacePersonNameList)) {
engineeringInterfacePersonNameList = engineeringInterfacePersonNameList.stream().distinct().collect(Collectors.toList());
engineeringInterfacePersonUsers=sysUserService.queryUserIdListByNameList(engineeringInterfacePersonNameList);
}
if(CollectionUtils.isNotEmpty(engineeringInterfacePersonUsers)) {
String engineeringInterfacePersonName = projectRelatedPersonnel.getEngineeringInterfacePersonName();
String engineeringInterfacePersonId = null;
StringBuilder midId = new StringBuilder();
for (String data : engineeringInterfacePersonNameList) {
if (StringUtils.isNotEmpty(engineeringInterfacePersonName)) {
engineeringInterfacePersonId = engineeringInterfacePersonUsers.stream().filter(e -> data.equals(e.getUsername()))
.map(sysUser -> sysUser.getId()).collect(Collectors.joining(","));
}
midId.append(engineeringInterfacePersonId).append(",");
}
projectRelatedPersonnel.setEngineeringInterfacePerson(midId.substring(0,midId.toString().length()-1));
}
}
//认证工程师
List<SysUser> certificationEngineerUsers = new ArrayList<>();
if (StringUtils.isNotEmpty(projectRelatedPersonnel.getCertificationEngineerName())){
List<String> certificationEngineerNameList = Arrays.asList(projectRelatedPersonnel.getCertificationEngineerName().split(","));
if (CollectionUtils.isNotEmpty(certificationEngineerNameList)) {
certificationEngineerNameList = certificationEngineerNameList.stream().distinct().collect(Collectors.toList());
certificationEngineerUsers=sysUserService.queryUserIdListByNameList(certificationEngineerNameList);
}
if(CollectionUtils.isNotEmpty(certificationEngineerUsers)) {
String certificationEngineerName = projectRelatedPersonnel.getCertificationEngineerName();
String certificationEngineerId = null;
StringBuilder midId = new StringBuilder();
for (String data : certificationEngineerNameList) {
if (StringUtils.isNotEmpty(certificationEngineerName)) {
certificationEngineerId = certificationEngineerUsers.stream().filter(e -> data.equals(e.getUsername()))
.map(sysUser -> sysUser.getId()).collect(Collectors.joining(","));
}
midId.append(certificationEngineerId).append(",");
}
projectRelatedPersonnel.setCertificationEngineer(midId.substring(0,midId.toString().length()-1));
}
}
}
return records;
}
}
@@ -0,0 +1,58 @@
package com.jero.modules.project.util;
import com.jero.common.constant.enums.CutEnum;
import org.apache.commons.lang3.StringUtils;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**AutoPOI导出时表头中英切换*/
public class ExcelLangUtils {
private static final int VALUE_SIZE = 2;
private ExcelLangUtils() {
}
public static Class chooseLang(Class<?> pojoClass, String lang)
throws NoSuchFieldException, IllegalAccessException {
//获取实体类中所有字段
Field[] fields = pojoClass.getDeclaredFields();
for (Field field : fields) {
// 获取字段上的注解
Excel anoExcel = field.getAnnotation(Excel.class);
if (anoExcel != null) {
// 获取代理处理器
InvocationHandler invocationHandler = Proxy.getInvocationHandler(anoExcel);
// 获取私有 memberValues 属性
Field f = invocationHandler.getClass().getDeclaredField("memberValues");
f.setAccessible(true);
// 获取实例的属性map
Map<String, Object> memberValues = (Map<String, Object>) f.get(invocationHandler);
// 获取属性值
String excelValue = (String) memberValues.get("name");
if (StringUtils.isNotBlank(excelValue)) {
//根据传入的语言标识,重新设置属性值
List<String> valueList = Arrays.asList(excelValue.split(","));
if (valueList.size() == VALUE_SIZE) {
if (CutEnum.CN.getValue().equals(lang)) {
memberValues.put("name", valueList.get(0));
}else{
memberValues.put("name", valueList.get(1));
}
}
}
}
}
return pojoClass;
}
}