Browse Source

自定义导出

release
jianjun 3 years ago
parent
commit
8493e9592d
  1. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/IcExportItemListFormDTO.java
  2. 5
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/IcExportTemplateSaveFormDTO.java
  3. 6
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcExportTemplateQueryFormDTO.java
  4. 1
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java
  5. 1
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java
  6. 5
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcExportTemplateController.java
  7. 2
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcExportTemplateService.java
  8. 24
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java
  9. 31
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ExportResiUserFormDTO.java
  10. 12
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiUserPageFormDTO.java
  11. 12
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  12. 9
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserExportService.java
  13. 47
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java

2
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcExportItemListFormDTO.java → epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/IcExportItemListFormDTO.java

@ -1,4 +1,4 @@
package com.epmet.dto.form;
package com.epmet.commons.tools.dto.form;
import com.epmet.commons.tools.validator.group.AddGroup;
import lombok.Data;

5
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcExportTemplateSaveFormDTO.java → epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/IcExportTemplateSaveFormDTO.java

@ -1,4 +1,4 @@
package com.epmet.dto.form;
package com.epmet.commons.tools.dto.form;
import com.epmet.commons.tools.validator.group.AddGroup;
import lombok.Data;
@ -24,7 +24,7 @@ public class IcExportTemplateSaveFormDTO implements Serializable {
/**
* 是否保存为模板 :true :false
*/
private Boolean isTemp = false;
private Boolean isSaveTemp = false;
/**
* 表单CODE从字典获取
@ -35,7 +35,6 @@ public class IcExportTemplateSaveFormDTO implements Serializable {
/**
* 模板名称
*/
//@NotBlank(message = "模板名称不能为空",groups = AddGroup.class)
@Length(max = 20, message = "模板名称最多为20个字", groups = { AddGroup.class })
private String name;

6
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcExportTemplateQueryFormDTO.java

@ -1,5 +1,6 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.commons.tools.validator.group.ExportGroup;
import lombok.Data;
@ -29,4 +30,9 @@ public class IcExportTemplateQueryFormDTO implements Serializable {
@NotBlank(message = "客户Id不能为空",groups = ExportGroup.class)
private String customerId;
/**
* 页面上的导出配置参数
*/
private IcExportTemplateSaveFormDTO exportConfig;
}

1
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java

@ -1,6 +1,7 @@
package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerFootBarDTO;
import com.epmet.dto.IcFormItemOptionsDTO;

1
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java

@ -1,6 +1,7 @@
package com.epmet.feign.fallback;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerFootBarDTO;

5
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcExportTemplateController.java

@ -2,16 +2,15 @@ package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.ExportGroup;
import com.epmet.dto.IcExportTemplateDTO;
import com.epmet.dto.form.IcExportTemplateQueryFormDTO;
import com.epmet.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.dto.result.IcCustomExportResultDTO;
import com.epmet.dto.result.IcExportTemplateForExportResultDTO;
import com.epmet.dto.result.TemplateDetailResultDTO;
@ -51,8 +50,6 @@ public class IcExportTemplateController {
@NoRepeatSubmit
@PostMapping("save")
public Result<List<IcExportTemplateForExportResultDTO>> save(@RequestBody IcExportTemplateSaveFormDTO formDTO) {
//效验数据
ValidatorUtils.validateEntity(formDTO, AddGroup.class);
return new Result<List<IcExportTemplateForExportResultDTO>>().ok(icExportTemplateService.save(formDTO));
}

2
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcExportTemplateService.java

@ -5,7 +5,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.IcExportTemplateDTO;
import com.epmet.dto.form.IcExportTemplateQueryFormDTO;
import com.epmet.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.dto.result.IcCustomExportResultDTO;
import com.epmet.dto.result.IcExportTemplateForExportResultDTO;
import com.epmet.dto.result.TemplateDetailResultDTO;

24
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java

@ -8,6 +8,8 @@ import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.form.IcExportItemListFormDTO;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
@ -18,12 +20,12 @@ import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.dao.IcExportTemplateDao;
import com.epmet.dao.IcFormItemDao;
import com.epmet.dto.IcExportTemplateDTO;
import com.epmet.dto.form.IcExportItemListFormDTO;
import com.epmet.dto.form.IcExportTemplateQueryFormDTO;
import com.epmet.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.dto.result.ConditionResultDTO;
import com.epmet.dto.result.IcCustomExportResultDTO;
import com.epmet.dto.result.IcExportTemplateForExportResultDTO;
@ -93,6 +95,9 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
@Override
@Transactional(rollbackFor = Exception.class)
public List<IcExportTemplateForExportResultDTO> save(IcExportTemplateSaveFormDTO formDTO) {
//效验数据
ValidatorUtils.validateEntity(formDTO, AddGroup.class);
List<IcExportTemplateForExportResultDTO> resultList = new ArrayList<>();
IcExportTemplateEntity tempEntity = new IcExportTemplateEntity();
List<IcExportTemplateConfigEntity> itemList = new ArrayList<>();
@ -111,7 +116,7 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
//2.根据是否保存判断查询当前组织已存在模板的最大sort值
int sort = 1;
String tempId = "";
if (formDTO.getIsTemp()) {
if (formDTO.getIsSaveTemp()) {
List<IcExportTemplateDTO> templist = baseDao.selectByAgencyId(agencyInfo.getId());
if (!CollectionUtils.isEmpty(templist)) {
sort = templist.get(NumConstant.ZERO).getSort() + NumConstant.ONE;
@ -132,7 +137,7 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
packageData(formDTO.getItemList(), "0", customerId, tempId, resultList, itemList);
//4.执行数据保存
if (formDTO.getIsTemp()) {
if (formDTO.getIsSaveTemp()) {
baseDao.insert(tempEntity);
icExportTemplateConfigService.insertBatch(itemList);
}
@ -179,7 +184,16 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
@Override
public IcCustomExportResultDTO getTemplateConfigForExport(IcExportTemplateQueryFormDTO param) {
List<IcExportTemplateForExportResultDTO> list = icExportTemplateDao.getTemplateConfigForExport(param);
String tempId = param.getTempId();
List<IcExportTemplateForExportResultDTO> list = null;
if (StringUtils.isNotBlank(tempId)){
list = icExportTemplateDao.getTemplateConfigForExport(param);
}else {
list = this.save(param.getExportConfig());
}
if (CollectionUtils.isEmpty(list)) {
return null;
}

31
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ExportResiUserFormDTO.java

@ -0,0 +1,31 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 居民信息自定义导出
* @Author yinzuomei
* @Date 2021/10/27 2:06 下午
*/
@Data
public class ExportResiUserFormDTO implements Serializable {
private static final long serialVersionUID = 8777535966834678256L;
/**
* 表单查询条件
*/
private IcResiUserPageFormDTO searchForm;
/**
* 模板id
*/
private String templateId;
/**
* 自定义的导出表单参数
*/
private IcExportTemplateSaveFormDTO exportConfig;
}

12
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiUserPageFormDTO.java

@ -1,7 +1,6 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.validator.group.ExportGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@ -18,10 +17,10 @@ public class IcResiUserPageFormDTO extends PageFormDTO implements Serializable {
public interface AddUserInternalGroup {
}
@NotBlank(message = "formCode不能为空", groups = {AddUserInternalGroup.class,ExportGroup.class})
@NotBlank(message = "formCode不能为空", groups = {AddUserInternalGroup.class})
private String formCode;
@NotBlank(message = "customerId不能为空", groups = {AddUserInternalGroup.class,ExportGroup.class})
@NotBlank(message = "customerId不能为空", groups = {AddUserInternalGroup.class})
private String customerId;
/**
@ -29,7 +28,7 @@ public class IcResiUserPageFormDTO extends PageFormDTO implements Serializable {
*/
private List<ResiUserQueryValueDTO> conditions;
@NotBlank(message = "当前用户id不能为空", groups = {AddUserInternalGroup.class,ExportGroup.class})
@NotBlank(message = "当前用户id不能为空", groups = {AddUserInternalGroup.class})
private String staffId;
/**
@ -37,10 +36,5 @@ public class IcResiUserPageFormDTO extends PageFormDTO implements Serializable {
*/
private String keyword;
/**
* 模板id
*/
private String templateId;
}

12
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java

@ -46,7 +46,6 @@ import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.ExportGroup;
import com.epmet.constant.SystemMessageType;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.IcResiUserDTO;
@ -414,16 +413,9 @@ public class IcResiUserController implements ResultDataResolver {
*/
@NoRepeatSubmit
@RequestMapping(value = "/exportExcelCustom")
public void exportExcelCustom(@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception {
//TODO 去掉
//tokenDto.setUserId("73ae6280e46a6653a5605d51d5462725");
//tokenDto.setCustomerId("45687aa479955f9d06204d415238f7cc");
pageFormDTO.setCustomerId(tokenDto.getCustomerId());
pageFormDTO.setStaffId(tokenDto.getUserId());
ValidatorUtils.validateEntity(pageFormDTO, IcResiUserPageFormDTO.AddUserInternalGroup.class,ExportGroup.class);
pageFormDTO.setIsPage(false);
public void exportExcelCustom(@LoginUser TokenDto tokenDto, @RequestBody ExportResiUserFormDTO pageFormDTO, HttpServletResponse response) {
//获取导出配置
icResiUserExportService.exportIcResiUser(pageFormDTO,response);
icResiUserExportService.exportIcResiUser(tokenDto,pageFormDTO,response);
}
/**

9
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserExportService.java

@ -1,6 +1,7 @@
package com.epmet.service;
import com.epmet.dto.form.IcResiUserPageFormDTO;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.form.ExportResiUserFormDTO;
import javax.servlet.http.HttpServletResponse;
@ -14,11 +15,13 @@ public interface IcResiUserExportService {
/**
* desc: 根据条件查询居民信息并根据配置模板导出
*
* @param pageFormDTO
*
* @param tokenDto
* @param exportResiUserFormDTO
* @param response
* @return void
* @author LiuJanJun
* @date 2022/4/22 1:35 下午
*/
void exportIcResiUser(IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response);
void exportIcResiUser(TokenDto tokenDto, ExportResiUserFormDTO exportResiUserFormDTO, HttpServletResponse response);
}

47
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java

@ -10,17 +10,21 @@ import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.constant.Constant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.FormItemTypeEnum;
import com.epmet.commons.tools.enums.IcFormCodeEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.IcResiUserConstant;
import com.epmet.dto.form.ExportResiUserFormDTO;
import com.epmet.dto.form.IcExportTemplateQueryFormDTO;
import com.epmet.dto.form.IcResiUserPageFormDTO;
import com.epmet.dto.result.FormItemResult;
@ -69,14 +73,23 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
/**
* desc: 根据条件查询居民信息并根据配置模板导出
*
* @param pageFormDTO
*
* @param tokenDto
* @param exportResiUserFormDTO
* @param response
* @return void
* @author LiuJanJun
* @date 2022/4/22 1:35 下午
*/
@Override
public void exportIcResiUser(IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) {
public void exportIcResiUser(TokenDto tokenDto, ExportResiUserFormDTO exportResiUserFormDTO, HttpServletResponse response) {
//校验参数
validateSearchForm(tokenDto, exportResiUserFormDTO);
IcResiUserPageFormDTO searchForm = exportResiUserFormDTO.getSearchForm();
String templateId = exportResiUserFormDTO.getTemplateId();
// 头的策略
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
// 背景设置为红色
@ -88,9 +101,9 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
ExcelWriter excelWriter = null;
try {
//获取用户配置的导出条件
Result<IcCustomExportResultDTO> exportConfigResult = getIcCustomExportConfig(pageFormDTO);
Result<IcCustomExportResultDTO> exportConfigResult = getIcCustomExportConfig(searchForm.getCustomerId(),templateId,exportResiUserFormDTO.getExportConfig());
Map<String, ExportResiUserItemDTO> itemOriginMap = getItemMap(pageFormDTO.getCustomerId());
Map<String, ExportResiUserItemDTO> itemOriginMap = getItemMap(searchForm.getCustomerId());
IcCustomExportResultDTO exportConfigData = exportConfigResult.getData();
log.info("查询到的模板配置信息:{}", JSON.toJSONString(exportConfigData));
FreezeAndFilter writeHandler = new FreezeAndFilter();
@ -100,7 +113,7 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.head(exportConfigData.getHeaders()).build();
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(pageFormDTO.getCustomerId(), pageFormDTO.getStaffId());
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(searchForm.getCustomerId(), searchForm.getStaffId());
if (staffInfoCacheResult == null){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"获取工作人员信息失败");
}
@ -115,10 +128,10 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
allShowColumns.addAll(exportConfigData.getHiddenSqlColumns());
do {
String finalStaffOrgPath = staffOrgPath;
mapListPage = PageHelper.startPage(pageFormDTO.getPageNo(), pageFormDTO.getPageSize(), pageFormDTO.getIsPage()).doSelectPage(() -> {
icResiUserService.dynamicQuery(pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), IcResiUserConstant.IC_RESI_USER, allShowColumns, pageFormDTO.getConditions(), staffInfoCacheResult.getAgencyId(), finalStaffOrgPath);
mapListPage = PageHelper.startPage(searchForm.getPageNo(), searchForm.getPageSize(), searchForm.getIsPage()).doSelectPage(() -> {
icResiUserService.dynamicQuery(searchForm.getCustomerId(), searchForm.getFormCode(), IcResiUserConstant.IC_RESI_USER, allShowColumns, searchForm.getConditions(), staffInfoCacheResult.getAgencyId(), finalStaffOrgPath);
});
pageFormDTO.setPageNo(pageFormDTO.getPageNo() + NumConstant.ONE);
searchForm.setPageNo(searchForm.getPageNo() + NumConstant.ONE);
List<Map<String, Object>> result = mapListPage.getResult();
@ -163,7 +176,7 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
excelWriter.write(resultData, writeSheet);
//todo
break;
} while (mapListPage.getResult().size() == pageFormDTO.getPageSize());
} while (mapListPage.getResult().size() == searchForm.getPageSize());
} catch (IOException e) {
log.error("exportIcResiUser exception", e);
} finally {
@ -173,11 +186,21 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
}
}
public void validateSearchForm(TokenDto tokenDto, ExportResiUserFormDTO exportResiUserFormDTO) {
IcResiUserPageFormDTO searchForm = exportResiUserFormDTO.getSearchForm();
searchForm.setCustomerId(tokenDto.getCustomerId());
searchForm.setStaffId(tokenDto.getUserId());
ValidatorUtils.validateEntity(searchForm, IcResiUserPageFormDTO.AddUserInternalGroup.class);
searchForm.setIsPage(false);
}
@Nullable
public Result<IcCustomExportResultDTO> getIcCustomExportConfig(IcResiUserPageFormDTO pageFormDTO) {
public Result<IcCustomExportResultDTO> getIcCustomExportConfig(String customerId, String templateId, IcExportTemplateSaveFormDTO exportConfig) {
//通过配置导出
IcExportTemplateQueryFormDTO param = new IcExportTemplateQueryFormDTO();
param.setCustomerId(pageFormDTO.getCustomerId());
param.setTempId(pageFormDTO.getTemplateId());
param.setCustomerId(customerId);
param.setTempId(templateId);
param.setExportConfig(exportConfig);
Result<IcCustomExportResultDTO> exportConfigResult = operCustomizeOpenFeignClient.getExcelHeaderAndSqlColumnForExport(param);
if (!exportConfigResult.success() || exportConfigResult.getData() == null) {
log.error("获取模板失败");

Loading…
Cancel
Save