diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectRelatedPersonnelController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectRelatedPersonnelController.java index 5847e9b65..c7e4e5973 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectRelatedPersonnelController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectRelatedPersonnelController.java @@ -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 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> queryList() { - List list = projectRelatedPersonnelService.queryList(); - return Result.OK(list); + List list = projectRelatedPersonnelService.queryList(); + return Result.OK(list); } /** @@ -131,20 +133,25 @@ public class ProjectRelatedPersonnelController extends JeroController records = projectRelatedPersonnelService.disposeExportXls(id,projectId); + List 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 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); + } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectRelatedPersonnel.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectRelatedPersonnel.java index f55f709a9..f725ac89e 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectRelatedPersonnel.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectRelatedPersonnel.java @@ -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; /**创建人*/ diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ExportTemplateEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ExportTemplateEnum.java new file mode 100644 index 000000000..cec962527 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ExportTemplateEnum.java @@ -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; + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectRelatedPersonnelService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectRelatedPersonnelService.java index 082c77c3d..b6630cbeb 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectRelatedPersonnelService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectRelatedPersonnelService.java @@ -71,11 +71,13 @@ public interface IProjectRelatedPersonnelService extends IService disposeExportXls(String id,String projectId); + /**导出excel*/ + ModelAndView exportDataToXls(HttpServletRequest request, List dataList, Class clazz, String title,String cut); + /**设置导出模板*/ - ModelAndView setExporTemplate(HttpServletRequest request, Class clazz, String title); + ModelAndView setExporTemplate(HttpServletRequest request, Class clazz, String title,String cut); - ModelAndView exportDataToXls(HttpServletRequest request, List dataList, Class clazz, String title); + Result importExcel(HttpServletRequest request, HttpServletResponse response, Class clazz, String projectId,String cut); - - Result importExcel(HttpServletRequest request, HttpServletResponse response, Class clazz, String projectId); + List oppositeDisposeData(List records); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java index 0c919955e..348b47958 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java @@ -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 lawEngineerUsers = new ArrayList<>(); if (StringUtils.isNotEmpty(projectRelatedPersonnel.getLawEngineer())){ - List lawEngineerIdList = Arrays.asList(projectRelatedPersonnel.getLawEngineer().split(",")); - if (CollectionUtils.isNotEmpty(lawEngineerIdList)) { - lawEngineerIdList = lawEngineerIdList.stream().distinct().collect(Collectors.toList()); + List lawEngineerNameList = Arrays.asList(projectRelatedPersonnel.getLawEngineer().split(",")); + if (CollectionUtils.isNotEmpty(lawEngineerNameList)) { + lawEngineerNameList = lawEngineerNameList.stream().distinct().collect(Collectors.toList()); QueryWrapper userqueryWrapper = new QueryWrapper<>(); - userqueryWrapper.in("id ", lawEngineerIdList); + userqueryWrapper.in("id ", lawEngineerNameList); lawEngineerUsers = sysUserMapper.selectList(userqueryWrapper); } @@ -165,7 +168,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl data.equals(e.getId())) .map(sysUser -> sysUser.getUsername()).collect(Collectors.joining(",")); @@ -358,22 +361,31 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl dataList, Class clazz, String title) { - // Step.1 组装查询条件 + public ModelAndView exportDataToXls(HttpServletRequest request, List dataList, + Class 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 clazz, String title){ + public ModelAndView setExporTemplate(HttpServletRequest request, Class clazz, String title,String cut){ List 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 importExcel(HttpServletRequest request, HttpServletResponse response, Class clazz,String projectId) { + public Result importExcel(HttpServletRequest request, HttpServletResponse response, + Class clazz,String projectId,String cut) { + Result result=new Result<>(); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map fileMap = multipartRequest.getFileMap(); for (Map.Entry entity : fileMap.entrySet()) { @@ -432,15 +448,33 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl list = ExcelImportUtil.importExcel(file.getInputStream(), clazz, params); - for(ProjectRelatedPersonnel projectRelatedPersonnel:list){ - projectRelatedPersonnel.setProjectId(projectId); + //接收导入数据 + List 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 oppositeDisposeData(List records) { + + for (ProjectRelatedPersonnel projectRelatedPersonnel:records) { + //法规工程师 + List lawEngineerUsers = new ArrayList<>(); + if (StringUtils.isNotEmpty(projectRelatedPersonnel.getLawEngineerName())){ + List 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 engineeringInterfacePersonUsers = new ArrayList<>(); + if (StringUtils.isNotEmpty(projectRelatedPersonnel.getEngineeringInterfacePersonName())){ + List 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 certificationEngineerUsers = new ArrayList<>(); + if (StringUtils.isNotEmpty(projectRelatedPersonnel.getCertificationEngineerName())){ + List 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; } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/util/ExcelLangUtils.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/util/ExcelLangUtils.java new file mode 100644 index 000000000..bcd71f718 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/util/ExcelLangUtils.java @@ -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 memberValues = (Map) f.get(invocationHandler); + // 获取属性值 + String excelValue = (String) memberValues.get("name"); + + if (StringUtils.isNotBlank(excelValue)) { + //根据传入的语言标识,重新设置属性值 + List 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; + } +} \ No newline at end of file